我正在试图弄清楚我的显卡驱动程序或我的代码中是否有错误。以下是非法的吗?
#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。谢谢!
答案 0 :(得分:4)
几何着色器的输入是数组,而不是单个值。这是因为GS接受一个原语,它可以由多个顶点组成。就像gl_PositionIn
是一个数组一样,用户定义的输入也是如此。