【问题标题】:Is it possible to use blending and depth test simultaneously?是否可以同时使用混合和深度测试?
【发布时间】: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


【解决方案1】:

是的,可以同时使用混合和深度测试。如果您想绘制被前景中不透明的东西部分遮挡的半透明的东西,您将需要它。

目前最先进的简单深度缓冲渲染不可能实现的是顺序无关的透明度,即以任意顺序混合对象,结果相当于将它们从远到近绘制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2012-05-15
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多