2

我有这个代码来绘制一个箭头:

  const GLfloat vertices[] = {
    -0.25f,  -0.25f,
      0.0f,    0.0f,
      0.25f, -0.25f,
      0.0f,    0.5f,
  };
  glVertexPointer(2, GL_FLOAT, 0, vertices);
  glEnableClientState(GL_VERTEX_ARRAY);
  glColor4f(0.0f, 0.5f, 0.0f, 1.0f);

  glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

应该像这样绘制:
好箭

这是实际结果(这是不希望的):
错误的箭头

我看不出我做错了什么,顶点对我来说似乎是正确的,但似乎 OpenGL 以与我指定的顺序不同的顺序绘制多边形。谁能帮我吗?提前致谢。:)

4

1 回答 1

3

您的三角形条带首先取较低的三个点(即绿色箭头的下部),然后取右边的三个点。只需更改定义中点的顺序:

const GLfloat vertices[] = {
  -0.25f,  -0.25f,
  0.0f,    0.0f,
  0.0f,    0.5f,
  0.25f, -0.25f,
};
于 2011-05-21T18:39:55.723 回答