------------------------------------全系列文章目录------------------------------------
简介
-
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成;其封装了复杂的视音频底层交互工作,简化了视音频处理的难度;多用于开发游戏、模拟器、媒体播放器等多媒体应用领域;
-
OpenGL(Open Graphics Library - 开放图形库)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API),这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。
大致渲染流程
- 初始化阶段:
- 创建一个可与OpenGL一起使用的窗口
- 基于该窗口,创建一个2D渲染器
- 为渲染器创建纹理
- 渲染显示阶段:
- 接收原始图像信息,保存图像信息的描述至纹理中
- 将纹理的指定区域复制到渲染器中,进行渲染操作
- 将渲染出来的图像显示在屏幕上
相关API
-
SDL_CreateWindow:在特定位置创建一个指定大小、名字和种类的窗口
SDL_Window *SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags);
- title:窗口的名字
- x,y:位置
- w,h:宽高
- flags:描述窗口的种类,描述值为SDL_WindowFlags;如SDL_WINDOW_OPENGL,表示可用于OpenGL的窗口。
-
SDL_CreateRenderer:为窗口创建一个2D渲染器
SDL_Renderer *SDL_CreateRenderer(SDL_Window * window, int index, Uint32 flags);
- window:用于显示渲染的窗口
- index:要初始化的渲染驱动程序索引,-1则表示选取第一个支持该请求标志的驱动程序
- flags:渲染器标识,描述值为SDL_RendererFlags;如SDL_RENDERER_ACCELERATED,表示渲染器使用硬件加速
-
SDL_CreateTexture:为渲染器创建一个纹理
SDL_Texture * SDL_CreateTexture(SDL_Renderer *renderer, Uint32 format, int access, int w, int h);
- renderer:用于渲染纹理的渲染器
- format:纹理数据的格式
- access:纹理访问模式,描述值为SDL_TextureAccess;如SDL_TEXTUREACCESS_STREAMING,表示纹理更改频繁,可锁定
- w,h:纹理数据的宽高(以像素为单位)
-
SDL_UpdateTexture:用新的像素数据更新指定纹理区域
int SDL_UpdateTexture(SDL_Texture *texture, const SDL_Rect *rect, const void *pixels, int pitch);
- texture:待更新的纹理
- rect:表示要更新纹理的区域,NULL表示更新整个纹理区域
- pixels:像素数据
- pitch:一行像素数据中的字节数,包括行之间的填充
-
SDL_RenderCopy:将纹理的指定区域复制到渲染器
int SDL_RenderCopy(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcrect, const SDL_Rect *dstrect);
- renderer:目的渲染器
- texture:源纹理
- srcrect:纹理指定区域,NULL表示整个纹理区域
- dstrect:渲染结果的目标大小,NULL为整个窗口大小
-
SDL_RenderPresent:将渲染器的渲染结果显示在屏幕上
void SDL_RenderPresent(SDL_Renderer * renderer);