私が間違っていることを説明してください。3D モデルを自己コード化された opengl レンダー (v 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 線効果を実装するにはどうすればよいですか
すべてのモデルを透明にしたい場合、深度ソートを実装する必要がありますか?
どうすればこれを実装できますか: