如何让我的对象透明但仍然显示纹理?

时间:2017-02-12 19:06:31

标签: c++ opengl textures glu

我试图在OpenGL中渲染模型。我是在C ++和OpenGL的第4天(是的,我已经很快学会了这一点)而且我在纹理方面有点停止。

我在使用纹理alpha工作时遇到了一些麻烦。在这张图片中,我有来自螺旋骑士的这个角色。正如你可以在他的头顶看到的那样,那些白色部分。Spiral Knights character with no transparency

我启用了混合功能,并且我的混合功能设置为glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

我在这里假设,这就是为什么我问这个问题,是纹理透明度 正在工作,但纹理背后的三角形仍在显示。

如何让这些三角形看不见但仍显示我的纹理?

感谢。

1 个答案:

答案 0 :(得分:0)

使用混合时有两件重要的事情要做:

  1. 必须将基元排序并按顺序渲染(基于深度缓冲区的渲染器中的顺序独立透明度仍然是一个持续的研究课题。)

  2. 使用纹理控制Alpha通道时,您必须编写一个着色器,以某种方式将纹理的alpha值传递给生成的片段颜色,或者 - 如果您使用的是固定功能管道 - 则必须使用GL_MODULATE纹理环境模式或GL_DECAL,原始颜色alpha值设置为0,或使用GL_REPLACE。