在不使用图形API的情况下编程3D游戏

时间:2012-06-11 20:15:26

标签: graphics 3d

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

问题是,我不知道从哪里开始。我下载了Doom源代码,但它有点过头了。虽然我编程了一点,但图形问题远非我的深度。

如果有人能提供能够帮助我实现目标的链接或代码,我将非常感激。

2 个答案:

答案 0 :(得分:3)

听起来像一个激动人心的项目。我在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形状(例如,你不会在Doom中找到一个可以走下去的桥梁)。 / p>

答案 1 :(得分:0)

我有Computer Graphics: Principles and Practice in C的第二版,它使用SRGP(简单光栅图形编程)和SIGGRAPH这是一个环绕式SRGP,如果你查看有关图形研究的文章和论文,你会发现两者都是这些库经常使用,它们比你提到的API更直接,更低级。我很难找到它们,所以如果你这样做,请给出一个链接。请注意,第三版是在WPF中,所以我不能保证它的实用性,我不知道第二版是否仍在印刷中,但是我发现了很多对该书的引用,并且它有{{3 }}

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

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