0

我需要一些 c++/OpenGL 编码方面的帮助。我正在做的是一个多边形逼近算法。

我的代码首先从 .txt 文件中提取一组点,将它们全部存储在一个数组中,然后显示该数组。然后它获取这些点并对它们执行算法,并创建一个新的点数组。我不知道该怎么做,是如何让第二组点显示在与第一组相同的窗口上。我必须创建一个新的显示函数并调用它吗?或者也许修改我现在必须接受数组的基本显示功能?这是我的显示功能的代码:

void display(void){
    glClearColor(0,0,0,0);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1,1,1);

    glBegin(GL_POINTS);
    for(int i=0; i<2000; i++)
        glVertex2i(pixel[i].x,pixel[i].y);
    glEnd();

    glFlush();
}
4

1 回答 1

1

您只需要绘制处理后的数组。考虑到您只想渲染结果点,就像在您的代码示例中一样,您可以使用:

void display(void){
  glClearColor(0,0,0,0);
  glClear(GL_COLOR_BUFFER_BIT);
  glColor3f(1,1,1);

  glBegin(GL_POINTS);
  for(int i=0; i<2000; i++)
    glVertex2i(pixel[i].x,pixel[i].y);
  // here goes the rendering of the new set of points.
  glColor3f(1,0,0); // change the color so we can see better the new points.
  for(int i=0; i<2000; i++)
    glVertex2i(result[i].x,result[i].y);
  glEnd();

  glFlush();
}

变量result是带有处理结果的数组。

您不能修改该display函数,因为它由 OpenGL 调用并且它不知道您的数组。但是没有什么不利于您将代码拆分为您的函数调用的许多display函数。

希望能帮助到你。

于 2012-11-23T20:36:16.667 回答