【发布时间】:2017-02-21 17:35:01
【问题描述】:
我想做这个:
绘制对象1(因为我应该使用glDrawElement或glDrawArray,所以应该使用深度测试) 绘制对象 2
混合 1 和 2(obj 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);
听说那些混合和深度测试不能同时使用,那有什么替代方法吗? (实际上上面代码的结果看起来很奇怪)
【问题讨论】:
-
是的,你可以,但你需要知道你在做什么(以避免伪影)这可能会有所帮助:OpenGL - How to create Order Independent transparency?
标签: opengl