我阅读了很多有关OpenGL 4与OpenGL 1相比的新概念。我的问题是,在旧版GLSL中,我可以直接使用预定义的gl_Vertex进行顶点着色器计算。但在当前版本4.1中,这已被删除。
有许多关于此的问题,但没有人给出实际上如何使旧的gl_Vertex在着色器中可用的示例。我找到了一些可能性,例如layout(location = 0) in vec3 vertexpos;
或glBindAttribLocation(shader, 0, "vertexpos");
。但是没有地方解释我从哪里获得知识以获取当前顶点位置存储的索引。实际上,我发现这个网站有索引,但它似乎不能与上述代码片段一起使用。
也许有人能够为我们提供一个非常简单的示例,带来一些启示。
layout (location = 0) in vec3 vertexpos;
。我没有找到一个名为glAttribPointer
的函数。我猜你是指glVertexAttribPointer
。所以我会用glVertexAttribPointer(0,3,GL_FLOAT,0,0)
来调用它。但是哪里有信息说明这个属性vertexpos
将存储哪些值?系统从哪里知道我想要在vertexpos
中使用gl_Vertex
而不是gl_FragColor
?也许我只是误解了这些属性背后的概念。 - Fluppgl_Vertex
的工作程序,则只需要用glVertexAttribPointer
替换glVertexPointer
(此函数在GL 4中已删除)(感谢更正,我的记忆使我困惑,我最初使用了错误的名称)。 - keltar