【问题标题】:Bresenham Algorithm using opengl GL_POINTS is pretty slow使用 opengl GL_POINTS 的 Bresenham 算法非常慢
【发布时间】:2015-01-12 13:01:30
【问题描述】:

有没有办法加快速度? 我来学习了,访问 Frame Buffer 本身可以很快做到。但我不知道如何......有没有办法在opengl中做到这一点?

【问题讨论】:

  • 加快速度的方法当然是使用OpenGL自带的线图。

标签: opengl framebuffer bresenham


【解决方案1】:

如果您为了学习 Bresenham 而实现 Bresenham,那么我建议您将要绘制的“像素”放入一个数组中(C++ 中的std::vector)。然后,当您完成 Bresenham“光栅化”时,将该数组作为顶点数组传递给 OpenGL,并使用单个 glDrawArrays 调用来绘制它。

否则,如果您的目标是画一条线,只需使用 OpenGL 线即可。

【讨论】:

    【解决方案2】:

    为了补充@datenwolf 的回答,您可能发出了很多drawcall。这可以并且将会带来显着的性能缺陷。您甚至不必直接访问帧缓冲区,只需确保不要在每个点之间进行不必要的操作。有多种方法可以实现这一点,实际上映射缓冲区就是其中之一。您也可以坚持自己的记忆,简单地将结果“blit”到 OGL。

    同样,如果您只是想画一条线,GL_LINES 几乎总是会更快更方便。

    【讨论】:

      猜你喜欢
      • 2017-01-28
      • 1970-01-01
      • 2020-11-18
      • 2012-07-10
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多