【发布时间】:2014-09-06 00:03:25
【问题描述】:
我有一个带有 IBO 的 VBO,我想渲染第二个三角形,在下一个渲染步骤中我想渲染第三个三角形。
我认为渲染第二个三角形的正确方法是调用
glDrawArrays(GL_TRIANGLES,
3, // indexArray[3] is start
3); // take 3 indices (from index 3..5 --> second triangle)
它适用于第一个三角形。但是当我想渲染另一个三角形时,VBO 的参数将被错误地解释。
我的 VAO 的定义是这样的
glGenVertexArrays(1, out VAO);
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO.V_ID);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, VBO.E_ID);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, false, 12 * sizeof(float), 0);
glBindAttribLocation(shaderID, 0, "InUV");
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 4, GL_FLOAT, true, 12 * sizeof(float), 2 * sizeof(float));
glBindAttribLocation(shaderID, 1, "InColor");
glEnableVertexAttribArray(2);
glVertexAttribPointer(2, 3, GL_FLOAT, true, 12 * sizeof(float), 6 * sizeof(float));
glBindAttribLocation(shaderID, 2, "InNormal");
glEnableVertexAttribArray(3);
glVertexAttribPointer(3, 3, GL_FLOAT, false, 12 * sizeof(float), 9 * sizeof(float));
glBindAttribLocation(shaderID, 3, "InVertex");
glBindVertexArray(0);
当我打电话时
glDrawElements(GL_TRIANGLES, VBO.length, GL_UNSIGNED_INT, 0);
对象将正确渲染。
我是否以错误的方式使用 glDrawArrays 还是有另一种方式来渲染 VBO 的一个特殊三角形???
【问题讨论】: