GLSL 1.2 vec4中不同的几何着色器是非法的?

时间:2012-01-04 18:33:19

标签: osx-lion glsl

我正在试图弄清楚我的显卡驱动程序或我的代码中是否有错误。以下是非法的吗?

#version 120 
#extension GL_EXT_gpu_shader4 : enable
#extension GL_EXT_geometry_shader4 : enable

varying in vec4 something; // <------- this

void main() 
{ 
    for(int i = 0; i < gl_VerticesIn; ++i) 
    { 

        gl_Position = gl_PositionIn[i]; 

        EmitVertex(); 
    }
    EndPrimitive();
}

它在我的OSX 10.7(NVIDIA 9400m / 9600m)笔记本电脑上崩溃,我很好奇A)这在GLSL 1.2中实际上是非法的还是仅仅是我的实现?是否有某种标志可以将vec4传递给GLSL 1.2中的几何着色器?

记录:是的,我知道这在1.3+中更容易,但我现在仍然坚持使用1.2。谢谢!

1 个答案:

答案 0 :(得分:4)

几何着色器的输入是数组,而不是单个值。这是因为GS接受一个原语,它可以由多个顶点组成。就像gl_PositionIn是一个数组一样,用户定义的输入也是如此。