最为关键的Shader系统的代码暂时没有找到

最为关键的Shader系统的代码暂时没有找到

所以,从技术上讲,从技术上讲游戏引擎设计,我在这里没有违反任何法律。 但如果你想操我,那就来吧,我不在乎。 )

(另:引用时请注明出处/xjyhust,并声明:所有信息均来自网络,如果您对文章内容有任何意见,请发邮件给我:;否则请介意,我只是来买点酱汁。)

gamebryo 有很多项目,大致组织如下:

核心库:CoreLib游戏引擎设计,引擎的核心运行时,包含以下项目:

image

这些模块的功能只要看名字就可以知道。 NiDXRenderer实际上是NiMain中渲染类的实现。 看里面的宏定义,我们可以看出gamebryo实际上是为了支持ps3而设计的(至少是这样),但是我没有找到ps3的渲染器,可能是因为我使用的版本是win32 sdk。

应用程序和辅助功能库:

image

这个项目是对核心的辅助,包括:制作游戏编辑器时需要的一些基础组件,内置可视化的性能监控工具等,似乎还支持输出日志到网页,非常直观。

还有一些项目我这里打不开,因为我没有拿到完整的代码,只有核心库代码完整。 最关键的Shader系统的代码还没有找到(也许只是项目没有安装,但是代码可能是有的)。 不应该有编辑器代码。 。 。 遗憾。 。 。

image

总体来说,gamebryo的框架设计也是一层层包裹起来的(大型程序应该是这样的)。 因为是跨平台的引擎设计,所以感觉有很多地方用到了简单的宏定义。 当然游戏开发素材,这样效率更高,但是后期维护和修改可能会比较麻烦。 跨平台更方便的是大规模替换,比如渲染器。 Xbox、PS3 和 Wii 上的渲染器结构有很大不同。 当然,继承是实现功能差异的最佳选择。 对于基础部分来说,因为没有太大的区别,宏定义是更好的选择,而且效率肯定更高。

但有一件事是ps3和xbox上的内存太小了。 我不知道这个跨平台引擎是如何设计内存管理系统和资源管理系统的。 这与PC上的有很大不同。 使用继承可能更简单,如:memsysPS3、memsysXB。 。 。 我完全没有非PC平台上的开发经验,但是我感觉这些平台上的内存管理策略与PC有很大不同。 id tech 5的主要技术亮点也是这样的:他们的引擎可以同时运行三个平台游戏角色,而无需对艺术家进行任何修改(零增量),这是令人惊叹的。 Unreal似乎无法做到这一点,有些关卡还需要修改(比如纹理大小、脚本大小……)。

我将仔细查看我刚刚获得的源代码。 毕竟我手头的商业代码中,这个是最正式的。 (除了 eMule 和 Google torrent 搜索之外,还有谁知道找到这些资源的其他方法...;))

文章来源:https://blog.csdn.net/niitlcj/archive/2008/04/15/2981840.aspx