graphics - 在不使用图形 API 的情况下编写 3d 游戏

标签 graphics 3d

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

问题是,我不知道从哪里开始。我下载了 Doom 源代码,但这有点超出我的理解。尽管我已经编写了一些程序,但图形问题远远超出了我的理解范围。

如果有人可以提供可以帮助我实现目标的链接或代码(任何语言),我将不胜感激。

最佳答案

听起来像是一个令人兴奋的项目。我在 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

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

    关于graphics - 在不使用图形 API 的情况下编写 3d 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986928/

    相关文章:

    graphics - 谁能推荐一种语言来模仿/重拍原始的俄勒冈小道?

    Matlab 3D View 矩阵

    java - 使用 JOGL 进行全屏 Swing

    iOS drawRect : is it possible to clear the Graphics Context?

    c++ - 从文件加载 Bullet Physics 网格

    c# - 使用 devDept Eyeshot 查找两个 3D 形状之间的差异

    math - 我如何找到一个点在平面上的正交投影

    matlab - 如何在 matlab 中为曲面赋值?

    java - 为什么矩形跳跃的高度会变化?

    java - 如何生成与 JLabel 标签相同的文本图像?