Как видите: http://i.stack.imgur.com/ztM0v.png некоторые полигоны просто рендерятся поверх других. Есть ли у кого-нибудь какие-либо предложения или связанное чтение по их отображению в правильном порядке, чтобы они не перекрывались?
Порядок рендеринга полигонов OpenGL
Ответы (3)
Для непрозрачных граней порядок рендеринга не важен, если вы используете буфер глубины.
У NeHe есть учебник, охватывающий все основы. Начните здесь http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=02
См. также буфер глубины Opengl и отбраковка и Буфер глубины в OpenGL .
person
Jonas Bötel
schedule
30.04.2011
Вам нужно включить тестирование глубины. Убедись в том, что
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL); //Maybe not this line but try it anyway, GL_DEPTH_TEST is the important one
находится в вашем коде инициализации.
person
SuperMaximo93
schedule
30.04.2011
В OpenGL нет такой вещи, как инициализация, все дело в состоянии. Конечно, некоторые вещи, такие как текстуры, FBO, PBO и VBO, создаются, а затем используются повторно. Но в любом реальном приложении OpenGL это также происходит по требованию. Такие состояния, как включение/отключение тестирования глубины и функция глубины, должны быть установлены в функции рендеринга прямо перед частью, которая требует определенного состояния.
- person datenwolf; 30.04.2011
Вы должны убедиться, что вы установили матричный режим в виде проекции или 3D и всегда работаете с 3D.
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(p, (double) w / (double) h, arg1, arg2);
Затем убедитесь, что вы включили глубины следующим образом:
glEnable(GL_DEPTH_TEST);
Затем выполните рендеринг с помощью GL...3f или GL...3d для рендеринга через 3d, где ... — это любая функция, которая вам нужна.
person
Neigyl R. Noval
schedule
30.04.2011