在看Learning OpenGL的教程,看到Basic Lighting一章,突然看到vertex shader这里这里中的aPos:

layout (location = 0) in vec3 aPos;

突然记不起在不是Uniform的情况下,如何给location变量传值。

于是往前翻了翻,到了你好,三角形一章,其中有一句“我们同样也通过layout (location = 0)设定了输入变量的位置值(Location)你后面会看到为什么我们会需要这个位置值。”。在后面“链接顶点属性”一节中,提到了glVertexAttribPointer的第一个参数使用到了顶点属性的位置值,因此这里传入了0。

再回到Basic Lighting一章中,看了下cpp,是先把vertices数据绑定到VBO(Vertex Buffer Object),然后使用glVertexAttribPointer指定顶点。由于两个对象都是cube,glBindBuffer只绑定一次,数据就都可以使用了。

看过,敲过,然后还是总忘。