一起学习写linux游戏系列(3)

第一个SDL程序。
我们只是心急一下,其实一下子了解SDL肯定不现实阿。
下面是我的系统里安装的SDL 相关包,每个包都是实现一个独立的特定的功能。你不要急着都跟我一样都安装上。我狂热。呵呵。

SDL_Pango-0.1.2-7
SDL_net-1.2.7-3.fc8
SDL_image-devel-1.2.6-5.fc8
SDLmm-devel-0.1.8-5.fc8
SDL_gfx-2.0.16-4.fc8
SDL_gfx-devel-2.0.16-4.fc8
SDL-devel-1.2.13-2.fc8
SDL_image-1.2.6-5.fc8
SDL_Pango-devel-0.1.2-7
SDL_mixer-1.2.8-6.fc8
SDL_ttf-2.0.9-3.fc8
SDL_mixer-devel-1.2.8-6.fc8
SDL-static-1.2.13-2.fc8
SDL_net-devel-1.2.7-3.fc8
SDL_sound-1.0.1-8.fc8
SDLmm-0.1.8-5.fc8
SDL_ttf-devel-2.0.9-3.fc8
SDL-1.2.13-2.fc8
SDL_sound-devel-1.0.1-8.fc8

很多吧,我们先来接触最简单的。
如果你要先学习下SDL,请你参考
http://libsdl.org/intro.cn/toc.html
中文介绍阿,不容易阿。
下面的小程序参考了这个介绍
  1. #include <stdlib.h>
  2. #include "SDL.h"//就是SDL的头文件了
  3. main(int argc, char *argv[])
  4. {
  5.     if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) {//这里选择了初始化视频和音频
  6.         fprintf(stderr, "无法初始化SDL: %s/n", SDL_GetError());
  7.         exit(1);
  8.     }
  9.     atexit(SDL_Quit);//指定在退出之前调用SDL_Quit()
  10.    SDL_Surface *screen;//这个是SDL视频部分很重要的一个数据类型了,代表了屏幕上的像素
  11.     screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);//初始化后,设定窗口大小 640X480,16位色
  12.     if ( screen == NULL ) {
  13.         fprintf(stderr, "无法设置640x480的视频模式:%s/n", SDL_GetError());
  14.         exit(1);
  15.     }
  16.     sleep(3);//暂定3秒
  17. }
 gcc -o sdldemo `sdl-config --cflags` `sdl-config --libs`  sdldemo.c
这个命令还是gcc,稍微复杂了点,我一个一个解释。
-o sdldemo 这个前面提到了,指定了生成的程序的名字,也是我们等下运行的命令。
`sdl-config --cflags`
sdl-config --cflags 实际上是一个SDL自带的命令,你可以单独运行来看看结果:
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTR
上面是我的结果,你可以用这个结果来取代 `sdl-config --cflags` 这一部分,实际上两个` `之间的部分都是会被先运行在传递给gcc的,以后很多地方用到了这个方法。这里不直接写结果,是为了在每个人的电脑上结果不一样,命令确实通用的。
同样的 `sdl-config --libs` 这一部分也是要个输出结果。
-lSDL -lpthread
实际上刚刚的命令完全版等于:
 gcc -o sdldemo -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTR -lSDL -lpthread sdldemo.c
好长的命令阿。
sdl-config 让我们省了很多事,它的输出结果,其实是告诉gcc 到哪里去找到 SDL 的头文件 (-I/usr/include/SDL),或者是告诉gcc 要链接什么样的库, -lSDL -lpthread。
这个程序你编译成功了吗?
运行一下,失望了吗?它现在只能显示一个黑黑的窗口,当然了大小倒是合适,正好是640,480的。显示3秒,呵呵。
下个程序,我们来一个实用点的吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值