SDL2渲染器
有了窗口之后,我们还需要有一个渲染器。渲染器用于将图像渲染到窗口上。
创建渲染器 通过SDL_CreateRenderer()函数来创建渲染器:
|
|
- window:需要为哪个窗口创建渲染器
- index:渲染器驱动需要初始化的渲染器索引。-1为默认渲染器
- flags:渲染器flag,为SDL_RendererFlags枚举类型。有以下四个值
- SDL_RENDERER_SOFTWARE:软件渲染
- SDL_RENDERER_ACCELERATED:用硬件加速渲染
- SDL_RENDERER_PRESENTVSYNC:画面与刷新速率同步
- SDL_RENDERER_TARGETTEXTURE:渲染器支持纹理渲染
一般index都是-1。如果你明确知道自己有其他的渲染器的话,可以用其他值。但是我们一般都是使用-1来用默认渲染器。
与窗口一起创建渲染器 你也可以使用SDL_CreateWindowAndRenderer()来连同渲染器一起创建窗口:
|
|
但是这里就不能指定窗口的初始坐标和标题了。
Renderer是否有Target
|
|
返回SDL_bool有两个值:SDL_TRUE,SDL_FALSE,分别对应true和false.
获得RenderDriver个数 通过SDL_GetNumRenderDrivers()来获得驱动个数。小于0表示失败。
|
|
获得RenderDriver信息 通过SDL_GetRenderDriverInfo()来获得。返回负值表示失败.
|
|
获得Renderer信息 通过SDL_GetRendererInfo()获得Renderer信息:
|
|
该函数将信息返回到info中,SDL_RendererInfo结构体见这里
获得/设置Renderer渲染目标 通过SDL_Get/SetRenderTarget()函数
|
|
其中texture必须为指定了SDL_TEXTUREACCESS_TARGET这个Flag所创建出来的texture。或者给入NULL表示默认texture.
获得Renderer的输出大小
|
|
这个函数可以获得Renderer的绘制图像的大小。默认为生成的窗体大小。
设置Renderer混合模式
|
|
这里的belnMode为枚举类型:
- SDL_BLENDMODE_NONE:dstRGB = srcRGB
- SDL_BLENDMODE_BLEND:dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA));dstA = srcA + (dstA * (1-srcA))
- SDL_BLENDMODE_ADD:dstRGB = (srcRGB*srcA) + dstRGB;dstA = dstA
- SDL_BLENDMODE_MOD:dstRGB = srcRGB * dstRGB;dstA = dstA
将当前的渲染数据绘制到窗体上面 通过SDL_RenderPresent()来会自豪当前图像数据到窗体上面:
|
|
销毁Renderer 使用SDL_DestroyRenderer()销毁:
|
|