向我解释我做错了什么。我已将 3d 模型加载到自编码的 opengl 渲染(v 3.3)并尝试使用顶点着色器使其像 xray 效果一样透明:
#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 射线效果
如果我希望所有模型都透明,我应该实施深度排序吗?
我该如何实现: