转载自 xoxoxo
最终编辑 xyk34
FMOD

FMOD 是一个非常容易使用的跨平台声音引擎,能够在 WINDOWS,WINDOWS CE,LINUX,MACINTOSH,GAMECUBE,PLAYSTATION 2和XBOX上使用。支持 C/C++,VB,DELPHI和MASE。如果你在以上说明的任何一种平台上使用任何一种语言,那么FMOD适合你。本篇中使用的是C语言,同样他也适合其他平台。

相关的声音库

另一个相关的声音库是OPENAL。OPENAL是另一个跨平台的适应API,也同样支持WINDOWS,LINUX和MACINTOSH。同样能应用于C/C++,DELPHI和JAVA。风格有点象OPENGL。

http://www.fmod.org

开始之前,请将FMOD.DLL拷贝到你的工作目录下,也就是和你的项目文件在一起。

与C语言用户相关

在你的编译器下加入"fmod.h" 文件和库文件:

fmodvc.lib for Microsoft Visual C++ and Codewarrior
fmodbc.lib for Borland
fmodwc.lib for Watcom
fmodcc.lib for LCC-Win32
libfmod.a for MingW and CygWin
fmod-3-7.lib for GCC

在我们用FMOD播放我们的声音文件时,我们要先初始他。像下面这样:

FSOUND_Init (44100, 32, 0);

第一参数是输出率,用赫兹表示。在这里,我们取44100。第二个参数是我们最大的软通道。第三个参数是我们想表明的一些符号。在这里,我们取0;
下面,我们将播放一些声音了。我们播放的声音有哪些格式呢?是歌,例子或流?

歌,例子或流

FMOD支持两种API:FSOUND和FMUSIC。具体用哪个将由你要播放的声音决定。
通常的音乐格式有:.MOD,.S3M,.XM,.IT,.MID,.RMI,.SGT和.FSB,这些都被FMUSIC API支持。

而FSOUND API支持压缩的.WAV,.MP2,.MP3,.OGG or .RAW。

DEV C++下依靠上面的代码编


openal

3D音频编码

有OPENGL编程精练的人将很快掌握OPENAL。OPENAL有建立3D环境音效的能力。
#include <conio.h>
#include <stdlib.h>
#include <al/al.h>
#include <al/alc.h>
#include <al/alu.h>
#include <al/alut.h>
你会发现再OPENAL头和OPENGL头的定义上有许多的相似之处。除了“al.h","al
u.h","alut.h"与”gl.h","glu.h","glut.h"相似,还增加了一个"alc.h".ALC(
AUDIO LIBRARY CONTEXT)处理声音通过不同的平台,她也处理你在几个窗口下共
享设备的环境。
// 存储声音数据
ALuint Buffer;
// 用于播放声音
ALuint Source;
这是程序处理结构的初始化。在OPENAL中三种不同的结构,所有关于声音播放和
声音数据存储在一个内存中,源(source)是指向放声音的空间。明白源是非常
的重要。源只播放内存中的背景声音数据。源也给出了特殊的属性如位置和速度。
第三个对象是听者,用户就是那唯一的听者。听者属性属于源属性,决定如何
听声音。例如,不同位置将决定声音的速度。
http://www.openal.org/

libogg

- 音频编码。有关oggvorbis开发,主要为*.ogg码流结构及封装的文件,和vorbis-tools,libvorbis一起使用

http://www.vorbis.com/

包含文件 vorbisfile.dll,vorbis.dll,ogg.dll


libmad


MP3流媒体解码器,播放mp3文件

libmad附带了一个示例程序minimad, 但是仅仅是将解码结果输出到屏幕上,不爽,而libao则可以将pcm输出,通过多种方式播放出来,因此可以考虑将两者结合起来,编写一个可以播放mp3的小例子


#include <sys/soundcard.h>
#undef putchar
int soundfd;
int putchar(int c) {
return write(soundfd, (char *)&c, 1);
}
void set_dsp()
{
int rate = 441000;; /* 采样频率 44.1KHz*/
int format = AFMT_S16_LE; /* 量化位数 16*/
int channels = 2; /* 声道数 2*/
soundfd = open ( "/dev/dsp", O_WRONLY);
ioctl(soundfd, SNDCTL_DSP_SPEED, &rate);
ioctl(soundfd, SNDCTL_DSP_SETFMT, &format);
ioctl(soundfd, SNDCTL_DSP_CHANNELS, &channels);
}

http://www.underbit.com/products/mad/

TinyXml

轻量级XML解析器,游戏中常用解析简单的配置文件。

游戏中是使用一个INI文件来定义。这是一个好的办法,我们每次使用时从外部导入我们的数据,而不用每次修改时都编程一次。而我们今天在这里要讲解的是用XML文件来设置

许多人将XML用到很多需要活动设置的应用,比如服务器参数的设置,玩家数据的管理(最近才发现的,原来以为是在数据库中进行管理的,后来发现XML文件也能管理玩家数据,并且比操作数据库要方便的多)。还有人甚至用XML文件来设置窗口界面。看来掌握XML是非常有意义的。

我们下面来看一下tinyxml是如何在C/C++中建立XML文件的。

char floader[200],buffer[200];

TiXmlDocument* m_xmlDoc = new TiXmlDocument();

TiXmlElement xElement("player");

sprintf(buffer,"%d", 1);

xElement.SetAttribute("admin", buffer);

TiXmlElement xPos("pos");

sprintf(buffer,"%d",2);

xPos.SetAttribute("x", buffer);

sprintf(buffer,"%d",3);

xPos.SetAttribute("y", buffer);

sprintf(buffer,"%d",4);

xPos.SetAttribute("zone", buffer);

xElement.InsertEndChild(xPos);

m_xmlDoc->InsertEndChild(xElement);

sprintf(floader,"%s.xml", "antking");

m_xmlDoc->SaveFile(floader);

delete m_xmlDoc;......

这段简单的代码的作用就是将用户数据保存在XML文件中。不同的是我对其做了一些简化。

www.grinninglizard.com/tinyxml/

sourceforge.net/projects/tinyxml


GeSHi


语法加亮显示工具:
GeSHi是Generic Syntax Highlighter的缩写,即通用语法高亮工具。
GeSHi由PHP写成,是目前最流行的代码语法加亮工具,可以在phpBB、WordPrss、Mambo、mediawiki、DokuWiki等众多程序中发挥作用。
GeShi能够处理50多种计算机源代码的加亮,这几乎包括了所有的常见计算机代码,例如网页脚本、面相对象编程或者其他程序文本。
GeSHi是Nigel McNie的作品,遵从GFDL协议。本程序仍在持续更新,最新稳定版本为1.0.7.16(2006-11-26),测试版本1.12alpha3(2006-9-17)。
GeSHi出差不多是世界上最好的语法高亮工具的代名词。


http://geshi.org/


SDL

免费的跨平台多媒体应用编程接口
*

用于游戏、游戏开发工具、模拟器、样本演示、多媒体应用等

它能做什么?

视频、音频、事件、CDROM支持、线程、计时器、各种图象文件格式读取、快速绘图、混音、游戏杆支持、网络、MPEG解码等等,且CPU字节顺序无关。

大体上与DirectX比较对应关系如下:

*

SDL_Video、SDL_Image、OpenGL —— DirectDraw、Direct3D
*

SDL_Audio、SDL_Mixer —— DirectSound
*

SDL_Joystick、SDL_Base —— DirectInput
*

SDL_Net —— DirectPlay
*

SMPEG、SDL_Video、SDL_Audio、SDL_Sound、SDL_Filter —— DirectShow
*

字体、窗口管理等其他实用工具和大量样例

http://www.libsdl.org/

SDL本身只支持加载BMP文件,如果你想显示其他类型的图像文件,就要用到扩展类库,扩展类库里面还有其他一些组件,你可以在这里下载到

http://www.libsdl.org/projects/SDL_image/
包含文件:SDL_mixer.dll  SDL_image.dll SDL.dll SDL_net.dl


[引擎]开源2 D引擎HGE(D3D加速)

HGE简单的说,就是以3D加速实现2D图像的做法,就是RMXP內部的绘图功能(Game Maker也是),HGE使用DX8作为图像加速库,在Windows XP以后的系统,无须更新DX版本即可运行(这意味著你的游戏有较好的市场)
HGE1.6版本在今年8月底公开源码,授权是慷慨的ZLib License,任何人可以几乎不受限制的使用它,或基於技术核心开发引擎。
我们可以预期他在游戏市场中被广泛使用....
请到首页下载包装(並提供SourceForge连结)
首页:http://hge.relishgames.c...
论坛:http://relishgames.com/f...
源码:http://sourceforge.net/p...
標准的HGE包装是没法著中文/双字节的,
至少现在还没看到Unicode化的打算,除非自己用源码改。
http://relishgames.com/f...
这是国人研发的点阵中文显示方案,常用於各种游戏SDK,
当然往后希望能出现真正支持中文的版本(实际上在进行中)。


Libcurl (HTTP downloads)为一个免费开源的,客户端url传输库,支持 FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP,跨平台,支持 Windows,Unix,Linux等,线程安全,支持Ipv6。并且易于使用。

http://curl.haxx.se/

CEGUI

CEGUI 全称 "Crazy Eddie's GUI System"是一个自由免费的GUI库,基于LGPL协议,使用C++实现,完全面向对象设计。CEGUI开发者的目的是希望能够让游戏开发人员从繁琐的GUI实现细节中抽身出来,以便有更多的开发时间可以放在游戏性上。
CEGUI的渲染需要3D图形API的支持,如OpenGL或Direct3D。另外,使用更高级的图形库也是可以的,像是OGRE、Irrlicht和RenderWare:
除此之外,CEGUI还同步提供了官方界面编辑器LayoutEditor,以方便UI的制作。
http://www.cegui.org.uk

guichan

guichan  是一个界面库GUI library 使用于  Allegro, SDL 或OpenGL

http://guichan.sourceforge.net/screenshots.shtml


PyGame  制作游戏

Pygame 是用于编写游戏的一组Python模块. 她基于是十分优秀的SDL库. 您可以用python创建功能强大的、多媒体程序. Pygame 是跨平台的,几乎可以运行于各种平台。

http://www.pygame.org/


Anti-Grain Geometry

Anti-Grain Geometry(以下简称AGG)是一个用标准的平台无关的C++写成的通用图形工具包。它可以应用在计算机程序中需要高质量的2D图形的许多方面。例如,AGG可以用于渲染2D地图。AGG只使用了C++和标准C的函数,如memcpy,sin,cos,sqrt等。基本的算法甚至没有使用C++ Standard Template Library。因此,AGG能够在大量的应用软件中使用,包括嵌入式系统中。

AGG刚刚更新了版本,目前版本是2.5。

Anti-Grain Geometry,也许是目前,开源的最牛X的2D渲染引擎,当然也是跨平台的,不依赖于某一个操作系统!而且速度巨快,当然STL也是用的非常多。

AGG简介
AGG是一个用标准的平台无关的C++写成的通用图形工具包。它可以应用在计算机程序中需要高质量的2D图形的许多方面。例如,AGG可以用于渲染2D地图。AGG只使用了C++和标准C的函数,如memcpy,sin,cos,sqrt等。基本的算法甚至没有使用C++ Standard Template Library。因此,AGG能够在大量的应用软件中使用,包括嵌入式系统中。
另一方面,AGG允许对库的一部分进行替换,比如在它不能适应性能的要求时。如果需要,你也能够添加其他的颜色空间。因为AGG是基于C++的模板机制的。
AGG不是一个紧密的图形库,它并不容易使用。这是由于考虑到AGG是一个“创建其他工具的工具”。这意味着,没有“Graphcis”对象或是其他类似的东西。取而代之的是许多组织松散的、能单独或是组合使用的算法。这些算法有着定义良好的接口,它们之间有着尽可能最小的隐式或显式的依赖关系。

网址:http://www.antigrain.com/
Logo

更多推荐