我正在制作一款游戏,我实际上是在生成地图。
该地图是使用一些算法程序生成的。这没有问题。
问题是我的地图可能很大。所以我考虑过将地图切成块。
我的块没问题,它们每个都是 512*512 像素,但唯一的问题是:我必须生成一个纹理(实际上是 SFML 的 RenderTexture)。生成大约需要 0.5 毫秒,因此每次生成块时游戏都会冻结。
我想了一种方法来解决这个问题:我用工厂制作了一种线程池。我只需要向它发送一个任务,它就会创建块。
现在它已经全部实现了,它会引发 opengl 警告,例如:
“RenderTarget.cpp (219) 中的内部 OpenGL 调用失败:GL_INVALID_OPERATION,当前状态下不允许指定的操作”。
我不知道这是否是处理块的好方法。我也考虑过将块保存到图像/文件中,但我担心保存/加载它们需要太多时间。
你知道处理这种“无限”地图的更好方法吗?