非常不错的SDL教程。
一.Window下SDL环境安装
-----------------------------------------------------------------
在Windows 下可以用多种开发环境来安装。具体方法参见
但一般我比较习惯于使用VC++6.0来开发SDL程序,以下介绍在VC++安装和使用库.
首先下载编译好的SDL开发库.(当然你可以自己行编译库,一般不推荐)
1.下载后解压到指定目录,假设是 e:\huisen\SDL下,
把解压的头文件路径include拷贝一份改名为SDL(理由后面解释)
2.把lib/SDL.dll 拷贝到 windows\system32 ,以便程序运行能找到它运行。
配置VC++ 6.0。
在程序中使用SDL库,有两种模式,一种是在每个项目里加上SDL库的路径,另外一种更为简单好用的办法,是把SDL设为所有项目共享的库。方法在主菜单 tools-->options 选择directories页标签。
首先是头文件目当设为SDL库目录下的include目录,这样程序中直接可以使用头文件,在这里有一个细节,
一般SDL有头文件直接在include下面,但是LINUX版或一般的SDL程序是引用 #include <SDL/SDL.h>
这里把include 设为引用目录,会将成头文件找不到。所以建议把include目录拷贝改成SDL,方便移植的程序可以找到头文件.将SDL目录本身设为include如下设置
![](http://blogimg.chinaunix.net/blog/upfile2/100820185226.png)
设SDL的lib路径为整个环境的库路径
![](http://blogimg.chinaunix.net/blog/upfile2/100820173600.png)
测试SDL游戏
我们用一个简单的DEMO来演示整个SDL环境使用
1.在VC++ 6.0中建立一个console项目,把hello.c加和到项目中。
2.在项目中加入对SDL的库的链接。(SDL.lib和SDLmain.lib) 如果是调试版,要忽略链接msvcrt.lib
![](http://blogimg.chinaunix.net/blog/upfile2/100820224257.png)
3.要求采用DLL多线程库来作运行库。(这是SDL FAQ的要求,否则有链接错误)
在项目选项,c/C++-->Code Generation-->Using Runtime library选择
Debug MultiThread DLL(DEBUG版)或者 MultiThread DLL(Release版)
![](http://blogimg.chinaunix.net/blog/upfile2/100820225101.png)
4.删除编译选项中的/GZ (编译器堆栈检查功能).这个主要是为了去掉如下链接错误
error LNK2001: unresolved external symbol __chkesp
(参见上图)
运行测试程序,会有如下效果.
![](http://blogimg.chinaunix.net/blog/upfile2/100820225822.jpg)
注意后面有一个控制台出现,所有printf将输出到终端上来。如果不需要显示控制台。
可以把链接选项里的 /subsystem:console 改为 /subsystem:windows 即可
二.Linux的SDL开发环境安装
-----------------------------------------------------------------
Linux 首先需要安装SDL库和SDL开发库。安装方式有两种,一种是编译后安装(这个方法出问题可能性最小,建议用这个方法)
另外一种是用rpm包来安装库和开发包。
第一种方法编译安装首先下载
简单的解压缩
tar xvzf SDL-1.2.14.tar.gz
然后
./configure
make
make install.
它将安装库到 /usr/local/lib ,头文件在/usr/local/include当中。
测试hello程序
gcc -o hello hello.c -lSDL #编译语句
执行程序 export LD_LIBRARY_PATH=/usr/local/lib;./hello
如果正确无误将会显示如下界面
![](http://blogimg.chinaunix.net/blog/upfile2/100820232622.png)
三.SDL编程基本流程.
----------------------------------------------------------------
SDL开发使用相关数据结构,必须在源码中使用
#include <SDL/SDL.h>
在Linux链接时,必须要链接libSDL.so库。 即在gcc语句加入 -lSDL 选项.
Windows下在VC界面的项目选项的链接库,加入 SDL.lib链接语句。
SDL由八个子系统组成——音频、CDROM、事件处理、文件I/O、游戏杆、线程、记时器和视频,
在使用SDL库时,在程序开源要调用
SDL_Init()来初始化,它有如下定义:
int SDL_Init(Uint32 flags);
其中flags指明是哪一个子系统在初始化装入。一般用
SDL_INIT_EVERYTHING,表示所有模块装入.
实始化成功返回为0,失败返回-1;
如想初始化特定模块,可用特殊选项。如下列语句用于实始化视频与定时器模块
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
当SDL程序即出时,须调用SDL_Quit();来做一些清除工作。
基本框架代码
|