【发布时间】:2015-02-05 07:23:57
【问题描述】:
我正在尝试逐像素创建图像并使用 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_RenderDrawPoints,它会快很多倍。