为什么我的箭头绘制方向错误?

发布于 2024-11-08 13:06:24 字数 597 浏览 4 评论 0原文

我有这段代码来绘制箭头:

  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);

应该绘制类似于:
good arrow

这是实际结果(这是不需要的):
wrong arrow

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

I have this code to draw an arrow:

  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);

It should draw similar to this:
good arrow

This is the actual result (which is undesired):
wrong arrow

I don't see what I have done wrong, the vertices seem correct to me, but it seems like OpenGL draws the polygon in a different order than I specified. Can anyone help me out? Thanks in advance. :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感性 2024-11-15 13:06:24

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

const GLfloat vertices[] = {
  -0.25f,  -0.25f,
  0.0f,    0.0f,
  0.0f,    0.5f,
  0.25f, -0.25f,
};

Your triangle strip takes the lower three points first (i.e. the lower part of your green arrow) and then the right three points. Just change the order of points in your definition:

const GLfloat vertices[] = {
  -0.25f,  -0.25f,
  0.0f,    0.0f,
  0.0f,    0.5f,
  0.25f, -0.25f,
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文