onl*_*227 -1 opengl directx terrain game-engine heightmap
我是3D游戏编程的新手,现在正在Windows上研究DirectX和OpenGL.但我想出了一个地形编辑器,但我无法在网上获得任何开放的教程或想法.
有没有一个很好的教程或开源代码来学习这个?
简单的一个很好,我只是想知道如何提升或降低地形,或在地图上放一棵树,如下面的视频.
首先,我想说如果你没有在OpenGL和DirectX之间进行选择,那么这样做是个好主意.我选择使用OpenGL,因为OpenGL是跨平台的,适用于Windows,Linux,Solaris,Mac,智能手机等.DirectX仅支持Windows机器.
我不能给你一个教程或开源代码,因为这有点大,即使只是一个"简单的地形编辑器",这仍然是一个非常复杂的事情.虽然,我能给你的是,你需要了解和阅读的一些要点,如果你知道这些,那么你将能够创建一个"地形编辑器".
你需要能够做的几点.
一个VBO或顶点缓冲区对象,是顶点数据(位置,法线,纹理坐标,颜色等)上传至GPU本身的一种方式,这使得真正的快速渲染,这也是目前呈现的最佳方式.请注意,这是一个OpenGL功能,但DirectX也可能具有这样的功能.
着色器用于着色/着色所有基元的顶点和片段.OpenGL使用GLSL,其中DirectX使用HLSL,它们都非常相似.
多纹理基本上是绑定多个纹理的位置,然后通过着色器计算用于当前顶点/片段的纹理.通过这种方式,您将能够实现您在视频中看到的内容.
拾取是从相机(3D空间)或鼠标(2D屏幕空间)"拍摄"光线的过程,然后每次光线撞击/碰撞某些东西将被返回给用户.在这种情况下,您将使用鼠标(2D屏幕空间)创建拾取光线,然后在光线击中地形上的点,即我们想要更改地形的点.
如果您对Picking一无所知然后尝试谷歌搜索,我发现很难找到3D相关内容的好结果,所以如果你想要你可以阅读我前段时间在Stack Overflow上发布的一个问题(点击在这里看帖子),帖子涵盖3D相机拣选和2D屏幕空间拣选,并且有代码,我也将我的最终代码添加到帖子本身.
如果你结合所有这些东西,你将能够创建一个"地形编辑器".
我解释过的一些事情可能与OpenGL有关,但DirectX确实可以执行相同类型的事情.
归档时间: |
|
查看次数: |
1792 次 |
最近记录: |