- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我不太明白渲染器是什么。我可以有多个渲染器还是总是只有一个?
例如,如何使用渲染器在不同颜色的背景上绘制具有特定颜色的矩形?
我相信答案在于函数 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/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!