gpt4 book ai didi

c++ - SDL2 中的渲染器到底是什么?

转载 作者:太空狗 更新时间:2023-10-29 20:58:51 33 4
gpt4 key购买 nike

我不太明白渲染器是什么。我可以有多个渲染器还是总是只有一个?

例如,如何使用渲染器在不同颜色的背景上绘制具有特定颜色的矩形?

我相信答案在于函数 SDL_RenderDrawRect()SDL_RenderFillRect()。我说得对吗?

我知道表面和 bliting 是如何工作的,但我不知道渲染器究竟代表什么。

如果有人能告诉我如何绘制矩形,我想我会理解渲染器的工作原理。

到目前为止我有这个:

#include <SDL.h>

int main(int argc, char* argv[]) {

//Initialization
SDL_Init(SDL_INIT_EVERYTHING);

//Window
SDL_Window *MainWindow = SDL_CreateWindow("My Game Window",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640, 480,
SDL_WINDOW_SHOWN
);

//Renderer
SDL_Renderer *Background = SDL_CreateRenderer(MainWindow, -1, 0);

SDL_SetRenderDrawColor(Background, 255, 255, 255, 255);

SDL_RenderClear(Background);

SDL_Delay(3000);

//Clean up
SDL_DestroyWindow(MainWindow);
SDL_Quit();

return 0;
}

最佳答案

关于问题的第一部分,请参阅 this SO question .

关于为什么你的代码没有做太多事情:

您是正确的,您需要使用 SDL_RenderDrawRect()SDL_RenderFillRect()SDL_RenderDrawRect 将绘制一个未填充的矩形。 SDL_RenderFillRect 将被填充(希望这是显而易见的)。

使用SDL_renderer,您需要调用SDL_RenderPresent 将“场景”复制到屏幕。

...
//Renderer
SDL_Renderer* renderer = SDL_CreateRenderer(MainWindow, -1, 0);

SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);

SDL_RenderClear(renderer); // fill the scene with white

SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); // the rect color (solid red)
SDL_Rect rect(0, 0, 100, 50); // the rectangle
SDL_RenderFillRect(renderer, &rect);
SDL_RenderPresent(renderer); // copy to screen

SDL_Delay(3000);
...

关于c++ - SDL2 中的渲染器到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26326459/

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