目前我正在做一个小项目,只是为了一点乐趣。它是一个使用 OpenGL 的 C++、WinAPI 应用程序。
我希望它会变成一个在六边形网格上玩的 RTS 游戏,当我完成基本游戏引擎后,我计划进一步扩展它。
目前,我的应用程序包含一个包含顶点和高度图信息的 VBO。高度图是使用中点位移算法(菱形)生成的。
为了实现六边形网格,我采用了这里解释的想法。它向下移动正常网格的奇数行,以允许相对容易地渲染六边形而没有太多进一步的复杂性(我希望)。
几天后它开始聚集在一起,我添加了鼠标选择,这是通过以独特的颜色渲染网格中的每个十六进制来实现的,然后在此 FBO 中对给定的鼠标位置进行采样以识别所选的 ID单元格(在下面屏幕截图的右上角可见)。
在我项目的下一阶段,我想看看生成更多“可玩”的地形。对我来说,这意味着每个六边形的形状应该比上图中看到的更规则。
所以终于说到我的意思了,有没有:
- 一种在我当前的方法中平滑或调整顶点的方法,它将六边形的所有点都带到一个平面上(共面)。
编辑:对于任何寻找有关如何使点共面的信息的人来说,这是一个很好的解释。
- 一种更好的程序地形生成方法,可以更好地控制这类事情。
- 一种以不同方式表示我的顶点信息的方法,允许这样做。
需要明确的是,我并不是想实现一个带有凸起边缘或平台的平面六角网格(如下所示)。
)
我希望所有几何图形都加入并引导到下一个位。
我希望实现与我现在所拥有的类似的东西(相对较好的起伏山丘和地形),但具有更可控的高原。这给了我稍后关闭区域(无法播放的瓷砖)的灵活性,如果需要,我可以在其中添加更高细节的网格。
欢迎任何反馈,我将其用作学习练习,所以请 - 欢迎所有评论!