我的问题集中在SDL 2上
我不完全了解什么是渲染器。我可以有多个渲染器,还是总是只有一个?
例如,如何使用渲染器在具有不同颜色的背景上绘制具有特定颜色的矩形?
我相信答案在于此功能:SDL_RenderDrawRect()
,SDL_RenderFillRect()
我对吗?
就像我说的那样,问题是我不了解渲染。我知道曲面和发白的工作原理,但我不知道渲染器确切地象征着什么。
如果有人可以告诉我该怎么做,我想我会理解渲染的工作原理。
到目前为止,我有这个:
#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);
...