Я занимаюсь разработкой программы с использованием lvjgl и lvj gui. При попытке отобразить 2D-текстуру проблем не возникает, но при попытке отобразить 3D-куб отображаются не все текстуры. Вот код рендеринга:
@Override
public void render(Context context) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
glBegin(GL_QUADS);
glColor3f(0f, 0f, 1f);
glVertex3f(0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, -0.5f, 0.5f);
glVertex3f(0.5f, -0.5f, 0.5f);
glColor3f(1, 0, 1);
glVertex3f(0.5f, -0.5f, 0.5f);
glVertex3f(-0.5f, -0.5f,0.5f);
glVertex3f(-0.5f, -0.5f, -0.5f);
glVertex3f(0.5f, -0.5f, -0.5f);
glColor3f(0, 1, 1);
glVertex3f(0.5f, -0.5f, -0.5f);
glVertex3f(0.5f, -0.5f, 0.5f);
glVertex3f(0.5f, 0.5f, 0.5f);
glVertex3f(0.5f, 0.5f, -0.5f);
glColor3f(1, 0, 0);
glVertex3f(0.5f, 0.5f, -0.5f);
glVertex3f(0.5f, -0.5f, -0.5f);
glVertex3f(-0.5f, -0.5f, -0.5f);
glVertex3f(-0.5f, 0.5f, -0.5f);
glColor3f(1, 1, 0);
glVertex3f(-0.5f, 0.5f, -0.5f);
glVertex3f(0.5f, 0.5f, -0.5f);
glVertex3f(0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, 0.5f, 0.5f);
glColor3f(0, 1, 0);
glVertex3f(-0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, -0.5f, 0.5f);
glVertex3f(-0.5f, -0.5f, -0.5f);
glVertex3f(-0.5f, 0.5f, -0.5f);
glEnd();
if(rotate)
glRotatef(0.01f,0.0f,0.5f,0.0f);
}
Перед рендерингом выполняется следующее:
public RenderingCallback() {
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
glClearDepth(0.5f);
glDepthFunc(GL_LEQUAL);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glRotatef(20f,0.5f,0.0f,0.0f);
}
Сам куб выглядит так: Cube
И видео
Как видите, синий цвет вообще не отображается, а некоторые текстуры перекрывают друг друга. Если вы удалите одну из сторон, появится синяя. Как я могу решить эту проблему? Что я делаю не так?