прозрачность для начинающих / непрозрачность в openGL - PullRequest
1 голос
/ 09 января 2011

Я прохожу учебные пособия по NeHe для OpenGL ... Я на 8-м уроке (рисование куба со смешиванием). http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=08

Я хотел поэкспериментировать и изменить половину граней, чтобы они были непрозрачными, чтобы всегда была полупрозрачная грань, противоположная непрозрачной, и можно было вращать куб ...

Я немного изменил код, там есть весь источник: http://pastebin.com/uzfSk2wB Я изменил несколько вещей:

  • включить смешивание по умолчанию и установить для функции смешивания значение glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  • изменен порядок рисования граней и цветов для каждой грани.
    • Я установил тестирование глубины
    • Я рисую все непрозрачные грани
    • Я отключаю тест глубины
    • Я рисую все прозрачные грани

Сейчас трудно точно сказать, что происходит, но это определенно не выглядит правильно, я не могу распознать, какое лицо непрозрачно по сравнению с прозрачным, иногда некоторые лица, кажется, не прорисовываются, когда должны ... .etc ...

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

Поиск либо того, что не так в моем коде, либо неправильного способа сделать это в первую очередь.

1 Ответ

4 голосов
/ 09 января 2011

Если вы отключите проверку глубины перед рисованием прозрачных граней, то они будут нарисованы без учета их правильного z-порядка. Вероятно, похоже, что прозрачные грани нарисованы поверх всех остальных граней. Оставьте проверку глубины включенной.

...