KlayGE游戏引擎

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习领域有哪些瓶颈?

来源:知乎 编辑:深度学习与计算机视觉深度学习近年来成为计算机领域最耀眼的明星,衍生出许多实际的应用,主要是在推理与决策等方面取得了突破。然而深度学习如何在超越图像、语音及自然语言处理方面做出更多成绩,比如…

Codeforces Round #462 (Div. 2), problem: (C) A Twisty Movement (求可以转一次区间的不递增子序列元素只有1,2)...

题目意思&#xff1a; 给长度为n&#xff08;n<2000&#xff09;的数字串&#xff0c;数字只能为1或者2&#xff0c;可以将其中一段区间[l,r]翻转&#xff0c;求翻转后的最长非递减子序列长度。 题解&#xff1a;求出1的前缀和&#xff0c;2的后缀和&#xff0c;以及区间[i,…

计算机网络(十三)-数据链路层-动态分配信道

一.动态分配信道 也称动态媒体接入控制/多点接入&#xff0c;特点是信道并在用户通信时固定分配给用户。 轮询访问介质访问控制: -令牌传递协议随机访问介质访问控制:所用用户可随机发送信息&#xff0c;发送信息时占全部宽带。 -ALOHA协议 -CSMA协议 -CSMA/CD协议 -CSMA/CA协…

元宇宙大热后将陷低潮, 虚实互联网更准确, 2030前后才可能全面热启

作者&#xff1a;DCCI*未来智库、未来实验室专家胡延平来源&#xff1a;今日头条3个判断、3个野心、技术要件6个瓶颈&#xff1b;虚实互联网这个概念元宇宙信徒听起来有些扎心但真实恰当......扎克伯格称Facebook要从社交转型为一家元宇宙公司的专访瞬间刷屏&#xff0c;将去年…

python28 excel读取模块xlrd

安装&#xff1a; pip install xlrd 简单使用&#xff1a; import xlrdbook xlrd.open_workbook(rC:\Users\dinghanhua\Desktop\yqqapi.xlsx) # 打开excel print("the number of sheets:",book.nsheets) # sheet数量 print("sheet_names:",book.sheet_nam…

计算机网络(十四)-CSMA/CD协议

一.CSMA/CD协议 载波监听多点接入/碰撞检测CSMA/CD。 1.1 CS&#xff1a;载波侦听/监听&#xff0c;每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。 1.2 MA&#xff1a;多点接入&#xff0c;表示多计算机以多点接入的方式连接在一根总…

机器人流程自动化(RPA)系统原理及特点

来源&#xff1a;OFweek机器人编者按机器人流程自动化&#xff08;RPA&#xff09;系统是一种应用程序&#xff0c;它通过模仿最终用户在电脑的手动操作方式&#xff0c;提供了另一种方式来使最终用户手动操作流程自动化。可迅速实现业务提效&#xff0c;将重复性劳动进行自动化…

【ARTS】01_12_左耳听风-20190128~20190203

ARTS&#xff1a; Algrothm: leetcode算法题目Review: 阅读并且点评一篇英文技术文章Tip/Techni: 学习一个技术技巧Share: 分享一篇有观点和思考的技术文章Algorithm 【leetcode】824. Goat Latin https://leetcode.com/problems/goat-latin/ 1&#xff09;problem S给出一个句…

计算机网络(十五)-数据链路层-CSMA/CA协议

一.CSMA/CA协议 载波监听多点接入/碰撞避免CSMA/CA 主要在无线局域网中使用。 1.1 工作原理 发送数据前&#xff0c;先检测信道是否空闲。空闲则发出RTS&#xff0c;RTS包括发送端的地址、接收端的地址、下一份数据将持续发送的时间等信息&#xff1b;信道忙则等待。接收端收…

自动驾驶中的机器学习

出品&#xff1a;CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;作者&#xff1a;Denis Chikurtev译者&#xff1a;马超 责编&#xff1a;晋兆雨以下为译文&#xff1a;近年来&#xff0c;自动驾驶技术技术的发展速度非常快。预计达到完全自动驾驶L5的程度是指日可待的…

计算机网络(十六)-轮询访问介质访问控制

介质访问控制 1.几种协议 信道划分介质访问控制(MAC)协议&#xff1a; 基于多路复用技术划分资源。网络负载重&#xff1a;共享信道效率高&#xff0c;且公平。网络负载轻&#xff1a;共享信道效率低。 随机访问MAC协议&#xff1a; 用户根据意愿随机发送信息&#xff0c;…

区分真实模式的两个标准

来源&#xff1a;混沌巡洋舰人类作为模式发现者&#xff0c;处于一触即发的状态&#xff0c;我们可以倾向于在一个系统找到模式&#xff0c;而这个系统可能并不真实存在。由此&#xff0c;问题出现了&#xff0c;宇宙究竟是按照模式运行的&#xff0c;还是人类只是在我们看到的…

hdu5693 D gamehdu 5712 D++ game

题目链接&#xff1a;5693 题目链接&#xff1a;5712 对于这个D game。注意消除之后两遍的序列是可以拼合到一起的&#xff01;我们可以想到有区间DP的做法。我们设\(f[i][j]\)表示区间i,j可以被消除。 显然如果这个区间可以被消除&#xff0c;则操作一定可以被分解成一次消除两…

计算机网络(十七)-局域网

一.局域网 1.1 简称LAN&#xff0c;是指在某一区域内由多台计算机互联成的计算机组&#xff0c;使用广播信道。 1.2 特点 覆盖的地理范围较小&#xff0c;只在一个相对独立的局部范围内联。使用专门铺设的传介质进行联网&#xff0c;数据传输速率高。通信延迟时间短&#xf…

最让青年科学家们困惑的 10 个问题,是什么?

来源&#xff1a;腾讯研究院8 月 1 日&#xff0c;首届“青年科学家 50 论坛”在南方科技大学隆重拉开帷幕&#xff0c;由 100 位“科学探索奖”获奖人发起并投票选出的“十大科学技术问题”&#xff0c;在开幕式中重磅发布。这些问题体现了中国顶尖青年科学家们最前沿的科学探…

Mybatis学习笔记13 - 动态sql之set标签

示例代码&#xff1a; 接口定义&#xff1a; package com.mybatis.dao;import com.mybatis.bean.Employee;public interface EmployeeMapper {public void updateEmp(Employee employee);public void updateEmployee(Employee employee); }mapper定义&#xff1a; <?xml ve…

国内整车厂“造芯”还缺什么?

来源&#xff1a;Imagination Tech2020年下半年以来&#xff0c;汽车行业的“缺芯”问题就一直困扰着全球各大车厂&#xff0c;福特、通用、丰田、现代、沃尔沃等一众车厂相继出现部分工厂或车型停产的情况&#xff0c;而国内也有南北大众和蔚来等车厂受到影响&#xff0c;出现…

set用法

begin()–返回指向第一个元素的迭代器 clear()–清除所有元素 count()–返回某个值元素的个数 empty()–如果集合为空&#xff0c;返回true end()–返回指向最后一个元素的迭代器 equal_range()–返回集合中与给定值相等的上下限的两个迭代器 erase()–删除集合中的元素 …

hadoop单机配置(非分布式)

1.1 环境 使用deepin系统、Hadoop3.1.3和Java环境jdk-8u162-linux-x64.tar.gz。 https://pan.baidu.com/s/1K1U1dypbgJeFvjHIGPcMqQ 提取码: 2vsi 1.2 准备 1.创建用户hadoop&#xff0c;按ctrlaltt打开终端&#xff0c;输入如下命令,并使用/bin/bash作为shell。 $ sudo use…

AlphaFold2爆火背后,人类为什么要死磕蛋白质?

来源&#xff1a; 脑极体近期在生命科学领域&#xff0c;有一则爆炸性的新闻&#xff0c;DeepMind 的Al phaFold2模型&#xff0c;将人类的98.5%的蛋白质&#xff0c;全部预测了一遍&#xff0c;并且做成了数据集免费开源&#xff0c;供科研圈的人使用。开放的数据集不仅包括人…