glDrawElements 只绘制半个四边形

Posted

技术标签:

【中文标题】glDrawElements 只绘制半个四边形【英文标题】:glDrawElements only draws half a quad 【发布时间】:2012-11-08 21:29:44 【问题描述】:

这是我的功能:

void Object::draw2()


if(!mIsInitialised)  return; 

//Tell OpenGL about our vertex and normal data
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, &Vertices.front());

glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, &Temp2.front());

//draw the .txt-file
glDrawElements(GL_TRIANGLES, Indices.size(), GL_UNSIGNED_INT, &Indices.front());

//restore the state GL back
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);

我的索引向量包含:1 2 3 1 3 4

我的顶点向量包含:-1 -1 0 1 -1 0 1 1 0 -1 1 0

当我运行程序时,它只绘制了半个四边形——即一个三角形。

结果 -> http://i.stack.imgur.com/jZALG.png

【问题讨论】:

【参考方案1】:

您的索引向量应包含:

0 1 2 0 2 3

否则,您永远不会触及顶点编号 0 并最终得到四边形的一半。

【讨论】:

以上是关于glDrawElements 只绘制半个四边形的主要内容,如果未能解决你的问题,请参考以下文章

glDrawElements:绘制的源纹理和目标纹理相同

glfw glDrawElements 绘制奇怪的三角形

OpenGL:glDrawElements 不绘制

无法让 openGL 的 glDrawElements 与几何着色器一起使用

使用 glDrawElements 绘制 std::vector

在 OpenGL 中显示帧缓冲区