linux 3d开发工具,Linux 3D 编程介绍  (转)

最近用SDL,glut,g++做了一下Linux下的3D编程,有一点心得,想与大家分享一下。

我没有自己从零开始,先D了quake2和quake3的一些代码,关于MD2,MD3和bsp的,然后用D的level编辑器先生成map文件,编译为bsp文件,然后D一些3d模型(md2,md3),再将他们显示出来,正在做一些小的3d游戏。

其实做3D游戏,id的代码真的值的一看,极具参考性

如果想要源码和继续讨论的话,可以在此板或与 ferlyworld@21cn.com联系。

3d 编程的一点经验-关于MD2、MD3和BSP

(jupiter周伯河)

声明:本文所有涉及的软件和文件格式的所有权归原作者所有,本文只是进行一些学术上的交流,如果有侵权,请与我联系。

1、 首先要保证你在Linux下有3D驱动,如果没有也没有关系,你可以下载SDL for Windows和libjpeg for

windows和glut库,这可能是用得最多的三个库了。另外也要有一些文件格式的资料,如TGA,PCX,MD2,MD3,MDL,BSP,MAP等等。另外如果是在windows下编程,请用标准的C或C++语言,不要用VC生成代码。在windows下用标准的C或C++库,这将保证你的代码可以完全在windows和linux下相互移植。

2、 快速进入3D世界

在网上下载MD2,MD3,BSP的源代码,下载一个quake的关卡编辑器,我知道的有Radiant和QuArk是免费软件,一个PAK包浏览软件pakexplr,用它你可以查看quake的资源包.pak文件,另外你还需要quake2和quake3游戏,用以地图编辑,编译和提取纹理等。

3、首先,你先编译通过下载的源代码,运行一下有一个感受,我看过不少代码,都很简单,还有用类封装的。用起来也很方便。

4、用Radiant软件编辑一张简单的房间出来,要注意的是,你的.map文件要放在游戏的data目录下,就是有pak包的目录,因为最后将.map文件编译为bsp文件

的qbsp软件要目录中含有quake2或quake3的目录。Radiant是一个关卡编辑器,它是可见即可得的3d软件,慢慢使用一下,不难的。需要说明的是,.map文件其实是一个文本文件,你可以用文本编辑器打开看一下,会有很多收获的,它对了解文本方式的3d数据存储也有帮助。

5、将编辑好的.bsp文件和纹理文件一起放到你的bsp装载程序下,要特别注意的是目录结构和文件名的大小写,在linux下是区分大小写的,纹理文件可以用自己的替换,格式转换一下,大小要是2^n,用256x256,或128x128的就行,纹理的目录和文件名要与bsp文件中的一致,用khexedit看一下.bsp文件也行。

6、现在你就可以将一个怪物调入你编辑的地图里了

,控制怪物的起始帧和结束帧就可以实现怪物的跑和跳等动作,加入视角控制和简单的碰撞检测,一个游戏就出来。

7、要多看源代码,文件格式,和二进制文件格式,会发现很多思想的闪光点,其实做这些工作自己还没有写几行代码呢,但主要是学习一些有用东西。

这只是一个简单的流程,大家在实践的过程中有什么问题和不清楚,可以与我讨论,我的

E-mail: ferlyworld@21cn.com

QQ : 122068772

只想本文对想进入3D世界的新手有一些启发。

还忘说了,在Linux中编写OPENGL+GLUT程序,RedHat9.0下还要下载GLUT库的开发包glut*deve*rpm,编译时用如下指令:

g++ -g -o foo foo.cc -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm

-L/usr/X11R6/lib

最好是写一个Makefile文件,make文件中包含一个clean目标

clean:

rm *.o

在无法更新可执行文件时,先make clean,再make

这样省时省力。另外多开一terminal终端,随时用man glEnable等查函数指南

因为只是有时的感想,随便加的,纯属个人的观点

关于Linux下编程用的编辑工具的选择

推荐用Emacs,因为它支持多buffer,多窗口,各种编程模式,集成的编译命令......;并且在远端登录的情况,它是最好的选择,虽然它学习起来比较困难,但不要畏惧它,征服它!

关于游戏的程序结构

游戏的程序结构有三种:

C函数结构,所有的代码都以函数形式组织

class类结构,以类对游戏的各模块进行封装

plug插件式结构,游戏的各模块以插件的形式组织

后两种结构有许多优点,仅在性能上有所损失,不过可用专门的编译器和优化手段进行弥补

几种有用的资源

quake,quakeII,quakeIII源代码

HL2源代码

Cube源代码

Gamelib源代码 函数式的组织结构

Clanlib引擎,class结构

Crystal Space引擎,插件式结构

Lua嵌入式的脚本语言

Cint嵌入式的脚本语言

Sword2 消息结构的脚本引擎

在google上搜索这些资源吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值