我试图弄清楚我的显卡驱动程序或代码中是否有问题。以下行为是否违法?
#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。谢谢!
最佳答案
几何着色器的输入是数组,而不是单个值。这是因为 GS 接受一个图元,它可以由多个顶点组成。就像 gl_PositionIn
是一个数组一样,您的用户定义输入也应该是一个数组。
关于osx-lion - GLSL 1.2 几何着色器在 vec4 中变化是非法的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8732022/