c++ - 如何使用 SDL2 在 C++ 中将框渲染到屏幕?

标签 c++ sdl-2

我试图找出 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 在渲染循环开始时用于清除缓冲区。

Example from SDL2's Wiki

关于c++ - 如何使用 SDL2 在 C++ 中将框渲染到屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54031715/

相关文章:

c++ - XCode 7.2 无法查看内存分析信息/设备在仪器中处于离线状态

macos - SDL2 窗口在调整大小时变黑

c++ - libSDL2-2.0.so.0 : cannot open shared object file

c++ - 从带有 GLSL 1.2 的 OpenGL 2.1 切换到带有 GLSL 版本 1.5 的 OpenGL 3.3 会破坏我的代码

c - 除非初始化 SDL_INIT_GAMECONTROLLER 子系统,否则 SDL2 将不会运行 (WINDOWS 10)

c - SDL2 中矩形的底边不直

c++ - Remove_If 字符串不区分大小写

c++ - 如何在Qt5中通过http连接到PUSH服务器

c++ - Q_ASSERT 语句中的代码是否以 Release模式执行?

javascript - HTML5 Socket.IO 在 C++ 中可用吗?