【问题标题】:Programming a 3d game without the use of a graphics API在不使用图形 API 的情况下编写 3d 游戏
【发布时间】:2015-06-03 18:57:38
【问题描述】:

正如标题所说,我想编写一个 3d 游戏(可能是 BattleZone 克隆),但不使用 OpenGL、DirectX 等 API。问题的核心是,我只想学习如何在屏幕上绘制基本的 3d 形状并对其进行操作。不要在意它是否看起来像垃圾。我以前用OpenGL来达到类似的目的,但真的没有了解这些主题。

问题是,我不知道从哪里开始。我下载了 Doom 源代码,但这有点超出我的想象。虽然我已经编程了一点,但图形问题非常超出我的深度。

如果有人能提供链接或代码(任何语言),我将不胜感激。

【问题讨论】:

标签: graphics 3d


【解决方案1】:

听起来是一个令人兴奋的项目。我在 90 年代后期做过类似的事情。在 OpenGL 和 DirectX 流行之前,有大量关于这个主题的好书。

从根本上说,你必须学习如何

  • 表示 3D 几何体
  • 转换几何图形(平移和旋转)
  • 将该几何图形投影到 2D 屏幕上。

这些主要主题中的每一个都有许多子主题(例如,复杂的对象可以由多个多边形构成。您可能希望将多边形限制为仅由三角形构成,或支持其他多边形。您可能希望加载常见的模型格式,例如 .obj 文件,以便您可以使用现成的工具创建模型)。

主题过于广泛,无法在此处详细回答。整本书都是关于这个主题的,包括

Black Art of 3D Game Programming(书,令人惊讶的是仍然可用)

有关一般主题的良好介绍,请查看:

http://en.wikipedia.org/wiki/3D_projection

http://en.wikipedia.org/wiki/Orthographic_projection

http://en.wikipedia.org/wiki/Transformation_matrix#Perspective_projection

您已经看过的《毁灭战士》使用了一种名为 heightfield rendering 的特殊优化,并且不允许渲染任意 3D 形状(例如,在《毁灭战士》中,您不会找到可以在下面行走的桥)。

【讨论】:

    【解决方案2】:

    我有Computer Graphics: Principles and Practice in C 的第二版,它使用 SRGP(简单光栅图形编程)和 SIGGRAPH,它是一个环绕 SRGP,如果您查找有关图形研究的文章和论文,您会发现这两个库被大量使用,并且它们比您提到的API更直接和低级。我很难找到它们,所以如果你找到了,请给一个链接。请注意,第三版是 WPF 中的,所以我不能保证它的实用性,我不知道第二版是否还在印刷中,但我找到了很多关于这本书的参考资料,它有 it's own page in Wikipedia .

    另一个解决方案是 Win32 API,它在渲染方面也没有提供太多,但在窗口上绘制点和线是微不足道的。我已经写了一些关于它的教程,但我没有涉及绘制像素和线条,所以它们只有在你对设置窗口的基础知识有困难时才有用。请注意,它不适用于实时渲染,因此可能会变慢。

    最后,您可以了解 X11 编程,这是大多数带有 GUI 的现代操作系统的基础。我还没有找到适用于 Windows 的库,但我也没有在它上面投入太多时间。我知道它一般可用于 CIGWIN 和 Linux,而且我相信看看图形的核心会非常有趣,因为你已经在 3D 图形的底层了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 2011-03-22
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多