gpt4 book ai didi

c++ - 为什么我在所有像素的双 for 循环中使用 SDL2 和 SDL_RenderCopy 时性能不佳?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:37 27 4
gpt4 key购买 nike

我正在使用 SDL2 编写光线转换游戏。绘制地板时,我需要按像素调用 SDL_RenderCopy。这会导致帧率下降到 10 fps 以下的瓶颈。我正在寻找性能提升,但似乎找不到。

以下是性能下降的粗略概述:

int main() {
while(true) {
for(x=0; x<800; x++) {
for(y=0; y<600; y++) {
SDL_Rect src = { 0, 0, 1, 1 };
SDL_Rect dst = { x, y, 1, 1 };
SDL_RenderCopy(ren, tx, &src, &dst); // this drops the framerate below 10
}
}
SDL_RenderPresent(ren);
}
}

最佳答案

您可能应该为此使用纹理流。基本上,您将创建一个 SDL_TEXTUREACCESS_STREAMING 类型的 SDL_Texture,然后在每一帧“锁定”纹理,更新您需要的像素,然后再次“解锁”纹理。然后在单个 SDL_RenderCopy 调用中渲染纹理。

除此之外,每帧调用 SDL_RenderCopy 480,000 次总是会降低帧率。

关于c++ - 为什么我在所有像素的双 for 循环中使用 SDL2 和 SDL_RenderCopy 时性能不佳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27651163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com