为了理论(和一般理解),
我想在一份适度详尽的清单中了解为了创造一个现代化的所有必须做的事情。 3D游戏引擎(来自编码员的观点)
我似乎很难在其他任何地方找到这些信息,所以我认为你们堆栈溢出的人将拥有我所寻求的知识。
对于"适度详尽的",我指的是对这种引擎的设计阶段的一般解释,例如二进制空间分区,然后实际实现这种引擎,以及使用软件(如果可以解释除BSP以外的渲染方法,将会很有帮助。)
我不想制作3D引擎,但只是了解制作3D引擎所需的大量工作量。
答案 0 :(得分:1)
专注于3D渲染:
二进制空间分区与3d渲染的许多元素一样,是可选的。在这种情况下,它是一种优化,允许计算机通过剪切不可见的部分来减少渲染场景的工作。
从本质上讲,渲染只是一个五阶段过程。首先,生成三角形列表。接下来,使用矩阵乘法将三角形从3空间转换为2空间。接下来,用像素和元信息填充三角形。最后,使用元信息单独对像素进行着色。最后,像素被绘制到屏幕上。
这些步骤中的大多数部分或全部由图形卡完成,这意味着程序员的工作是告诉卡执行哪个步骤并提供输入数据。
然而,这款裸骨引擎甚至不接近现代引擎。现代引擎将充满优化,如二进制空间分区,网格简化,后台加载和纹理压缩。它们还将充满特殊功能,如阴影,镜子,雾和粒子效果。
现代引擎必须能够加载和解释纹理和网格,并且在某些情况下,可以在运行时进行变形和修改。最常见的例子是在关键帧之间进行插值。
引擎可能需要与游戏逻辑模块交互,以便重用数据进行冲突检测。碰撞检测是确定子弹是否会撞击某物以及使墙壁和地板成为现实的东西。