Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3515738
  • 博文数量: 864
  • 博客积分: 14125
  • 博客等级: 上将
  • 技术积分: 10634
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 16:53
个人简介

https://github.com/zytc2009/BigTeam_learning

文章分类

全部博文(864)

文章存档

2023年(1)

2021年(1)

2019年(3)

2018年(1)

2017年(10)

2015年(3)

2014年(8)

2013年(3)

2012年(69)

2011年(103)

2010年(357)

2009年(283)

2008年(22)

分类: C/C++

2009-02-13 09:58:08

第四章跨平台图象显示库——SDL

第二节函数库的详细介绍——基本函数

    在上一节中,我们已经了解了SDL的安装和基本的使用方法。还给出了编译使用SDL程序的源代码。接下来,我将带领各位深入SDL其中,逐一介绍SDL的各个函数。首先我们先从基本函数说起。

当你需要在你的程序中使用SDL的时候。你首先要做的事情,就是在你的程序中初始化SDL。这个工作,你可以交由SDL_Init函数来做。SDL_Init函数可以初始化任何SDL所支持的子系统,其中包括图象,声音,摇杆,时钟等子系统。当然,在你使用SDL_Init函数初始化以后,你可以使用SDL_InitSubSystemSDL_QuitSubSystem函数来加载和卸载子系统的。当然啦,你的程序退出前,你必须卸载所有的子系统以释放系统资源。通过调用< /font>SDL_Quit,可以轻松的卸载掉你所加载的子系统并释放这些子系统的系统资源。

SDL_Init

函数摘要
        #include“SDL.h”
        intSDL_Init(Uint32 flags);

函数介绍
这个函数是用于初始化SDL的,你必须在调用其他的SDL函数之前调用该函数。其中flags的参数和意义如下。当你需要初始化多个子系统的时候,可以用把这些参数或起来。


                                                                                                                                                      

SDL_INIT_TIMER

始化 计时器子系统

SDL_INIT_AUDIO

始化 音频子系统

SDL_INIT_VIDEO

始化 视频子系统

SDL_INIT_CDROM

始化 光驱子系统

SDL_INIT_JOYSTICK

始化 摇杆子系统

SDL_INIT_EVERYTHING

初始化以上全部的子系统


返回值说明
   返回 -1表示错误,返回 0表示初始化成功。


SDL_InitSubSystem

函数摘要
   #include“SDL.h”
    intSDL_InitSubSystem(Uint32 flags);

函数介绍
   在你通过 SDL_InitSDL初始化以后,你可以通过SDL_InitSubSystem函数来初始化那些没有被初始化的子系统。其中flags的参数定义和 SDL_Init的一样。

返回值说明
   返回 -1表示错误,返回 0表示初始化成功。


SDL_QuitSubSytem

函数摘要
   #include“SDL.h”
    voidSDL_QuitSubSystem(Uint32 flags);

函数介绍
   SDL_QuitSubSystem函数可以卸载你曾经通过 SDL_Init或者 SDL_InitSubSytem函数加载的子系统,其中参数 flasgs的定义和 SDL_Init中的定义一样。


SDL_Quit

函数摘要
   #include“SDL.h”
    voidSDL_Quit(void);

函数介绍
   SDL_Quit函数可以卸载所有你所加载的子系统,并且释放这些子系统所占用的资源。这个函数一般是在程序退出以前调用的。< /font>


SDL_WasInit

函数摘要
   #include“SDL.h”
    Uint32SDL_WasInit(Uint32 flags);

函数介绍
   SDL_WasInit函数,允许你查看你所加载的子系统有哪些。其中flags的内容为你所要检查的子系统。

返回值说明
   函数返回一组你所要检查的子系统加载情况的说明。是几个bit字的或。你可以用与操作来逐一检查你所要检查的子系统是否被加载。


    下面给出一组关于以上函数的Demo代码,以及他的Makefile

    SDL_General_Demo.cC代码

& nbsp;                

//NERVE Development Team
//SDL_General_Demo.c

#include
#include
#include

#define NOTE(msg) printf("NOTE: %s\n",msg)

int main(int argc,char *argv[]){
   SDL_Init(SDL_INIT_VIDEO);
   NOTE("load video subSystem");

   SDL_InitSubSystem(SDL_INIT_AUDIO);
   NOTE("load audio subSystem");

   if(SDL_WasInit(SDL_INIT_EVERYTHING)&SDL_INIT_AUDIO){
       NOTE("AUDIO SubSystem was loaded");
   }else{
       NOTE("AUDIO SubSystem is unloaded");
   }

   SDL_QuitSubSystem(SDL_INIT_VIDEO);
   NOTE("unload video subsystem");

   if(SDL_WasInit(SDL_INIT_VIDEO)){
       NOTE("VIDEO SubSystem was loaded");
   }else{
       NOTE("VIDEO SubSystem is unloaded");
   }

   SDL_Quit();
   NOTE("unload any subsystem of SDL");

   return(0);

          

}

      


    编译SDL_General_Demo.cMakefile文件。

& nbsp;                

#Makefile
CC=gcc
SDL_INCLUDE="D:/SDL/include"
SDL_LIB="D:/SDL/lib"
all:SDL_General_Demo.o
   $(CC) -L$(SDL_LIB) -o Demo SDL_General_Demo.o -lmingw32 -lSDLmain -lSDL
SDL_General_Demo.o:SDL_General_Demo.c
   $(CC)   -I$(SDL_INCLUDE) -c SDL_General_Demo.c -o SDL_General_Demo.o
           


按照以上两个文件的编译,我们可以得到一个名为Demo的可执行程序。当你执行 Demo以后。你将在Demo所在的文件夹内找到一个名为stdout.txt的文件。他是对 标准输入输出的重定向文件,你使用printf打印到终端的内容全部保存在这个文件内。下面是我的stdout.txt的内容


                  

NOTE: load video subSystem
NOTE: load audio subSystem
NOTE: AUDIO SubSystem was loaded
NOTE: unload video subsystem
NOTE: VIDEO SubSystem is unloaded
NOTE: unload any subsystem of SDL


文外音:
如果你在阅读本文以后有任何的疑问,你可以到
http://nirvana.cublog.cn或者 http://blog.csdn.net/visioncat上提出问题。最后感谢各位对我长久以来的支持。

阅读(1150) | 评论(0) | 转发(0) |
0

上一篇:Gtk+的裁剪

下一篇:唐骏在大连理工的演讲

给主人留下些什么吧!~~