0
我有一個IBO的VBO,我想渲染例如第二個三角形,然後在下一個渲染步驟中,我想渲染第三個三角形。OpenGL渲染只是VBO的一部分
我想呈現第二個三角形IST正確的方法來調用
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的特殊三角形?