几何着色器根本不适用于AMD卡

时间:2014-02-07 08:54:48

标签: vb.net opengl shader opentk amd-processor

我的问题只是在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();
} 

0 个答案:

没有答案