Рендеринг прозрачных объектов в OpenGL - PullRequest
3 голосов
/ 05 октября 2011

Я пытаюсь визуализировать некоторые 3d-объекты, используя opengl. Требование заключается в том, что мне нужно скрыть все прозрачные объекты, расположенные за другим прозрачным объектом. Все треугольники находятся в одном треугольном буфере и будут нарисованы одновременно. Пожалуйста, пролите немного света.

Ответы [ 2 ]

5 голосов
/ 09 октября 2011

Попробуйте использовать glDepthMask ():

    //Render all opaque objects
    glDepthMask(false); //disable z-testing
    //Render all transparent objects*
    glDepthMask(true); //enable z-testing (for the next frame)

* Технически, вы должны визуализировать прозрачные объекты сзади вперед, но это редко заметно, если вы этого не сделаете.

3 голосов
/ 05 октября 2011

Вы можете сделать это, отсортировав вашу сцену, что в любом случае вам нужно сделать, чтобы прозрачность работала правильно.

Вот что вам нужно сделать:

  1. Включить запись и тестирование в z-буфер
  2. Визуализация всех непрозрачных объектов
  3. Визуализация всех прозрачных объектов спереди назад. Z-буфер предотвратит отображение прозрачных объектов позади других прозрачных объектов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...