1
我在OpenGL纹理透明度方面遇到麻烦。正如你在下面的图片中看到的那样,它并不完美。值得注意的是,黑色实际上是ClearColor,我用它来清除屏幕。OpenGL:透明纹理问题
我用下面的代码来实现混合:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
这里是我的片段着色器:
#version 330 core
in vec2 tex_coords;
out vec4 color;
uniform vec4 spritecolor;
uniform sampler2D image;
void main(void)
{
color = spritecolor * texture(image, tex_coords);
}
这里是线框模式场景的截图,万一它有助于绘制顶点:
如果需要其他东西,随时问,我会添加它。
你必须先绘制不透明的物体。透明对象必须在后面绘制,按相机位置的相反距离排序。 (考虑深度测试) – Rabbid76
是的,它做到了!您能否将您的评论添加为答案,以便我可以接受它? – AProgrammer