-1

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

4

2 回答 2

3

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

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

于 2015-01-12T14:19:55.070 回答
0

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

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

于 2015-01-12T14:28:18.140 回答