gpt4 book ai didi

opengl - 'gl_VerticesIn' : undeclared identifier

转载 作者:行者123 更新时间:2023-12-04 19:51:48 28 4
gpt4 key购买 nike

为什么在编译 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com