gpt4 book ai didi

c - 使用 SDL2 的纹理逐像素渲染缓慢

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:03 25 4
gpt4 key购买 nike

我正在尝试逐像素创建图像并使用 SDL 将其显示在屏幕上。图像必须刷新并再次显示每秒约 50 次(我正在寻找 50 FPS 的游戏)。我试图创建一个简单的程序来说明我想做什么:我创建一个 1280 * 720 的窗口和纹理,我交替填充绿色和红色。问题是代码运行速度非常慢(~8 FPS)。我哪里搞砸了?

这是我的代码

  SDL_Texture   *display;
SDL_Window *window;
SDL_Renderer *renderer;
int x;
int y;
int a = 255;
int b = 0;

window = SDL_CreateWindow(gl_title, SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, gl_width, gl_height, 0);
renderer = SDL_CreateRenderer(window, 0, SDL_RENDERER_ACCELERATED |
SDL_RENDERER_TARGETTEXTURE |
SDL_RENDERER_PRESENTVSYNC);
display = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888,
SDL_TEXTUREACCESS_TARGET, gl_width, gl_height);
while (true)
{
SDL_SetRenderTarget(renderer, display);
SDL_SetRenderDrawColor(renderer, a, b, 0, 255);
for (x = 0; x < gl_width; ++x)
{
for (y = 0; y < gl_height; ++y)
{
SDL_RenderDrawPoint(renderer, x, y);
}
}
a = a == 255 ? 0 : 255;
b = b == 255 ? 0 : 255;
SDL_SetRenderTarget(renderer, NULL);
SDL_RenderCopy(renderer, display, NULL, NULL);
SDL_RenderPresent(renderer);
}

最佳答案

为每个像素使用一个函数在屏幕上绘图会很慢。您可以在循环中手动编写像素并避免每次调用该函数的成本,或者使用 SDL 提供的函数之一为您执行此操作:

SDL_RenderFillRect

SDL_RenderDrawLines

SDL_RenderDrawPoints

SDL_RenderDrawRect

关于c - 使用 SDL2 的纹理逐像素渲染缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27344437/

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