SDL2 无法正确绘制矩形

Posted

技术标签:

【中文标题】SDL2 无法正确绘制矩形【英文标题】:SDL2 Wont draw Rectangles Correctly 【发布时间】:2018-09-25 05:07:10 【问题描述】:

我正在创建一个窗口并绘制一个框,但由于某种原因,我没有绘制一个框,而是将屏幕更改为该颜色。我附上了窗口外观的照片,我将附上源代码。

#include <iostream>
#include <SDL.h>
#undef main

using namespace std;
int SCREEN_WIDTH = 650;
int SCREEN_HEIGHT = 650;

int main() 
    if (SDL_Init(SDL_INIT_VIDEO) != 0) 
        std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;

        return 1;
    

    SDL_Window *window = SDL_CreateWindow("Cells", 100, 100, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
    if (window == nullptr) 
        std::cout << "SDL_CreateWindow Error: " << SDL_GetError() << std::endl;

        SDL_Quit();

        return 1;
    

    SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    if (renderer == nullptr) 
        std::cout << "SDL_CreateRenderer Error: " << SDL_GetError() << std::endl;

        SDL_DestroyWindow(window);
        SDL_Quit();

        return 1;
    

    SDL_Event event;
    bool quit = false;

    while (!quit) 
        while (SDL_PollEvent(&event)) 
            if (event.type == SDL_QUIT) 
                quit = true;
            
        

        SDL_RenderClear(renderer);
        // renderTextures
        SDL_Rect fillRect =  122, 122, 122, 122;
        SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
        SDL_RenderFillRect(renderer, &fillRect);
        SDL_RenderPresent(renderer);
    

    return 0;

Doesn't Draw Correctly

【问题讨论】:

【参考方案1】:

SDL_RenderClear 使用您修改的当前绘制颜色,因此您的清晰和矩形颜色是相同的。使用例如设置不同的清晰颜色(您想要的背景颜色),例如

    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
    SDL_RenderClear(renderer);
    // now draw your rectangles with different col

【讨论】:

以上是关于SDL2 无法正确绘制矩形的主要内容,如果未能解决你的问题,请参考以下文章

使用 SDL2 绘制矩形

CMake 无法找到 SDL2_ttf,我正在尝试以与 SDL2 相同的方式链接它,并且两者都正确安装在 Ubuntu 18.04 上

如何在我的程序中正确使用 SDL2?

如何在 R 树状图中正确着色边缘或绘制矩形?

如何使用鼠标拖动绘制矩形和椭圆?

如何在 SDL2 中旋转矩形?