我正在使用深度排序进行基本对象透明度.作为深度,我使用从相机到模型三角形的每个中心的距离(平方),我计算为{(x1 + x2 + x3)/ 3,(y1 + y2 + y3)/ 3,(z1 + z2 + z3)/ 3}.虽然结果差不多好,但也有一些错误.
猴子头没有排序

与排序

我能对这些错误做些什么吗?
我在 OpenGL 中遇到纹理透明度问题。正如您在下图中看到的,它不太有效。值得注意的是,黑色实际上是 ClearColor,我用来清除屏幕。
我使用以下代码来实现混合:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Run Code Online (Sandbox Code Playgroud)
这是我的片段着色器:
#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);
}
Run Code Online (Sandbox Code Playgroud)
这是线框模式下场景的屏幕截图,以防它有助于绘制顶点:
如果还有什么需要的,可以问我,我会补充的。