Opengl 奇怪的几何体着色器程序行为…GLSL

Opengl 奇怪的几何体着色器程序行为…GLSL,opengl,glsl,Opengl,Glsl,此几何体程序是我的B T N visualizer着色器的一部分。 它在模式1下工作正常。。但似乎总有一个。。。 如果模式1,切线和双切线部分永远不会被击中 #版本120 #扩展GL\U EXT\U几何图形\U着色器4:启用 统一整数模式; 均匀浮动l_长度; 在vec3n[]中变化; 在vec3t[]中变化; 在vec3b[]中变化; 可变的vec4颜色; void main() { vec4-sumV; vec4-sumN; //正常的 颜色=vec4(1.0,0.0,0.0,1.0); 如

此几何体程序是我的B T N visualizer着色器的一部分。 它在模式1下工作正常。。但似乎总有一个。。。 如果模式1,切线和双切线部分永远不会被击中

#版本120
#扩展GL\U EXT\U几何图形\U着色器4:启用
统一整数模式;
均匀浮动l_长度;
在vec3n[]中变化;
在vec3t[]中变化;
在vec3b[]中变化;
可变的vec4颜色;
void main()
{
vec4-sumV;
vec4-sumN;
//正常的
颜色=vec4(1.0,0.0,0.0,1.0);
如果(模式==1)
{
sumV=(gl_PositionIn[0]+gl_PositionIn[1]+gl_PositionIn[2])/3.0;
sumN.xyz=(n[0].xyz+n[1].xyz+n[2].xyz)/3.0;
sumN.w=0.0;
gl_位置=gl_模型视图投影矩阵*sumV;
发射顶点();
gl_位置=gl_模型视图投影矩阵*(sumV+(sumN*l_长度));
发射顶点();
EndPrimitive();
}
其他的
{
对于(int i=0;i
我终于明白了。。 我把参数设置错了。。当时是6岁,但需要18岁才能工作: 这是一句话:

Gl.glProgramParameteriEXT(shader, Gl.GL_GEOMETRY_VERTICES_OUT_EXT, 18)
最终结果


那么,哪一部分以及如何工作不正常?预期输出是什么?在模式1中,它以红色绘制法线,以绿色绘制切线,以紫色绘制双切线。。如果不是在模式1中,它只绘制红色法线。。。我很困惑为什么会这样。如果你要投票否决我的问题,至少要说为什么!不是我。不过我想这是因为问题的模糊性。哦。。我不认为是你。。我想我确实需要更清楚一点。我还没把这个做好。我甚至输入for/next,并根据for/next循环的索引调用每个项。我想这只是让你走的原因之一。。嗯。
Gl.glProgramParameteriEXT(shader, Gl.GL_GEOMETRY_VERTICES_OUT_EXT, 18)