作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么在编译 GLSL 几何着色器时会出现此错误?
ERROR: 0:15: 'gl_VerticesIn' : undeclared identifier
这是着色器:
// makes wireframe triangles.
#version 330
#extension GL_ARB_geometry_shader4 : enable
layout(triangles) in;
layout(line_strip, max_vertices = 4) out;
void main(void)
{
for (int i = 0; i < gl_VerticesIn; i++)
{
gl_Position = gl_in[i].gl_Position;
EmitVertex();
}
gl_Position = gl_in[0].gl_Position;
EmitVertex();
EndPrimitive();
}
对我来说似乎很简单,但我找不到关于“gl_VerticesIn”的太多信息,我认为它应该是一个内置的。如果我只是将“gl_VerticesIn”替换为“3”,一切正常。
我使用的是 GeForce GTX 765M 和 OpenGL 3.3 核心配置文件。我使用任何其他 GPU 都没有出现此错误。我的驱动程序是最新的。
最佳答案
首先,gl_VerticesIn
仅在 GL_ARB_geometry_shader4
中声明,几何着色器是 GLSL 3.30 中的核心。鉴于您的着色器版本,甚至没有理由使用几何着色器的扩展形式,这样做只会让 GLSL 编译器和链接器的工作更加困惑。
不使用 gl_VerticesIn
,而是使用 gl_in.length ()
。真的就这么简单。
当然,删除冗余扩展指令也是一个好主意。
关于opengl - 'gl_VerticesIn' : undeclared identifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20725975/
为什么在编译 GLSL 几何着色器时会出现此错误? ERROR: 0:15: 'gl_VerticesIn' : undeclared identifier 这是着色器: // makes wiref
我是一名优秀的程序员,十分优秀!