2017-02-21 18 views
0

я хотел бы сделать это:Можно ли одновременно использовать измерение смешивания и глубины?

дро объекта 1 (потому что должен использовать glDrawElement или glDrawArray, тест глубины должны быть использованы) объекта дро 2

смесь 1 и 2 (объект 1 + прозрачный obj2)

Объясняя простым псевдокода,

glEnable(GL_BNELD); 

/// draw obj1 /// 
glEnable(GL_DEPTH_TEST); 
glUniform4f(color1,1.0f); 
glDrawElements(...) // draw obj1 
glDisable(GL_DEPTH_TEST); 

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

/// draw obj2 /// 
glEnable(GL_DEPTH_TEST); 
glUniform4f(color2,0.5f); 
glDrawElements(...) // draw obj2 
glDisable(GL_DEPTH_TEST); 

glDisable(GL_BLEND); 

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

+0

Да, но вы можете знать, что вы делаете (чтобы избежать артефактов) это могло бы помочь: [OpenGL - Как создать независимую прозрачность заказа?] (Http://stackoverflow.com/a/37783085/2521214) – Spektre

ответ

2

Да, одновременно можно использовать тестирование смешивания и глубины. И вам понадобится, если вы хотите нарисовать что-то полупрозрачное, которое частично закрыто чем-то непрозрачным на переднем плане.

Что нельзя с учетом современного состояния простой буферизации с глубинной буферизацией, составляет порядок независимой прозрачности, т. Е. Смешивание объектов в произвольном порядке, при этом результат эквивалентен их приближению.

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

  • Нет связанных вопросов^_^