2015-01-08 4 views
-2

Моя проблема в том, что, по-видимому, нормальные объекты в моей сцене OpenGL, необъяснимо перевернуты. Вот несколько фотографий, которые помогут мне в объяснении.OpenGL shading glitch glsl

Первый скриншот:
enter image description here

Второй скриншот:
enter image description here

ли проблема с моим кодом (что это не должно быть, потому что я ничего не изменилось там), или это просто что-то как глюк видеокарты? И если это моя видеокарта, это проблема, что можно сделать, чтобы исправить ее?

Примечание стороны, она работает нормально, прежде чем я модернизировал свои графические драйвера карты

+0

Возможно, это не драйвер видеокарты. Обратите внимание, что ваш z-буфер с тестом глубины также не работает. Это должно быть в вашем коде. Или вы забыли указать обмотку. –

+0

Вопрос: Являются ли эти два скриншота, которые должны быть сломаны, или это первый желаемый результат? – BWG

ответ

0

Ваша проблема заключается в том, что вы рисуете с обеих сторон (внутри и снаружи) куба без использования тест глубины. Есть два способа исправить это. Как правило, вы включаете как, потому что они решают разные проблемы, но любая техника решит вашу проблему в этом конкретном случае.

  1. Включить проверку глубины: glEnable(GL_DEPTH_TEST). Это сделает так, что части куба, которые впереди, будут нарисованы поверх частей сзади, но не наоборот.

  2. Включить отбрасывание задней поверхности: glEnable(GL_CULL_FACE). Это сделает так, чтобы внешняя сторона куба была нарисована, но не внутри. Обратите внимание, что вам нужно будет убедиться, что все ваши треугольники направлены в правильном направлении, чтобы это работало правильно. Также обратите внимание, что это только полное решение, потому что ваша модель выпукла.

+0

Ну, включение 'GL_CULL_FACE' в значительной степени используется исключительно как оптимизация. Если ваша сетка настроена правильно (какие OP не отображаются), тогда вы обычно не увидите никаких различий в том, что она включена или отключена. – BWG

+0

@BWG: Как бы настроить сетку по-разному изменить что-либо, предполагая, что отбраковка лица отключена? (Да, удаление лица обычно является оптимизацией. Однако для выпуклых моделей его можно использовать вместо теста глубины.) –

+0

Освещение из-за нормалей. Я думаю, что ваш ответ немного вводит в заблуждение, так как вырезать лицо не решает проблему окклюзии, если геометрия просто супер. – BWG

Смежные вопросы