From KlayGE游戏引擎, post address http://www.klayge.org/about/features/转载请注明出处为KlayGE游戏引擎,本文地址为http://www.klayge.org/about/features/

概览

KlayGE是用于下一代游戏的一个完整的游戏开发框架。它是API无关的插件式结构,提供了很多先进技术,并且有无限的扩展性。

KlayGE的设计目的非常明确,用最先进的技术武装引擎。它所提供框架使游戏的开发、测试、移植得到简化。KlayGE的目标平台是当年发布的最高硬件到前一年发布的最低硬件。

图形

  • 支持D3D11,OpenGL和OpenGL ES 2
  • 采用fxml作为可渲染物体的特效脚本,可以直接把美工生成的特效导出使用
  • Python脚本可以在运行期动态解释,所以修改脚本以后不需要重新编译
  • 可以通过height map来建立地形场景
  • 支持骨骼动画
  • 硬件Occlusion culling
  • 粒子系统
  • Post processing技术
  • 自适应硬件状态缓存和延迟更新机制
  • 支持逐像素光照和渲染技术
  • 基于distance的字体系统,兼有矢量和点阵的优点
  • 支持Procedural texture
  • 支持Subsurface Scattering,可用于渲染树叶、皮肤、玉器等半透明材质
  • 支持PN Triangles技术,在运行期自动光滑低模
  • 着色
    • 包含常用操作的shader库
    • 完全抽象出图形API
    • 多遍渲染
    • 完全支持可编程着色
    • 可以使用多条渲染流
  • 光照
    • 动态光照
    • 全方向shadow map

音频

  • 支持各种平台的音频输出
  • 支持3D声音定位和多普勒效应
  • 输入格式支持Ogg Vorbis
  • 支持流式播放

工具

  • 法线图生成器,可以从高度图生成法线图
  • 距离图生成器,可以从高度图或3D纹理生成距离图
  • MeshML导出插件,从3DS Max导出模型
  • OpenGL兼容性检测工具
  • HDR压缩器,支持cubemap和2D HDR纹理的压缩
  • Normal map压缩器,2:1或4:1的压缩率
  • 基于distance的字体生成器,可以把矢量字体转换成引擎使用的字体格式
  • FXML2Shader工具,把FXML的特效脚本转换成HLSL或Cg

程序特性

  • 引擎是开放源代码的,包含了100%的引擎、工具的源代码
  • 可扩展的、面向对象的C++引擎,带有用于静态和动态加载代码和资源的软件架构,易于移植和调试
  • 用Python作为脚本语言,提供了对动态数据的自动支持,开发调试方便,并很容易和C++主程序配合工作

目录

  1. KlayGE是什么?
  2. KlayGE是你一个人开发的吗?
  3. 哪里能找到KlayGE的文档?
  4. 为什么选择了GPL?
  5. 为什么用Python而不是LUA?
  6. 为什么必须要有Shader Model 2.0及以上?
  7. KlayGE的网络部分如何?
  8. 编译例子的时候出现像这样的连接错误信息:“libcmtd.lib(dbgheap.obj) : error LNK2005: __CrtSetDbgFlag 已经在MSVCRTD.lib(MSVCR80D.dll) 中定义”,请问如何解决?
  9. Boost编译的时候应该用什么参数?
  10. 为什么在Visual Studio里运行例子的时候ResLoader::Load出现assert failed?
  11. 在编译的时候提示”‘yasm’ is not recognized as an internal or external command, operable program or batch file.”,如何解决?

问:KlayGE是什么?

答:KlayGE是一个开放源代码、跨平台的游戏引擎。它是用C++开发的,并使用Python作脚本语言。KlayGE在GPL协议下发行。

回到目录


问:KlayGE是你一个人开发的吗?

答:是的。几乎所有的开发都是我一个人完成的。但在这个过程中使用了一些第三方的代码,比如7zip的解码部分。不少朋友也在开发的过程中给予了不可或缺的帮助。

回到目录


问:哪里能找到KlayGE的文档?

答:目前KlayGE的文档仅限于Documentation下的文件。文档缺乏的原因主要是我没有足够的时间去写,另外我更希望用代码本身来自我诠释。

回到目录


问:为什么选择了GPL?

答:在KlayGE 2.7之前使用的是LGPL协议,但后来为了保护它不被某些专有软件吞并,所以换成了GPL。

回到目录


问:为什么用Python而不是LUA?

答:KlayGE 2.0之前(当时还叫作Clay! Engine),LUA是首选的脚本语言。LUA的优点是速度快,缺点是在C++中的调用极其麻烦,而且语言本身能力较弱。Python速度不如LUA, 但是语言能力强大得多,也不必写成栈式的调用方式,简洁得多。在KlayGE中,脚本不是为了效率而存在的,所以Python成了不二之选。

回到目录


问:为什么必须要有Shader Model 2.0及以上?

答:KlayGE是一款面向高端的引擎,所以在一定程度上要用较高的配置,以满足先进技术的需要。另一方面,Shader Model 2.0并不算一个很高的要求,市面上的新显卡几乎都是支持Shader Model 3.0的。对于游戏开发者来说,如果现在还在使用不支持Shader Model 2.0的硬件,那只能说实在落后得太多了。

回到目录


问:KlayGE的网络部分如何?

答:KlayGE中的网络是弱项,甚至可以说几乎无法使用。所以需要重新开发,或者使用别的网络库。

回到目录


问:编译例子的时候出现像这样的连接错误信息:“libcmtd.lib(dbgheap.obj) : error LNK2005: __CrtSetDbgFlag 已经在MSVCRTD.lib(MSVCR80D.dll) 中定义”,请问如何解决?

答:由于KlayGE在VC下使用的运行库是多线程的DLL,所以需要把所有连接到exe的lib的运行库改为 多线程DLL(Project- >Properties->Configuration Properties->C/C++->Code Generation->RuntimeLibrary,选择Multi-threaded Debug DLL/Multi-threaded DLL)。

回到目录


问:Boost编译的时候应该用什么参数?

答:Boost 1.36的编译参数可以通过bjam的命令行参数来设置,可以写一个批处理文件,内容是:

SET BZIP2_SOURCE="D:/bzip2-1.0.5"
SET ZLIB_SOURCE="D:/zlib-1.2.3"
SET ICU_PATH="D:/icu4c-3_6"
bjam --toolset=msvc-9.0 --stagedir=./lib_vc9_x86 --builddir=./ address-model=32 link=shared runtime-link=shared threading=multi cxxflags=-wd4819 cxxflags=-wd4910 define=_CRT_SECURE_NO_DEPRECATE define=_SCL_SECURE_NO_DEPRECATE define=_SECURE_SCL=0 stage debug release
bjam --toolset=msvc-9.0 --stagedir=./lib_vc9_x64 --builddir=./ address-model=64 link=shared runtime-link=shared threading=multi cxxflags=-wd4819 cxxflags=-wd4910 define=_CRT_SECURE_NO_DEPRECATE define=_SCL_SECURE_NO_DEPRECATE define=_SECURE_SCL=0 stage debug release

直接在boost的目录下运行这个批处理就可以编译出dll版本的boost库。

回到目录


问:为什么在Visual Studio里运行例子的时候ResLoader::Load出现assert failed?

答:需要在Visual Studio中把工程的Working Directory设置成$(OutDir)。此问题在KlayGE 3.10中不再出现。

回到目录


问:在编译的时候提示”‘yasm’ is not recognized as an internal or external command, operable program or batch file.”,如何解决?

答:根据设置,Visual Studio的编译工具必须能调用yasm才能编译.asm的文件。解决方法之一是把下载下来的yasm-X.X.X-winYY.exe(X表示版本 号,YY表示32或64)改名成yasm.exe,并拷贝到VC的bin目录下,比如”C:Program FilesMicrosoft Visual Studio 9.0VCbin”。(注:这个问题实际上不该出现在本FAQ中,因为这其实是个命令行调用的问题,谁都该会的。可悲于国内“开发者”的素质,竟然有 不少人都问了我该问题,使得我不得不将它写在这里。)此问题将在KlayGE 3.11中避免。

愿望列表

From KlayGE

Jump to: navigation, search

这里列出了一些希望以后能加入KlayGE的功能。

愿望列表可以用来激励未来的工作。其中有些是很明确的做法,有些只是飘渺的想法,大部分则介于两者之间。同样,实现这些条目的工作量从对现有接口的小修改到大的研究项目都有。

Contents

[hide]

  • 1 愿望列表

    • 1.1 矢量纹理
    • 1.2 软件渲染插件
    • 1.3 基于HTML5的UI
    • 1.4 地形渲染
    • 1.5 去除DirectShow
    • 1.6 GPU上进行物理和数学计算
    • 1.7 实时全局光照
    • 1.8 强大的内存管理器
    • 1.9 GPU音频处理
    • 1.10 Command buffer的记录和重放
    • 1.11 实时Catmull-Clark细分
  • 2 正在做的
    • 2.1 基于GPU的细分
    • 2.2 移动平台支持
  • 3 已经完成
    • 3.1 延迟着色
    • 3.2 深度剥离
    • 3.3 屏幕空间环境遮挡

愿望列表

矢量纹理

直接在texel上存储矢量参数,字体系统也可以建立在其之上。

软件渲染插件

类似于D3D10的软件渲染插件,用纯软件支持D3D10+的所有功能。

基于HTML5的UI

集成HTML5渲染器,可以直接用HTML5来作为UI的表达方式。

地形渲染

大规模地形渲染。

去除DirectShow

不使用DirectShow来播放视频和音频。备选方案之一是用.ogm作为容器格式,Theora作为视频编码,Vorbis作为音频编码,同时也支持字幕。

GPU上进行物理和数学计算

提出人:吴野

GPGPU的物理模拟和线性代数计算。

实时全局光照

提出人:吴野

实时计算全局光照。支持阴影、折射、反射、半透明和多次散射。

强大的内存管理器

支持跨越DLL边界的内存分配/清除、泄露检测和内存池。最好能Lock-free或Wait-free。

GPU音频处理

通过GPU处理音频(3D、特效),然后传给声卡播放。

Command buffer的记录和重放

把所有的DX/OGL API调用都在一个线程里捕捉,并可以在其它线程里重放。

实时Catmull-Clark细分

提出人:周波

实现Approximating Catmull-Clark Subdivision Surfaces with Bicubic Patches的GPU细分算法

正在做的

基于GPU的细分

在D3D11/D3D10(ATI)上支持硬件的细分,在D3D9/OpenGL上支持基于shader的细分。(D3D11的细分已经支持了)

移动平台支持

OpenGL ES 2.0插件和D3D mobile插件。(OpenGL ES 2.0插件已经完成)

已经完成

延迟着色

延迟着色的渲染系统,支持抗锯齿和透明。(作为KlayGE 3.8.0的一个例子)

深度剥离

顺序无关的透明。(作为KlayGE 3.7.0的一个例子)

屏幕空间环境遮挡

用SSAO来增加暗处的细节。(作为KlayGE 3.8.0的一个例子)

KlayGE 3.12.0在上半年的最后一天发布了!本版的亮点是支持实时全局光照。主要更新如下:

  • 支持全局光照
  • 包含第三方库及其编译脚本
  • 增加了Maya导出插件
  • 支持Dual Paraboloid Shadow Map
  • 增加了多种模式的BC1-BC5纹理压缩函数
  • 增加了cmake工程脚本
  • 支持Filmic tonemapping
  • 支持FXAA和Temporal AA

KlayGE 3.12.0的很多功能是由组员完成的。感谢吴彧文提供的GI,感谢王锐朱晓阳honyeung Lau提供的Maya插件,感谢张亚川提供的DPSM,感谢陈顺斌郭鹏提供的FXAA和Temporal AA,感谢王锐提供的cmake工程脚本。更感谢大家这么多年来的支持和帮助!

从此处下载KlayGE 3.12.0。

KlayGE 3.12.0 released today! The highlight feature of this version is Real-time Global Illumination. The main updates are:

  • Support global illumination
  • Including third party libs and compiling script
  • Add Maya exporter
  • Support Dual Paraboloid Shadow Map
  • Add BC1-BC5 texture compression functions
  • Add cmake script
  • Support filmic tonemapping
  • Support FXAA and Temporal AA

Many features of KlayGE 3.12.0 is done by team members. Thanks atyuwen‘s GI. Thanks Ray, Xiaoyang, honyeung Lau‘s Maya exporter. Thanks windameister’s DPSM. Thanks Shunbin, Peng‘s FXAA and Temporal AA. Thanks Ray‘s cmake script.

Download KlayGE 3.12.0 here.

Related posts:你可能感兴趣的:

  • KlayGE 3.12计划中的新功能和招聘计划
  • KlayGE 3.11.0新鲜出炉
  • KlayGE 3.8.0发布
  • KlayGE 3.10.0发布
  • KlayGE 3.9.0发布

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

转载于:https://www.cnblogs.com/skiwnchiwns/p/10345541.html

KlayGE游戏引擎相关推荐

  1. 未来属于SVO? - KlayGE游戏引擎

    未来属于SVO? 转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2007 在刚刚结束的SIGGRAPH 2012上,Cyril Crassin ...

  2. 最先进的开源游戏引擎KlayGE 3.12.0发布

    转载请注明出处为KlayGE游戏引擎,本文地址为http://www.klayge.org/2011/06/30/%e6%9c%80%e5%85%88%e8%bf%9b%e7%9a%84%e5%bc% ...

  3. 如何自学游戏引擎的开发?

    PS:题猪分得清游戏和游戏引擎的区别,所以各位答主不需要劳神解释两者的区别关系什么的了 PS:这里的游戏引擎暂时指图形模块,其他的声音,物理,网络,UI等等模块暂时不考虑 题猪一直自学编程,有c++. ...

  4. 国内做 3D 渲染和游戏引擎的码农们都在哪里获取技术信息?

    国内做 3D 渲染和游戏引擎的码农们都在哪里获取技术信息? 国内的做 3D 渲染,图形有关的码农们,主要都是去哪里获取技术帮助呢?尤其是移动这边. 现在公司里主要任务就是在 iOS 上用 GLES 做 ...

  5. [原创]四大开源3d游戏引擎探究(前言上)

    [声明] 本人水平有限,只对于长久以来研究的几个经典3d游戏引擎的设计思想.程序架构和应用行深入剖析的结果与游戏开发同行分享,文档有不妥之处请指出,期待我们的共同进步. 引擎名称: 1.       ...

  6. Doom/Quake射击游戏引擎

    Doom与ProBoom游戏引擎- 3D射击类游戏 从DOOM到CE3 20年3D游戏引擎发展史漫谈- http://blog.csdn.net/pizi0475/article/details/58 ...

  7. 如何自学游戏引擎的开发

    PS:题猪分得清游戏和游戏引擎的区别,所以各位答主不需要劳神解释两者的区别关系什么的了 PS:这里的游戏引擎暂时指图形模块,其他的声音,物理,网络,UI等等模块暂时不考虑 题猪一直自学编程,有c++. ...

  8. 手把手教你架构3d游戏引擎pdf_一个在游戏行业摸爬滚打了十几年的人,为何我对这本书情有独钟...

    Big News!<游戏开发:世嘉新人培训教材>今日开始预售啦!经过漫长的等待,这次终于可以买到了.现在下单,你将在图书出印厂的第一时间收到书哦- 这本书由世嘉一线开发者执笔,并被选为世嘉 ...

  9. android 游戏引擎libgdx demo cuboc分析

    开始学习android游戏开发也有一段时间了,挑选libgdx这个游戏引擎来进行学习和开发.Libgdx是一款支持2D与3D游戏开发的游戏类库,并且它是夸平台的.例如你可以在windos下开发,同样的 ...

最新文章

  1. nio的优势_NIO研究所 | 最有AI的EC6故事
  2. 带你和Python与R一起玩转数据科学: 探索性数据分析(附代码)
  3. Windows Phone 开发——相机功能开发
  4. JZOJ 3739. 【TJOI2014】匹配
  5. SQL Server 备份与恢复之八:还原数据库
  6. 被单位开除,已经交了14年的养老保险,该怎么办?
  7. python list突破上限武器_Python3 tkinter基础 Listbox height 显示行数的上限
  8. spring-第十一篇之SpEL表达式
  9. 利用Clover、QTTabBar,像浏览器一样使用你的资源管理器,效率办公必备!
  10. 信息系统项目管理师——进度管理论文
  11. FCM和Threshold
  12. 小型微型计算机投稿流程,小型微型计算机系统
  13. PHP TP模板下的微博登录(wap)
  14. CDP科普:客户数据中台(CDP)是什么?
  15. 盘点:怀一胎和怀二胎的4点不同
  16. DS1302时钟(电子钟)
  17. QNX虚拟环境三 (内存 设备 调度 )
  18. 使用不同的命令去打包正式,测试,本地vue项目
  19. frame,iframe
  20. 在Unity中制作完整的技能系统(代码篇)

热门文章

  1. wat java_并发工具优于wati、notify(69)
  2. 数据库实操——pandas写入数据库数据
  3. qq浏览器主页_安卓浏览器哪家强?这些小众好用的手机浏览器你知道吗
  4. python网络编程证书_python 网络编程——客户端
  5. python print 输出到txt_(Python基础教程之七)Python字符串操作
  6. 自带flash的浏览器_解决Flash插件已被屏蔽的问题(谷歌、火狐、IE、Edge)
  7. 二叉树先序遍历,中序遍历,后序遍历,层次遍历学习总结及完整C/C++代码
  8. 读书笔记——信息的表示与处理
  9. 二、操作系统——用信号量机制实现进程互斥、同步、前驱关系(详解)
  10. 天池 在线编程 最大子树(自底向上)