/ / Mais lutas com gráficos 3D usando a biblioteca de jogos java leve - java, 3d, window, lwjgl

Mais lutas com gráficos 3D usando a biblioteca de jogos java leve - java, 3d, janela, lwjgl

Estou tendo mais problemas com renderização em 3dobjetos em java, heres meu novo problema Eu consegui importar as bibliotecas necessárias (gluPerspective, etc) no entanto, quando eu executar meu aplicativo java no ambiente eclipse, ele abre uma janela e, em seguida, a janela fica preta. Aqui está o meu código:

    package test;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.glu.GLU;

public class Obj3d {
public static void main(String[] args) {
Obj3d obj = new Obj3d();
obj.start();
}

public void start() {
try {
Display.setDisplayMode(new DisplayMode(800, 600));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}

init3dGL();

while(!Display.isCloseRequested()) {
clear();
renderCube();
Display.update();
}

Display.destroy();
System.exit(0);
}

public void init3dGL() {
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GLU.gluPerspective(45, 2, -1, 100);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthFunc(GL11.GL_LEQUAL);
return;
}

public void renderCube() {
GL11.glBegin(GL11.GL_QUADS);
//front faces
GL11.glNormal3d(0, 0, 1);
GL11.glColor3d(0.0, 1.0, 1.0);
GL11.glVertex3d(5, 5, -5);
GL11.glVertex3d(-5, 5, -5);
GL11.glVertex3d(-5, -5, -5);
GL11.glVertex3d(5, -5, -5);
GL11.glEnd();
return;
}

public void clear() {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
}

}

Eu não consigo ver o meu erro na codificação acima, no entanto eu sou novo em programação 3D, por isso pode ser devido à minha falta de experiência. Por favor, seja paciente, embora eu seja um aprendiz rápido. Agradecemos antecipadamente.

Respostas:

2 para resposta № 1

Usar uma distância negativa próxima não é uma boa ideia, eu acho. Experimentar

GLU.gluPerpective(45, 2, 0.1, 100);

E isto 2 na verdade, deve haver a proporção da sua janela (largura / altura), no seu caso 1.333 = 800 / 600.


0 para resposta № 2

Eu respondi minha própria pergunta. Além das respostas acima, eu também não limpei a tela corretamente, e não devolvi o método. Erros por descuido.