2015-08-16 102 views
1

为了理论(和一般的理解),我想了解一个为了创建一个“现代”3D游戏引擎必须做的所有事情的中度详尽的列表(从编码器的透视)努力制作3D游戏引擎?

我似乎很难在其他任何地方找到这个信息,所以我认为你们在Stack overflow的时候会有我所寻求的知识。在“中等穷举”方面,我指的是诸如二进制空间分区等设计阶段的一般性解释,然后是这种引擎的实际实现以及软件的使用(它如果可以解释除BSP之外的其他渲染方法,则会有所帮助)。

我不想做一个3D引擎,而是简单地理解需要什么样的努力绝对数量,使之一。

+0

你问一个很大的答案。这个网站是针对特定问题的。一些姊妹站点可能更适合理论问题。简答:它有很大的不同。射手?战略?难题?基本部分是:硬件渲染引擎,游戏逻辑模块,用户界面,声音引擎,网络模块(仅限多人游戏),艺术家服务和编辑。支持软件各不相同。 – warren

+0

好的,我很好,简短的答案。 – Craig

回答

1

关注3D渲染独自:

二进制空间分割,如3D渲染的诸多元素,是可选的。在这种情况下,这是一种优化,通过剪切不可见部分,使计算机可以减少渲染场景的工作量。

在其核心,渲染只是一个五阶段的过程。首先,生成一个三角形列表。接下来,使用矩阵乘法将三角形从三维空间转换为二维空间。接下来,用像素和元信息填充三角形。最后,使用元信息分别对像素进行着色。最后额外的,像素被绘制到屏幕上。

其中大部分步骤都是通过图形卡部分或全部完成的,这意味着程序员的工作是告诉卡片执行哪一步并提供输入数据。

但是,这个裸骨头发动机甚至不接近现代发动机。现代引擎将充满优化,如二元空间分割,网格简化,背景加载和纹理压缩。他们也将充满特殊功能,如阴影,镜子,雾和粒子效果。

现代发动机必须能够加载和解释纹理和网格,并在某些情况下,变形,并在运行时修改两者。最常见的例子是在关键帧之间进行插值。

发动机可能需要以重新用于碰撞检测数据与游戏逻辑模块进行交互。碰撞检测是决定子弹是否碰到某物的东西,也是使得墙壁和地板真实的东西。

+0

这就是我想要的。谢谢 – Craig