DDA线条绘制算法有错误

时间:2015-08-04 10:28:53

标签: c opengl opengl-3

为什么我在使用此代码时收到错误'setPixel not defined'?

{{1}}

2 个答案:

答案 0 :(得分:2)

因为在OpenGL或GLUT中没有setPixel方法,并且从我的代码中可以看出,你也没有定义。 OpenGL处理​​渲染基元,如点,线,三角形等,但不直接在屏幕上设置单个像素。由于目前还不清楚你想要达到什么建议:

  • 如果您想在OpenGL中绘制一条线,请使用glBegin(GL_LINES), etc.之类的相应方法(虽然它们已被弃用,不应再使用。)或glDrawArrays(GL_LINES, ...
  • 如果目标是实现dda软件光栅化器,那么您可能必须将像素写入纹理然后显示此纹理。

答案 1 :(得分:2)

因为您尚未在任何地方定义setPixel。这不是一个OpenGL调用。你需要自己编写它,它应该在缓冲区上设置像素(如果你正在使用双缓冲),然后将其用作glDrawPixels()的参数,或者使用{{1调用显示缓冲区}}。您可以看到两种方法herehere的示例。

此外,您的glVertex2i(x,y)功能已损坏。在OpenGL中,您可以调用LineSegment来指定一个尽可能快地称为的函数来呈现显示。但是,在此函数中,您调用glutDisplayFunc来提示用户输入数据 - 这已被破坏。您应该在开始时提示它们一次,然后将该数据传递给函数(一旦调用scanf(),它将尽可能频繁地运行)。