-1

我是 3D 游戏编程的新手,现在在 Windows 上学习了很多关于 DirectX 和 OpenGL 的知识。但是我想出了一个地形编辑器,但是我无法在网上获得任何开放的教程或想法。

有没有好的教程或开源代码来学习这个?

简单的就好,我只是想知道如何升高或降低地形,或者在地图上放一棵树,就像下面的视频。

喜欢下面的视频:http ://www.youtube.com/watch?v=oaAN4zSkY24

4

1 回答 1

6

首先我想说,如果您没有在 OpenGL 和 DirectX 之间进行选择,那么这样做是个好主意。我的选择是使用 OpenGL,因为 OpenGL 是跨平台的,适用于 Windows、Linux、Solaris、Mac、智能手机等。DirectX 仅支持 Windows 机器。

我不能给你教程或开源代码,因为这有点大,即使只是一个“简单的地形编辑器”,那仍然是一个非常复杂的东西。不过,我可以给你的是一些你需要了解和阅读的要点,如果你知道这些,那么你将能够创建一个“地形编辑器”。

您需要能够做到的点。

  • VBO的
  • 着色器
  • 多重纹理
  • 拾取/射线拾取/3D拾取

VBO的

VBO 或 Vertex Buffer Object是一种将顶点数据(位置、法线、纹理坐标、颜色等)上传到 GPU 本身的方法,这可以实现非常快速的渲染,这也是目前最好的渲染方式。请注意,这是一个 OpenGL 功能,尽管 DirectX 可能也有类似的功能。

着色器和多重纹理

着色器用于对所有图元的顶点和片段进行着色/着色。OpenGL 使用GLSL而 DirectX 使用HLSL,它们都非常相似。

多纹理基本上是绑定多个纹理,然后通过着色器计算用于当前顶点/片段的纹理。这样,您将能够实现您在视频中看到的内容。

拾取/射线拾取/3D拾取

拾取是从相机(3D 空间)或鼠标(2D 屏幕空间)“拍摄”射线的过程,然后每次射线撞击/碰撞某些东西时,这些东西都会返回给用户。在您的情况下,您将使用鼠标(2D 屏幕空间)创建一个拾取射线,然后在射线击中的地形点处,即我们想要更改地形的点。

如果您对 Picking 一无所知,请尝试使用 Google 搜索,我发现对于 3D 相关的事物也很难找到好的结果,因此如果您愿意,可以阅读我前段时间在 Stack Overflow 上发布的问题(单击在这里查看帖子),帖子涵盖了 3D 相机拾取和 2D 屏幕空间拾取,并且有代码,我也将我的最终代码添加到帖子本身。

额外的

如果你结合所有这些东西,你将能够创建一个“地形编辑器”。

我解释过的一些事情可能与 OpenGL 相关,但 DirectX 中肯定有一些事情可以执行相同的事情。

于 2013-09-01T12:28:12.560 回答