为游戏生成随机背景

本文关键字:随机 背景 游戏 | 更新日期: 2023-09-27 18:28:27

我用OpenGL(OpenTK)和C#开发了一个2D游戏。我喜欢有一个由星星和雾组成的随机背景。

在我投影的中间是一艘星际飞船。星舰可以向任何方向移动。背景也将在任何方向上动态生成。我的问题是表现。我正在渲染48000个顶点(6000个带有.png纹理的矩形)地区因为我的星舰在移动,这个区域会越来越大。我的电脑:CPU 4核心x 2300mhz,GeForce 9800 GTX+及其静态运行缓慢。这正常吗?

我脑海中有一个解决方案。渲染区域并为背景纹理创建位图。

也许你有更好的解决方案。或者你可以告诉我缺点动态地创建背景纹理。

为游戏生成随机背景

让您的视场为4x4。

所以你应该渲染一张由1x1的图片组成的5x5图片,并将其放在屏幕中央。

然后,当你的星舰移动时,你应该生成一张1x5的图片(5张1x1大小的小图片),并将其放在你的飞船前面,你应该从另一个方向删除一张图片。若飞船向左移动,你们应该在左边放置一个新的空间,然后从右边移除一个空间。等等

如果你只是想要一个滚动的纹理背景,你可以根据星舰的位置修改纹理坐标。为了让它看起来更独特,你可以使用一些透明纹理并将它们分层,这会给你带来视差效果。

至于星星,我会用GL_POINTS。一旦星星从可视屏幕的边缘"掉下来",就让它出现在另一边。再一次,你可以以不同的速率拥有更多的恒星,因为正如我们所知,恒星之间的距离并不相同。

很抱歉,我不能说得更具体,但我正在工作。