了解图形接口的编程接口后,就可以直接用这些接口进行游戏的开发。由于 SDL 的开发便利性和通用性,使用SDL图形接口直接进行游戏的开发。
SDL 拥有统一封装的绘图接口,你可以在各个平台无缝编译和使用。
首先要从 SDL 的网站下载 SDL 的最新版本,下载网址是:
下载地址:http://www.libsdl.org/download-2.0.php
在下载的网站页面,可以看到 Source Code 一栏,这是 SDL 的源代码。下载源代码,直接使用 VC++、MinGW 等编译器进行编译,编译完的头文件和库文件直接就可以使用。
如果对编译不熟悉,可以选择下载 Development Libraries,也就是编译完成后的开发包。网站已经将 Windows 下的开发环境分为 VC++32 位版和 64 位版、MinGW32 位版和 64 位版。
下载完成后,将压缩包解压缩到任意目录,头文件和库文件使用解压缩出来的“i686-w64-mingw32”这个目录下的“include”和“lib”。
接下来,我们在 IDE 中设置 include 路径和 lib 路径,链接程序的时候需要在 IDE 设置包含库文件 libsdl.a、libsdlmain.a。
在开始开发的时候,首先使用 SDL_Init 来进行初始化。用这个方法传入一个 unsigned int 类型的参数,参数列表就像这样:
其中“初始化所有系统”这个选项,除了“忽略任意错误”外,包含了以上所有不同的初始化系统,一般使用 SDL_INIT_EVERYTHING 即可。
使用 SDL_CreateWindows 来创建一个窗体。SDL_CreateWindows 支持六个参数,分别是:窗体名称、在 Windows 屏幕显示的 x 坐标、在 Windows 屏幕显示的 y 坐标、宽、长、显示方式。
使用 SDL_CreateRenderer 创建一个 SDL 的渲染器(SDL_Renderer)。渲染器的参数是:
使用 SDL_RenderClear 来清空 SDL 渲染器、使用 SDL_RenderPresent 方法将渲染的结果显示出来。然后需要建立一个循环,在这个循环内,可以把 SDL 支持的图形图像函数或者其他逻辑代码往里面填写,完成游戏的程序内容。
在这个大循环内,需要用到 SDL_Event 事件系统。在循环内捕捉用户事件,比如要退出这个循环就必须点击右上角的 X 关闭按钮才行。如果点击了 X 按钮,就会被 while 内的 event 事件捕捉到,并且匹配是不是退出事件,如果是退出事件就退出程序。
最终退出程序的时候,使用 SDL_Quit 清除资源退出程序。
代码实现
#include <SDL.h>
int main(int argc,char *args[])
{
SDL_Window* window;
SDL_Renderer* render;
SDL_Event e;
bool q = 0;
int sdl=SDL_Init(SDL_INIT_EVERYTHING);
初始化完成后,建立窗体,并编写后续的步骤
if(0 <= sdl ){
// 当 SDL 初始化完成后创建一个标题为 "SDL Window" 的窗口, 窗口对齐方式为居中对齐,分辨率为 640x480 的窗口
g_pWindow=SDL_CreateWindow("SDL Window",
SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,
640,480,SDL_WINDOW_SHOWN);
if(0 != window)
render=SDL_CreateRenderer(window,-1,0);
}
SDL_SetRenderDrawColor(render,0,255,255,255);
SDL_RenderClear(render);
SDL_RenderPresent(render);
游戏主循环的内容
while( 0 == q )
{
while( 0 != SDL_PollEvent( &e ) )
{
// 检测到用户需要退出
if( e.type == SDL_QUIT )
q = true;
}
}
SDL_Quit();
return 0;
}