小编Jer*_*emy的帖子

使用具有Alpha的纹理在OpenGL中渲染3D模型

因此,当我应用于其中的一些纹理具有alpha通道时,我试图找出在OpenGL中渲染3D模型的最佳方法.

当我启用了深度缓冲区并开始绘制3D模型中的所有三角形时,如果它绘制了一个位于模型中另一个三角形前面的三角形,那么当它到达它时它将不会渲染后三角形.问题是当前三角形具有alpha透明度时,应该能够看到它后面的三角形,但后面的三角形仍然没有渲染.

禁用深度缓冲区可以消除这个问题,但会产生一个明显的问题:如果三角形是不透明的,那么如果渲染后它仍然会在它后面渲染三角形.

例如,我正在尝试渲染一棵松树,它基本上是一些堆叠在一起的锥体,它们具有透明的底座.下图显示了启用深度缓冲区时出现的问题:

深度缓冲区已启用

您可以看到如何仍然可以看到透明三角形的轮廓.

下图显示了禁用深度缓冲区时的样子.

Depth Buffer已禁用

在这里,您可以看到树背面的一些三角形是如何在树的其余部分前呈现的.

任何想法如何解决这个问题,并正确渲染松树?

PS我正在使用着色器渲染所有内容.

c++ opengl shader alpha-transparency depth-buffer

2
推荐指数
1
解决办法
2424
查看次数

标签 统计

alpha-transparency ×1

c++ ×1

depth-buffer ×1

opengl ×1

shader ×1