【问题标题】:GLSL 1.2 Geometry shader varying in vec4 is illegal?在 vec4 中变化的 GLSL 1.2 几何着色器是非法的吗?
【发布时间】:2012-01-05 02:46:34
【问题描述】:

我正在尝试找出我的显卡驱动程序或代码中是否有问题。以下是否违法?

#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 中实际上是非法的还是只是我的实现?在 GLSL 1.2 中是否有某种标志可以将 vec4 传递给几何着色器?

郑重声明:是的,我知道这在 1.3+ 中要容易得多,但我现在坚持使用 1.2。谢谢!

【问题讨论】:

  • 如果您发布错误消息会有所帮助。

标签: osx-lion glsl


【解决方案1】:

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

【讨论】:

  • 谢谢!从 1.5 升级到 1.2 太累了,被绊倒了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多