繁体   English   中英

如何使对象透明但仍显示纹理?

[英]How do I make my object transparent but still show the texture?

我正在尝试在OpenGL中渲染模型。 我正在使用C ++和OpenGL的第4天(是的,我很快就学到了这一点),并且我在纹理方面停了下来。

我在使纹理Alpha正常工作时遇到了一些麻烦。 在此图像中,我具有《螺旋骑士》中的这个角色。 如您所见,在他的头顶上,有那些白色的部分。 螺旋骑士角色,不透明

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

我在这里假设的原因是纹理透明度起作用,但纹理后面的三角形仍在显示,这就是我问这个问题的原因。

如何使这些三角形不可见,但仍显示我的纹理?

谢谢。

使用混合时,有两件事要做:

  1. 必须将原语排回到最前面并以该顺序进行渲染(基于深度缓冲区的渲染器中与顺序无关的透明性仍是一个持续的研究主题)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM