我试图找出 C++ 中的 SDL2 库,但似乎无法正确配置代码以简单地在屏幕上绘制一个矩形。我应该怎么做?
#include <SDL.h>
bool success = true; //success flag for functions, etc
int ScreenWidth = 640; //screen width and height for SDL window
int ScreenHeight = 480; //
int main(int argc, char* argv[])
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "1");
SDL_Window* window = SDL_CreateWindow( "Game", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, ScreenWidth, ScreenHeight, SDL_WINDOW_SHOWN);
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
SDL_SetRenderDrawColor( renderer, 0xFF, 0xFF, 0xFF, 0xFF);
bool quit = false;
SDL_Event event;
while (!quit)
{
SDL_RenderClear(renderer);
while (SDL_PollEvent(&event))
{
if (event.type == SDL_QUIT)
quit = true;
}
SDL_Rect box;
box.w = 30;
box.h = 30;
box.x = 50;
box.y = 50;
SDL_SetRenderDrawColor(renderer, 0xFF,0x00,0x00,0xFF);
SDL_RenderFillRect(renderer, &box);
SDL_RenderPresent(renderer);
}
return 0; //because main is an int task
}
编辑:这是完整的文件。
我希望它在屏幕上绘制一个红色矩形,但窗口完全是红色的(具有正确的大小、名称等,正确退出)。
最佳答案
您必须在所有渲染调用之后调用 SDL_RenderPresent
。在这种情况下,在 SDL_RenderFillRect(...)
SDL_RenderClear
在渲染循环开始时用于清除缓冲区。
关于c++ - 如何使用 SDL2 在 C++ 中将框渲染到屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54031715/