在有关 OpenGL 3.0+ 的教程中,我们以这种方式创建顶点数组对象和顶点缓冲区对象:
GLuint VAO, VBO;
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &VBO);
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
在这里,VAO 是一个unsigned int
( GLuint
),我们将 a̶ ̶r̶e̶f̶e̶r̶e̶n̶c̶e̶ 它的地址传递给函数glGenVertexArray
。但是,根据文档,函数的第二个参数应该是( )的数组。 VBO 和. 我不明白为什么上面的代码适用于这样的论点。unsigned int
GLuint*
glGenBuffers
我试图用这个替换上面的代码(并在我的代码的其他地方进行必要的修改):
GLuint VAO[1];
GLuint VBO[1];
glGenVertexArrays(1, VAO);
glGenBuffers(1, VBO);
glBindVertexArray(VAO[1]);
glBindBuffer(GL_ARRAY_BUFFER, VBO[1]);
它编译并执行,但我得到了一个意想不到的行为:我的纹理矩形使用第一种语法呈现,而不是第二种语法。我不明白为什么会发生这种情况。
编辑:谢谢。如前所述,第二个代码中存在索引错误。