0

几个月前,我用 C++ 编写了一个(高质量)zen photon ripoff,我想从头开始。很有趣,我设法得到了一些不错的结果。最大的性能瓶颈是线条绘制部分,因为我需要绘制数百万条线来“追踪光线”。

我最终将Micah Elizabeth Scott 的代码直接用于她的 github,这比我尝试过的所有方法都快。但我想知道如何才能更快地画线。问题是,我不仅需要画出数百万条线,而且还需要“将它们加起来”。

我的程序分为两个主要任务。第一个包括从光源随机投射光线,计算与物体的交点,反弹它们等。

第二部分是画线。最终图像被表示为一个简单的双向量(每个像素 3x64 位),绘制一条线包括向该向量添加值。具体来说,当我使用 Bresenham 算法时,我对与线通过的像素相对应的向量的单元格设置了 +=1。

通过将此数组的值映射到 [0,255] 来渲染图像。然后我可以调整亮度,进行伽马校正等。

我尝试使用 OpenGL 和 Cairo 演示代码来绘制线条。但我无法获得我想要的行为:在像素数组(或表面或缓冲区或其他任何东西)中以高精度添加线条,然后从该数组渲染图像。

您对我如何快速在彼此之间画线以便我可以像我刚才描述的那样操纵它们有什么想法吗?

4

0 回答 0