C++ 带有alpha通道的纹理覆盖背景对象
在我的引擎中实现billboard对象时,我遇到了一个问题(下面的屏幕截图) 正如你们所见,billboard对象覆盖了背景中的所有内容(skybox似乎是个例外)。这并不是我想要的工作方式。我不知道问题出在哪里 我的片段着色器非常简单:C++ 带有alpha通道的纹理覆盖背景对象,c++,opengl,glsl,C++,Opengl,Glsl,在我的引擎中实现billboard对象时,我遇到了一个问题(下面的屏幕截图) 正如你们所见,billboard对象覆盖了背景中的所有内容(skybox似乎是个例外)。这并不是我想要的工作方式。我不知道问题出在哪里 我的片段着色器非常简单: #version 330 uniform sampler2D tex; in vec2 TexCoord; out vec4 FragColor; void main() { FragColor = texture2D(tex, TexCoor
#version 330
uniform sampler2D tex;
in vec2 TexCoord;
out vec4 FragColor;
void main()
{
FragColor = texture2D(tex, TexCoord);
}
广告牌只是用几何体着色器制作的三角形条
所有想法都很好。可能是绘制顺序问题,您需要先绘制不透明对象,然后将alpha混合对象向后绘制到前面。或者,您可以启用alpha测试,或者在着色器中丢弃alpha低于特定阈值的片段。尝试
如果(color.a==0.0)丢弃代码>参考更多信息我使用了一个阈值想法if(FragColor.a<0.9)丢弃代码>而且似乎有效。老实说,这看起来不是一个很好的解决方案,但现在它比以前的检查效果更好