c++ - 随机访问缓冲区优化

标签 c++ optimization buffer

我有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/

相关文章:

将多个 OpenCL 缓冲区组合成一个大缓冲区

python - GNU Radio 输入和输出缓冲区如何工作?

c - 未在服务器端客户端-服务器 TCP 上接收单独的值

optimization - 具有架构优化的 Docker 镜像?

jquery - Requirejs 输出到单个文件(不包括 jQuery)不保留依赖关系?

java - 逃逸分析是否有助于 JVM 在堆栈上分配数组?

c++ - float 和科学记数法

python - 通过引用传递的 SWIG Python 固定大小数组

c++ - 为什么变量初始化为0?

C++ 检测习语失败与继承