3D游戏地图的存储和处理方式


9

我是一名程序员,但尚未开发任何游戏。

我玩过各种3D游戏,并且总是想知道如何存储和渲染领域地图。

我知道某些加速卡是必不可少的硬件,但是如何在没有屏幕闪烁的情况下准确地更改视图。

您是否有任何在线材料可以帮助我理解这一点。

谢谢

Answers:


9

通常,世界是由许多三角形组成的地图,而地图是这些三角形以及每个顶点在世界上的位置的列表。绘制它们的过程是:

  • 设置“相机”的位置-如果您站在世界上,那么这就是你在世界上的位置
  • 将三角形顶点转换为“相机空间”
  • 将三角形从“相机空间”转换为“屏幕空间”-这是发生透视效果的地方(远处的物体较小)。三角形此时变为2D。
  • 在隐藏的屏幕上绘制2D三角形。
  • 绘制完所有三角形后,向播放器显示屏幕。

最后一步通常与监视器的帧频有关,因此,显示隐藏屏幕的过程是在v-blank间隔内完成的-从阴极射线管监视器派生的概念允许阴极射线束从右下移动到顶部左,这需要迅速但不是瞬间地改变射线管背面偏转线圈上的电压。

这是一个非常简单的方法。为了获得高性能,您需要添加诸如隐藏表面去除,咬合,可见集合确定等内容。决定绘制什么内容涉及很多算法。

另外,我说过世界是由三角形组成的,但这种方式可能不会存储在磁盘上。通常,绘制到屏幕上的三角形是在运行时根据高阶图元(例如高度图,样条线,镶嵌,几何图元(例如,球体,盒子等)等)定义的。

不需要专用的硬件-许多早期的3D游戏都是通过软件(甚至在没有FPU的8位CPU上)完成的。它只是使它变得更快,更容易。

这样简单的问题。没有简单的答案。


0

由于双缓冲,视图在屏幕上没有任何闪烁地更改,在后缓冲区上处理所有数据,然后在处理完所有数据后在前缓冲区上交换它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.