我有colorBuffer Color[width*height]
(很可能是800*600)
在光栅化期间我调用:
void setPixel(int x, int y, Color & color)
{
colorBuffer[y * width + x] = color;
}
事实证明,这种对颜色缓冲区的随机访问确实无效,并且减慢了我的应用程序的速度。
我认为这是我使用方式造成的。我计算一些像素(使用光栅化算法)并调用 setPixel。
所以我认为我的缓冲区不在缓存中,这是主要问题。当尝试一次写入整个缓冲区时,速度要快得多。
有什么办法,如何优化这个吗?
编辑
我不使用它来用两个 for 循环填充缓冲区。
我用它来绘制“随机”像素。
例如,当光栅化线时,我使用它就像
setPixel(10,10);
calculate next point
setPixel(10,11);
calculate next point
setPixel(next point)
...
最佳答案
在我看来,缓冲区的访问模式取决于算法处理像素的顺序。您不能简单地更改该顺序,以便它为您的缓冲区创建一个顺序访问方案吗?
关于c++ - 随机访问缓冲区优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837515/