mam dziwny problem, otóż sytuacja ma się tak ja na obrazku:
Czyli niezbyt dobrze…
Ktoś może mi wyjaśnić dlaczego obiekt który jest dalej wyświetla się przed tym co jest bliżej?
Z góry dzięki!
PS:
Być może błąd jest w ustawieniach wyświetlania:
public static boolean startOpenGL(){
GL11.glMatrixMode(GL11.GL_PROJECTION); //Określam który ze stosów macierzy ma być modyfikowany
GL11.glLoadIdentity(); //wyzerowanie danych
GLU.gluPerspective(45.0f,((float)DISPLAY_WIDTH)/((float)DISPLAY_HEIGHT),0.1f,100.0f); // ustawienia perspektywy
GL11.glMatrixMode(GL11.GL_MODELVIEW); //Określam który ze stosów macierzy ma być modyfikowany
GL11.glLoadIdentity(); //wyzerowanie danych
GL11.glEnable(GL11.GL_TEXTURE_2D); //włączam tekstury
GL11.glShadeModel(GL11.GL_SMOOTH); //możliwe cieniowanie
GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //ustawienie koloru na czarny
GL11.glClearDepth(1.0f); //odległość po której obiekty są niszczone
GL11.glDepthFunc(GL11.GL_LEQUAL); //wyświetla tylko obiekty których oddalenie jest mniejsze lub równe wyznaczonemu
GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST); //tryb wyświetlania. 1 wskazuje jakość kolorów, współrzędne tekstury itp. 2 ustawia tryb na najbardziej wydajny
return true;
}
Nie jest '^^ Musisz włączyć przez glEnable coś co nazywa się GL_DEPTH_TEST:
public static boolean startOpenGL(){
GL11.glMatrixMode(GL11.GL_PROJECTION); //Określam który ze stosów macierzy ma być modyfikowany
GL11.glLoadIdentity(); //wyzerowanie danych
GLU.gluPerspective(45.0f,((float)DISPLAY_WIDTH)/((float)DISPLAY_HEIGHT),0.1f,100.0f); // ustawienia perspektywy
GL11.glMatrixMode(GL11.GL_MODELVIEW); //Określam który ze stosów macierzy ma być modyfikowany
GL11.glLoadIdentity(); //wyzerowanie danych
GL11.glEnable(GL11.GL_TEXTURE_2D); //włączam tekstury
GL11.glShadeModel(GL11.GL_SMOOTH); //możliwe cieniowanie // yyy że jak?
GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //ustawienie koloru na czarny // kolor czego? -> koloru czyszczenia ekranu ;)
GL11.glEnable(G11.GL_DEPTH_TEST); // <- tego brakło
GL11.glClearDepth(1.0f); //odległość po której obiekty są niszczone // totalna bzdura
GL11.glDepthFunc(GL11.GL_LEQUAL); //wyświetla tylko obiekty których oddalenie jest mniejsze lub równe wyznaczonemu // bzdura choć nie całkiem
GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST); //tryb wyświetlania. 1 wskazuje jakość kolorów, współrzędne tekstury itp. 2 ustawia tryb na najbardziej wydajny // nie najbardziej wydajny tylko naładniejszy -.-
return true;
}
Dopisałem ci trochę do komentarzy - na przyszłość czytaj tutoriale ze zrozumieniem, albo w ogóle zabierz się do OpenGL od strony C/C++ (do tego będzie więcej tutków) a potem ogarniaj JOGL-a.