我的问题只是在NVIDIA显卡上,我的openGL内容非常完美,在AMD显卡上它似乎完全跳过了几何着色器。在我的地理着色器中,我有它,所以它为三角形添加了一个额外的点,形成一个四边形,输出为三角形。在AMD卡上,额外的点永远不会发生,但片段着色器仍然可以正常工作,因为所有纹理仍然是三角形的正确颜色。
我已经检查过着色器完全没有错误编译。
我的着色器版本是:
#version 330 core
我希望这是一个常见问题,因为我无法在Google上找到任何关于它的信息。
#version 330 core
layout(triangles) in;
layout(triangle_strip, max_vertices=4) out;
in vec3 texCoord[];
out vec3 texCord;
uniform mat4 MVP;
void main()
{
texCord = vec3(0,0,0);
for(int i=0; i<3; i++)
{
gl_Position =MVP * gl_in[i].gl_Position;
switch(i)
{
case 0: texCord = vec3(0,1,0);
break;
case 1: texCord = vec3(0,0,0);
break;
case 2: texCord = vec3(1,1,0);
break;
}
EmitVertex();
}
gl_Position =MVP * vec4(gl_in[0].gl_Position.x += 0.5, gl_in[0].gl_Position.y -= 0.5, gl_in[0].gl_Position.z, gl_in[0].gl_Position.w);
texCord = vec3(1,0,0);
EmitVertex();
EndPrimitive();
}