请帮我解释一下我做错了什么。我已经将一个3D模型加载到自己编写的OpenGL渲染器(版本3.3)中,并尝试使用顶点着色器使其透明,就像X光效果一样:
#version 330
attribute vec3 coord3d;
attribute vec2 texcoord;
varying vec2 f_texcoord;
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;
layout (location = 0) in vec3 inPosition;
layout (location = 1) in vec4 inColor;
smooth out vec4 theColor;
void main()
{
gl_Position = projectionMatrix*modelViewMatrix*vec4(inPosition, 1.0);
theColor = vec4(0.0,0.2,0.4,0.4);
f_texcoord = texcoord;
}
该模型在编辑器中进行了三角剖分,并使用以下方法绘制:
glDrawArrays(GL_TRIANGLE_FAN, 0, (vertices.at(i)->size()/3));
如果我使用
glEnable(GL_ALPHA_TEST);
glEnable( GL_BLEND );
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
glEnable(GL_DEPTH_TEST);
glClearDepth(1.0);
我看到一些不必要的三角形或线条:
如果没有深度测试,我会看到脸部内部有多个三角形(我不想要):
如何去除不需要的效果并实现类似Google Sketchup的X光效果?
如果我想使整个模型透明,是否应该实现深度排序?
如何实现这个: