使用opengl GL_POINTS的Bresenham算法非常慢

时间:2015-01-12 13:01:30

标签: opengl framebuffer bresenham

无论如何要加快速度吗? 我开始学习,访问Frame Buffer本身可以快速完成。但我不知道怎么......在opengl中有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

如果您为了学习Bresenham而实施Bresenham,那么我建议您使用"像素"你即将绘制成一个数组(C ++中的std::vector)。然后,当您完成Bresenham" rasterization"时,将该数组作为顶点数组传递给OpenGL,并使用单个glDrawArrays调用绘制它。

否则,如果您的目标是绘制一条线,只需使用OpenGL线。

答案 1 :(得分:0)

为了补充@ datenwolf的答案,你可能发出了大量的呐喊。这可能并且将会产生重大的性能缺陷。您甚至不必直接访问帧缓冲区,只需确保不要在每个点之间进行不必要的操作。有多种方法可以实现这一点,实际上映射缓冲区就是其中之一。你也可以坚持自己的记忆,只需" blit"结果给了OGL。

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