游戏引擎
Nightmare
这个作者很懒,什么都没留下…
展开
-
不朽的SceneGraph
不朽的SceneGraphSceneGraph自3D技术出现伊始就有着教主的地位,而今更是像基督教一样成功传销而且深入人心。在对不朽的SceneGraph顶礼膜拜的时候,有多少人想过,它早已是一具干尸。这里我们先不管广义上的SceneGraph,就说我们常见的狭义SceneGraph,多数常见3D引擎都有的,如Ogre, Irrlicht, OpenSG等, 可能还有你手中的引擎。一般都原创 2006-09-03 13:09:00 · 8301 阅读 · 3 评论 -
魔兽纹理的一图两用
近来尝试导入魔兽世界的模型,遇到了不少意料之外的事情。比如.m2的顶点竟然是预乘了bone offset矩阵的,让我花了不少时间在找这个矩阵上,结果它根本没有,不需要。最大的意料之外是它一张纹理两种用途,它在纹理的全透明部分又放置了其它纹理内容。原理上很好理解,反正RGBA四个通道是独立的,当A等于0时,也就是完全透明时,RGB的值就没意义了;所以这些RGB完全可以用来存些别的值,只要忽略原创 2009-10-04 19:32:00 · 2191 阅读 · 0 评论 -
NV说“精简GL能提高性能和稳定性,那是神话”
记得那天看NV的发布GL 3.1驱动的PPT,里面说“精简GL能提高性能和稳定性,那是神话”,顿时吓了一跳,是谁这么多年主推改革来着,难道NV自己反了?接着往下看,终于明白出点道道来。论性能,NV早就提供了direct state access等扩展,领先于GL标准呢,就算支持了GL 3.1也不会比用它的扩展强。论稳定性,NV的驱动一直是口碑最好的,确实没啥好提高的。不过,这话传统CAD厂原创 2009-11-14 23:01:00 · 1712 阅读 · 0 评论 -
通过脚本自由设计游戏UI风格
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE原创 2010-02-24 20:59:00 · 2965 阅读 · 0 评论 -
LingEngine图形部分架构图
如图: 注:1. 图中实心三角形箭头应为空心三角形箭头。2. SceneSystem和RenderContext都是可以创建多个实例的。3. 每个Actor子类类型对应有一个ActorResource类型,用来管理共享mesh、动画数据等资源。 另:无奖问答,这个结构受了哪些引擎的影响?原创 2010-04-17 12:32:00 · 3990 阅读 · 3 评论 -
LingEngine——实验轻量级游戏引擎(更新至0.71)
【为什么要做这个游戏引擎】为了挣钱?除了几个出名的引擎外,其他的引擎是很难卖出去的。即使能卖出去,一般也入不敷出,因为那些成功的商业引擎销量大、售价低,你无法卖得比他们贵。而且,没有成功的游戏验证过,就不是好引擎。为了做个更牛叉的?抱歉,没那个本事。国内商业引擎落后国外两三代,参加主流开源项目的可能水平要高些,但全球主流开源项目也是落后顶级商业引擎一两代的,更何原创 2010-04-04 15:57:00 · 8323 阅读 · 12 评论 -
小谈CAD制图和游戏3D的区别
<br />小谈CAD制图和游戏3D的区别<br /><br />并不是所有人学3D都是为了做游戏,但如今3D学习资料大多是游戏背景的情况下,会让不少走CAD路线的人走错路。<br /><br />游戏领域,3D向着实时电影级效果发展,强调视觉效果,为了获得足够的运行时性能,要把尽可能多的计算放到制作阶段预处理。而CAD领域,画线能力远比视觉效果重要,模型往往需要实时编辑,对单纯的三角面的吞吐量需求很高,需要在大量的线和面中作精准的选取操作,而对硬件加速需求上,OpenGL 1.2的功能基本就够了。原创 2010-09-25 11:09:00 · 4708 阅读 · 0 评论 -
如何在渲染到反射贴图时避免改变CullMode
<br /> 通常在渲染到反射贴图时需要翻转CullMode,因为视矩阵被镜像了。但我们知道,减少状态切换是提高3D管线效率的重要优化。更重要的是,渲染到反射贴图涉及到引擎中会用到的大部分Effect,因为他们都需要被用来渲染到反射贴图,这意味着要在较大的范围内考虑和支持翻转CullMode,将一个效果的复杂度扩散到引擎层面,增加了引擎的复杂度。<br /><br /> 如果能避免翻转CullMode,则一来简化架构二来提高效率。那么如何做到呢?其实也简单,之所以镜像视矩阵会导致需要翻转Cu原创 2011-02-07 12:22:00 · 2376 阅读 · 0 评论 -
D3D10移植感想
<br /> 折腾了许久,今天终于完成到D3D10的移植了。总体感觉不错,性能提高了不少。基本上,有一种再也不想回到混乱的D3D9时代的感觉。新的API很精简,没有冗余,操作和性能的关系很明了,完全贴合硬件。<br /><br /> 当然,这也意味着,它和D3D8、9的设计方向完全不同,而是一套偏向底层的API。早年,D3D API一直饱受争议,PC开发者大多认为它太底层太难用,而少数来自游戏主机开发背景的人则反而认为它抽象层次太高阻碍优化(游戏主机的API要更加底层)。当然,PC开发者的意原创 2011-02-07 15:36:00 · 3796 阅读 · 6 评论 -
游戏内容处理工具体系概貌
<br />原创 2011-05-26 22:09:00 · 2228 阅读 · 2 评论 -
设计日志四:保留模式的逐渐完善
设计日志四:保留模式的逐渐完善到目前为止,选择保留模式的设计在3D场景和UI渲染上的表现都比较理想。虽然其中也有一些问题,但通过参考其他图形引擎、游戏引擎,以及UI框架如WPF,似乎主要的问题都已经有比较好的解决方案。另:保留模式其实应该翻译成“保持模式”,叫保留模式容易理解成“reserved mode”而不是“retained mode”。【资源共享】这个大家都比较原创 2009-07-17 18:15:00 · 2080 阅读 · 0 评论 -
矩阵和向量的乘法顺序
矩阵和向量的乘法顺序似乎经常有人被这个问题转晕。向量有两种表达形式,行向量和列向量,对应的矩阵也有行矩阵和列矩阵。采用哪种形式和左右手系无关。行矩阵: 三个轴向量为前三行,最后一行为位移变换 连乘时从左到右接合,左边的变换先应用 变换向量时为vector * matrix列矩阵: 三个轴向量为前三列,最后一列为位移变换 连乘时从原创 2009-03-12 13:04:00 · 13033 阅读 · 4 评论 -
设计日志三:3D游戏内的GUI系统
设计日志三:3D游戏内的GUI系统3D游戏内往往无法使用操作系统的标准GUI,主要是由于GDI和3D是完全不同的加速模块处理的,如果把它们放在一起,会有闪烁、其中一个不可见等不确定的结果。另一方面,也有游戏程序普遍使用不同于系统的个性GUI的原因。游戏内的GUI可以做得简单、也可以做得复杂,但无论如何,它做起来总是比预想的复杂。因为复杂,所以难以做得完备,大家往往更期望去利用现有的完备的系统,其中原创 2009-03-14 16:17:00 · 3740 阅读 · 0 评论 -
游戏Entity设计不完全整理
游戏Entity设计不完全整理2006-11-26在游戏引擎中,Entity通常被翻译成实体,也常用诸如GameObject、Actor、SimulationObject、Unit、Character等名字。相比于对图像声音引擎的热情,Entity层多年来一直备受冷遇,但最近几年随着大型游戏的发展,Entity层设计的重要性已经达到和图像声音的同等水平,而且已经出现了多种通用型Entity原创 2006-11-26 15:09:00 · 8426 阅读 · 8 评论 -
为什么游戏偏爱D3D
为什么游戏偏爱D3D如今游戏领域已经是D3D的天下,但还是有人不断搬出10年前John Carmack的话批驳D3D,尽管Carmack后来多次声明D3D已经有了很大改观,以前的批评已经不再适用。如今公认的评价是D3D和OpenGL在功能、速度和易用性上基本等价。但这无法解释为什么游戏开发商倒向D3D。不少人说是因为游戏开发以前是用DirectDraw的,转到同一风格的D3D比较容易。但两者的原创 2007-03-16 13:46:00 · 4107 阅读 · 5 评论 -
XNA与MDX,无人知晓的路线图
XNA与MDX,无人知晓的路线图XNA的下一版本已经预期在4月发布,而对.NET上DX的前途仍是疑云重重。随着MDX1.1的冻结,人们期望的MDX2/.NET 2.0到MDX10/D3D10的路线图已随着MDX2项目的取消而湮灭。显然,微软不希望MDX抢了XNA计划的风头,而XNA计划的重头戏就是XBox360。MDX2被重新定位,改造成了XNA Framework,目标锁死XBox开发。这样原创 2007-03-27 16:00:00 · 3104 阅读 · 1 评论 -
左手系和右手系转换最最最简便方法
左手系和右手系转换最最最简便方法就是交换Y、Z轴,只需一个矩阵变换:1 0 0 00 0 1 00 1 0 00 0 0 1不需翻转Z轴,不需转置矩阵,不需修改缠绕方向。既可用于转换模型坐标,又可用于世界矩阵、视矩阵。实在是模型转换、移植集成之必备良方。原创 2007-07-03 15:26:00 · 11427 阅读 · 2 评论 -
为DrawPrimitiveUP(DrawUserPrimitive)洗冤
为DrawPrimitiveUP(DrawUserPrimitive)洗冤最初只因DXSDK文档里说了句推荐用Vertex Buffer而不要用DrawPrimitiveUP(C#里叫DrawUserPrimitive),DrawPrimitiveUP很快被描绘成传说中的瘟疫,人人都在警告不要接近它。估计有人会想过,既然DrawPrimitiveUP这么不好,为什么还要提供它,难道只是为了显示原创 2007-07-10 15:40:00 · 5201 阅读 · 1 评论 -
DX9窗口模式下的截图
DX9窗口模式下的截图DX9里保存截图本来应该是件很简单的事,这有啥好说的呢?直接使用IDirect3DDevice::GetFrontBufferData()。可是在窗口模式下,这个front buffer就是桌面,就是说上面的其他窗口的内容也会被截进去。那么似乎只能读back buffer了,但是注意了,直接可Lock可读的back buffer是要在创建时指明可读的,并且会持续影响性能。原创 2007-07-25 15:21:00 · 6545 阅读 · 0 评论 -
低成本游戏开发SDK状态速查
低成本游戏开发SDK状态速查【DirectX】2008-12-19 更新Windows上的主要游戏开发SDK。DX10及之后的版本只能在Vista系统上使用。DX9仍被微软定位为主流版本。DirectInput, DirectMusic, DirectPlay, Direct3D RM, DirectAnimation已经废弃。DirectSound很可能将被明年推出的XAudio2替代。Di原创 2007-08-07 13:52:00 · 9954 阅读 · 5 评论 -
John Carmack再现身 说说DX10
John Carmack再现身 说说DX10偶然间看到一篇今年一月份Game Informer对John Carmack(Quake引擎作者,还没忘吧)的采访的报道。这位饱受瞻仰的同志竟然已经在很happy地用DX9开发XBox游戏了。“DX9 is really quite a good API level … Microsoft has done a very, very good job原创 2007-06-01 17:12:00 · 2296 阅读 · 0 评论 -
OpenGL 3.0,等得花儿都谢了
2007年8月8日,OpenGL ARB宣布9月份将公布OpenGL 3.0规范,也就是彻底解决老API和当今硬件功能脱节问题的全新API体系,也是2001年曾经本来期望OpenGL 2.0规范要做而没能做的事情。然而如今已是2008年5月,一点音讯都没有。将OpenGL交给Khronos Group似乎并没能拯救OpenGL ARB。估计新方案是被否决了,如此也好。从07年底透漏的新API信息来原创 2008-05-09 10:21:00 · 1688 阅读 · 0 评论 -
设计日志一:保留模式的3D图形引擎
设计日志一:保留模式的3D图形引擎一直以来,我一直坚信立即模式(Immediate Mode)是制作图形引擎的正确方式。什么时候该画什么就调用相关的函数画什么,这简直就是天经地义的。第一次听说保留模式(Retained Mode),还是在开始学DirectX的时候,大概是DirectX 5.0吧。那时DirectX有个保留模式,只要创建对象添加到场景里,之后场景会自己绘制。不过这个保留模式API非原创 2009-03-07 21:22:00 · 4145 阅读 · 1 评论 -
OpenGL驱动质量的事实现状(精简翻译版)
原文:http://richg42.blogspot.com/2014/05/the-truth-on-opengl-driver-quality.html一、厂商A:为大多数开发者所使用,功能最全,测试得最好,几乎是事实上的标准驱动。其驱动性能很高,而且其设计偏向于实际中管用,而不是GL标准的纯粹性。大多数你所能听到的GL的好话,比如可以和D3D12/Mantle抗衡,源自使用这家驱翻译 2014-05-14 22:10:21 · 4257 阅读 · 0 评论