Не отображаются текстуры простого куба

106
13 февраля 2022, 02:20

Я разрабатываю программу с использованием lvjgl и lvjgui. При попытке отобразить 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);
    }

Сам куб выглядит вот так:

Видео для наглядности видео

Как видно, синий цвет вообще не отображается, а некоторые текстура накладываются друг на друга. Если убрать одну из сторон синяя появляется. Как можно решить данную проблему? Что я делаю не так?

Answer 1

Мою проблему решили на англоязычном stackoverflow

Я добавил

glEnable(GL_DEPTH_TEST);

в render(Context context) вместо public RenderingCallback() и проблема решилась

READ ALSO
Чтените текста из word файла

Чтените текста из word файла

Возможно ли читать текстовый файл word, который содержится в ресурсах приложения ?

151
Найти общую длину отрезков

Найти общую длину отрезков

Помогите составить алгоритмЕсть ось координат

187
Как написать событие нажатия кнопки

Как написать событие нажатия кнопки

Осваиваю Android studio java - хочу написать андроид приложение

125
Пул соединений для Spring jdbcTemplate

Пул соединений для Spring jdbcTemplate

Нужно создать свой пул соединений для Spring jdbcTemplate, поддерживающий lazy concurrent loading, и который будет создаваться как Spring BeanЯ так понимаю, что это...

73