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上搜索这些资源吧
linux 3d开发工具,Linux 3D 编程介绍 (转)相关推荐
- 3D开发工具HOOPS最新解析合集,助力实现web端高性能模型渲染
一.3D技术为创新提供强大助力 不管您想搭建桌面.WEB或者移动端APP应用,技术领先全球的HOOPS Platform组件都可以为您提供弹性的3D集成架构,同时,一批可信任的工业领域3D技术专家也将 ...
- C++后端开发程序员应该彻底搞懂的【libevent网络库】,libevent组件构成以及编程要领丨Linux服务器开发丨服务端编程
90分钟搞懂libevent网络库 1. 服务端事件组成 2. libevent组件构成以及编程概要 3. memcached是如何使用libevent 视频讲解如下,点击观看: C++后端开发程序员 ...
- 安装Ubuntu 14.04系统Linux微信开发工具的笔记
安装Ubuntu 14.04系统&微信开发工具的笔记 Ubuntu 14.04系统所需硬件配置低,我所使用的1.9GRAM笔电上正是安装的此系统. 最近因为崩溃重装了一次,并接着安装了linu ...
- 红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)丨epoll丨c/c++linux服务器开发丨linux后台开发
红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理) 视频讲解如下: 红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)丨epoll丨c/c++linux服务器开 ...
- 全面了解C++后端开发技能树,C++后端开发面试技术点丨C/C++linux服务器开发丨linux后台开发
C++后端开发技能树,C++后端开发面试技术点 视频讲解如下: 全面了解C++后端开发技能树,C++后端开发面试技术点丨C/C++linux服务器开发丨linux后台开发丨网络编程丨面试经验 C/C+ ...
- Linux漏洞建议工具Linux Exploit Suggester
Linux漏洞建议工具Linux Exploit Suggester 在Linux系统渗透测试中,通常使用Nessus.OpenVAS对目标主机进行扫描,获取目标主机可能存在的漏洞.如果无法进行漏洞 ...
- 解析Linux内核源码中数据同步问题丨C++后端开发丨Linux服务器开发丨Linux内核开发丨驱动开发丨嵌入式开发丨内核操作系统
剖析Linux内核源码数据同步 1.pdflush机制原理 2.超级块同步/inode同步 3.拥塞及强制回写技术 视频讲解如下,点击观看: 解析Linux内核源码中数据同步问题丨C++后端开发丨Li ...
- 详解5种红黑树的场景,从Linux内核谈到Nginx源码,听完醍醐灌顶丨Linux服务器开发丨Linux后端开发
5种红黑树的场景,从Linux内核谈到Nginx源码,听完醍醐灌顶 1. 进程调度CFS的红黑树场景 2. 虚拟内存管理的红黑树场景 3. 共享内存slab的红黑树场景 视频讲解如下,点击观看: [干 ...
- M的编程备忘录之Linux——基础开发工具
目录 1.Linux软件包管理器 yum 1.1.查看软件包 1.2.安装软件 1.3.卸载软件 2.Linux开发工具 vim 2.1.vim的基本概念 2.2.vim的基本操作 1.进入vim 2 ...
最新文章
- 华为于璠:新一代AI开源计算框架MindSpore的前世与今生 | AI ProCon 2019
- kubernetes相关概念
- jqGrid ColModel Options
- PostgreSQL数据库设置远程连接
- 11旋转编码器原理图_雷恩PRECILEC I9H系列增量式编码器
- Python是一门什么样的语言
- python unpack infinity_fit_转换出错:输入包含NaN、infinity或对dtype(“float64”)太大的值...
- oracle 动态游标行数,oracle动态游标的简单实现方法
- 私人博客定制---服务器接口封装
- dz论坛php.ini设置,Discuz!X1.5至3.2论坛Win主机与Linux主机伪静态设置方法
- python和java哪个好找工作-2019年Python、Java、C++学哪个更好?薪资更高?
- 1041: 谭浩强C语言(第三版)习题5.5
- 视频文件损坏怎么修复,赤兔视频修复软件助您
- 广域网宽带接入技术二PPPoE原理及配置
- android 卸载残留代码,完全卸载AndroidStudio(示例代码)
- 前端面试经典js题目Foo 与 getName
- 算法笔记习题 2-9小节
- ABeam Insight (德硕)| Smart Conference ——让你的生意跨越语言障碍
- 让我带你弄明白什么是RPC ,帮你整理一下你的小脑瓜!
- GD32F103基础教程—GPIO输出实验(五)
热门文章
- java动态方法_Java 动态方法调用
- Redis之下,大兵SDS的复仇之旅 !
- Python 之 沙盒环境--virtualenv
- unity手游使用terrian注意事项
- scrapy框架开发爬虫实战——css语法
- 用51单片机c语言实现电磁炉功能,基于单片机电磁炉控制系统设计..doc
- 介质天线的设计原理_天线原理与设计.pdf
- 近日总结3.20-3.22(内控流程图、VBA对象树、编程语言对比、BI的学习)
- 关于微信电子健康卡回调地址错误问题
- 【光学】基于matlab米氏散射和瑞利散射仿真【含Matlab源码 1948期】