【发布时间】:2015-03-11 13:35:26
【问题描述】:
我用我所有的顶点数据(位置、纹理坐标、法线)创建了 1 个浮点缓冲区和 1 个 vbo,它们的存储方式如下:
bf.put(vertices[i].position.x);
bf.put(vertices[i].position.y);
bf.put(vertices[i].position.z);
bf.put(vertices[i].texCoords.x);
bf.put(vertices[i].texCoords.y);
bf.put(vertices[i].normals.x);
bf.put(vertices[i].normals.y);
bf.put(vertices[i].normals.z);
如何使用 glVertexAttribPointer 将它们传递给着色器?
是否可以这样做:
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(/*arguments for sending position*/);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(/*arguments for sending texture coordinates*/);
glEnableVertexAttribArray(2);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(/*arguments for sending normals*/);
?
如果是,那么请帮助我理解 glVertexAttribPointer 以及我应该输入哪些参数。
【问题讨论】:
-
我已阅读文档,但无法使用 vbo 使其工作,我需要一个示例。