正如标题所说,我想编写一个3D游戏(可能是BattleZone克隆),但不要使用OpenGL,DirectX等API。问题的核心是,我只想学习如何在屏幕上绘制基本的3D形状并对其进行操作。不在乎它是否看起来像废话。我以前使用OpenGL来实现类似的目的,但实际上没有了解这些主题。
问题是,我不知道从哪里开始。我下载了Doom源代码,但它有点超出我的头脑。虽然我已经编程了一点,但图形问题远远超出了我的深度。
如果有人可以提供链接或代码(任何语言)来帮助我实现我的目的,我将不胜感激。
听起来像是一个令人兴奋的项目。 我在90年代后期做了类似的事情。 在OpenGL和DirectX流行之前,有很多关于这个主题的好书。
从根本上说,您必须学习如何
- 表示 3D 几何图形
- 变换该几何图形(平移和旋转) 将该
- 几何图形投影到 2D 屏幕上。
这些主要主题中的每一个都有许多子主题(例如,可以从多个多边形构造复杂对象。 您可能希望将多边形限制为仅由三角形构造,或支持其他多边形。 您可能希望加载常见的模型格式,例如 .obj 文件,以便您可以使用现成的工具创建模型)。
这些主题太宽泛了,无法在这里详细回答。 整本书都是关于这个主题的,包括
3D游戏编程的黑色艺术(书籍,令人惊讶的是仍然可用)
要很好地介绍一般主题,请查看:
http://en.wikipedia.org/wiki/3D_projection
http://en.wikipedia.org/wiki/Orthographic_projection
http://en.wikipedia.org/wiki/Transformation_matrix#Perspective_projection
你已经看过的《毁灭战士》使用了一种称为高度场渲染的特殊优化,并且不允许渲染任意的 3D 形状(例如,你不会在《毁灭战士》中找到可以行走的桥梁)。
我有第二版的《计算机图形学:C 原理与实践》,它使用 SRGP(简单光栅图形编程)和 SIGGRAPH,这是一个环绕式 SRGP,如果你查找有关图形研究的文章和论文,你会发现这两个库都被大量使用,它们比你提到的 API 更直接、更底层。我很难找到它们,所以如果你这样做,请提供一个链接。请注意,第三版是WPF的,所以我不能保证它的有用性,我不知道第二版是否仍在印刷,但我发现了许多关于这本书的参考资料,它在维基百科中有自己的页面。
另一种解决方案是 Win32 API,它在渲染方面也没有提供太多,但在窗口上绘制点和线是微不足道的。我已经写了一些教程,但我没有介绍绘制像素和线条,所以它们只有在设置窗口的基础知识方面遇到问题时才有用。请注意,它不适用于实时渲染,因此可能会变慢。
最后,您可以了解 X11 编程,这是大多数带有 GUI 的现代操作系统的基础。我还没有找到Windows的库,但我也没有花太多时间在上面。我知道它适用于CIGWIN和Linux,我相信看看图形的核心会非常有趣,因为你已经在3D图形的引擎盖下寻找。