我有以下代碼:OpengGL glDrawElements繪製線條,但不是三角形
for(auto m:shapes) {
glVertexPointer(3, GL_DOUBLE, 0, m->verts);
glNormalPointer(GL_DOUBLE, 0, m->normals);
glDrawElements(GL_TRIANGLES, m->num_triangles*3, GL_UNSIGNED_INT, m->indices);
}
(在圖片圓與點沒關係,它們是由一些其他的代碼繪製對不起,我不能文章中的圖片,我是一個新的用戶...)
http://dl.dropbox.com/u/5269/Screen%20shot%202011-12-10%20at%2012.38.28%20PM.png
這似乎不畫任何東西。
如果我改變GL_TRIANGLES到GL_LINES:
for(auto m:shapes) {
glVertexPointer(3, GL_DOUBLE, 0, m->verts);
glNormalPointer(GL_DOUBLE, 0, m->normals);
glDrawElements(GL_TRIANGLES, m->num_triangles*3, GL_UNSIGNED_INT, m->indices);
}
http://dl.dropbox.com/u/5269/Screen%20shot%202011-12-10%20at%2012.44.56%20PM.png
如此看來,座標是在vertext緩衝有效,並且索引緩存也沒關係。 glGetError返回0.最奇怪的是相同的代碼適用於由同一個源生成的其他頂點緩衝區。
任何想法?
也許你是以相反的順序繪製你的Verticle?嘗試'glDisable(GL_CULL_FACE)' –
嗨Banthar!它已被禁用。 –
我不能沒有更多的上下文,但如果你正在使用GL_TRIANGLE基元,爲什麼要乘以'm-> num_triangles * 3'?另外,第二個代碼示例與第一個代碼示例相同。 –