opengl - 具有透明度的模型

标签 opengl transparency

我有一个带有透明四边形 mustache 的模型。我无法判断哪些三角形属于 mustache ,因为它们的颜色来自传递给片段着色器的纹理。我尝试在导出模型期间将三角形从后向前预排序,但这没有帮助。所以我实现了 MSAA 和 Alpha to Coverage,但这也没有帮助。我的最后一次尝试是绘制模型,关闭深度蒙版并跳过任何透明数据,因此颜色缓冲区将具有要混合的不清晰的颜色值。然后我会第二次绘制模型,进行深度测试并绘制 alpha 片段。

到目前为止我所尝试的一切都不起作用。我还可以尝试哪些其他技术来正确绘制模型的 mustache ?我正在寻找一种不使用大量扩展的方法来处理这个问题。我更喜欢可以用普通旧式 OpenGL 4 处理的技术。

这是我正在处理的图像。 enter image description here

这是我应用所选答案后得到的结果。 enter image description here

最佳答案

您正在尝试做的事情仍然存在一个很大程度上尚未解决的问题:独立于订单的透明度。 MSAA 是完全不同的东西,Alpha 覆盖范围也是如此。

到目前为止,最好的解决方案是将模型分成不透明的部分和毛茸茸的部分。首先绘制场景的不透明部分,然后绘制所有(半)半透明的部分,在第二遍中按由远到近的顺序绘制。

您的图像看起来像是 mustache 被渲染为第一个事物,这与您实际想要的完全相反。

关于opengl - 具有透明度的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18706871/

相关文章:

c++ - 为什么 OpenGL 在创建/释放资源时采用指向资源 ID 的指针?

c++ - 另一个基本的 VBO 设置

java - 如何在Java中使透明图像变得不透明?

c# - 使用 C# 去除图像中的透明度

jquery - 不透明父项内部的透明子项

svg - 如何修剪 svg 中的透明像素?

c - opengl 的镜面光太多

c++ - 使球相互反弹(openGL)

java - 纹理化顶点缓冲区对象

ffmpeg - 将 MOV 转换为 WEBP