Hallo,
ich programmiere derzeit mein erstes 3D-Spiel und nutze dabei LWJGL 2.8.3. Allerdings werden seit kurzer Zeit manche Objekte nicht mehr gerendert
. Ich bin mir zu 99,9% sicher, dass die Methode zum rendern des Objekts ausgeführt wird (Bei jedem Frame neu). Sie sieht beispielsweise so aus:
Das merkwürdige ist, dass beim Start des Spiels alle Objekte korrekt gerendert werden, nach einiger Zeit aber verschwinden manche oder alle Objekte und kommen später wieder, sie werden aber auf jeden Fall beim rendern an OpenGL übergeben.
Hier noch der Code der beim Start des Spiels ausgeführt wird:
Und der Code, der bei jedem Frame ausgeführt wird:
Gibt es irgendein Limit an Quads? Habe ich OpenGL falsch eingerichtet?
Da ich nicht viel Ahnung von OpenGL habe und diesen Code mehr oder weniger durch probieren herausgefunden habe, ist letzteres sehr wahrscheinlich.
Auch glGetError() gibt mir keinen Fehler aus. Das Problem habe ich an mehreren PCs (bei mir und in der Schule).
Über eine Antwort würde ich mich sehr freuen, ich verzweifle schon seit einer Woche an dem Problem, und bei Google finde ich auch nichts passendes.
Jasper
ich programmiere derzeit mein erstes 3D-Spiel und nutze dabei LWJGL 2.8.3. Allerdings werden seit kurzer Zeit manche Objekte nicht mehr gerendert
Java:
GL11.glTranslatef(position.getX(),position.getY(),position.getZ());
GL11.glColor3f(1.0f,0.0f,0.0f);
Sphere s = new Sphere();
s.draw(0.5f, 20, 16);
GL11.glTranslatef(-position.getX(),-position.getY(),-position.getZ());
Das merkwürdige ist, dass beim Start des Spiels alle Objekte korrekt gerendert werden, nach einiger Zeit aber verschwinden manche oder alle Objekte und kommen später wieder, sie werden aber auf jeden Fall beim rendern an OpenGL übergeben.
Hier noch der Code der beim Start des Spiels ausgeführt wird:
Java:
GL11.glClearColor(0.0f,0.0f,0.0f,0.0f);
GL11.glClearDepth(1.0f);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glViewport(0,0,(int)DISPLAY_WIDTH,(int)DISPLAY_HEIGHT);
Und der Code, der bei jedem Frame ausgeführt wird:
Java:
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
GL11.glLoadIdentity();
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GLU.gluPerspective(45.0f, (float) DISPLAY_WIDTH / (float) DISPLAY_HEIGHT, 0.1f, 100.0f);
GL11.glPushMatrix();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
GL11.glPushMatrix();
// 3D-Objekte werden hier gerendert
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPopMatrix();
GL11.glLoadIdentity();
GL11.glOrtho(0, DISPLAY_WIDTH, DISPLAY_HEIGHT, 0, -1, 1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPopMatrix();
GL11.glLoadIdentity();
// 2D-GUI wird hier gerendert
Gibt es irgendein Limit an Quads? Habe ich OpenGL falsch eingerichtet?
Da ich nicht viel Ahnung von OpenGL habe und diesen Code mehr oder weniger durch probieren herausgefunden habe, ist letzteres sehr wahrscheinlich.
Auch glGetError() gibt mir keinen Fehler aus. Das Problem habe ich an mehreren PCs (bei mir und in der Schule).
Über eine Antwort würde ich mich sehr freuen, ich verzweifle schon seit einer Woche an dem Problem, und bei Google finde ich auch nichts passendes.
Jasper
Zuletzt bearbeitet von einem Moderator: