c++ - 如何使用 C++ 在 SFML 中正确生成随机地形

标签 c++ random sfml terrain

最近我一直在尝试使用 SFML 和 c++ 开发 2D Terraria 风格的游戏。除了随机地形生成之外,一切都运行良好。目前,我有一个 for 循环,它将位置和纹理分配给 Sprite 数组(例如:intgras[150]),然后使用 for 循环将其绘制到屏幕上。地形生成并且看起来不错,但是每次我的程序循环时,多个 Sprite 数组都会被绘制到屏幕上。这会导致一些严重的性能问题,因为目前每次程序循环时都会绘制大约 1400 个 Sprite (只有游戏完成时我想要的数量的一小部分)。

所以,我的问题是如何让我的地形高效生成?有没有办法一次只清除屏幕上的一部分 Sprite ,或者只在修改 Sprite 时清除 Sprite ?除了使用多个 Sprite 数组之外,还有更好的方法来创建地形吗?

最佳答案

尝试绘制更少的图 block ,无需绘制世界上的每个图 block ,因为其中大多数图 block 都是不可见的。

仅绘制屏幕上一次可见的图 block 数量,再加上一点,例如,如果屏幕只能容纳 7x4 的图 block ,则绘制大约 9x6。

这将有助于减少尝试绘制不可见图 block 所花费的时间。

关于c++ - 如何使用 C++ 在 SFML 中正确生成随机地形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21769259/

相关文章:

c++ - protected 继承

c++ - 为什么当我(不小心)使用 bool 类型时 Visual C++ 2008 不报错

c++ - 如何使用随机键值创建 std::map

java - SecureRandom 与 NativePRNG 对比 SHA1PRNG

javascript - 寻找随机选择、连接存储在变量中的文本字符串

c++ - 如何找到导致程序在 Windows 上崩溃的原因?

C++ 堆分配和内存重用

c++ - 如何同时从多个线程访问 MySQL

c++ - SFML C++ 我错误地使用了增量时间......正确的方法是什么

c++ - 如何将对象作为另一个对象的父对象并通过旋转影响其位置(使对象围绕其他对象旋转)