Tile引擎性能问题
Tile engine performance issue
我正在使用SFML,我找不到任何关于库如何工作的解释,我有性能问题。我正在尝试制作一个由50x50块组成的瓷砖地图,每个瓷砖宽20x20像素。1)每个贴图都是一个sf::精灵,其图形图像只是一个大图像(我的贴图集),我在其上设置了一个20x20的子矩形。2)我只是循环贴图的总数,并使用App.Draw(Map[I][j]);来绘制每个贴图,我使用"视图"对象,这样我就可以移动视图
现在我有一个非常低的FPS(1图像/秒),我想知道关于前面几点的两件事。1)是否每个sf::精灵都需要花费时间去绘制,因为它们的图像来自于被裁剪过的巨大图像?2)我是否应该循环遍历所有的贴图,甚至是那些我没有看到的?我假设视图对象使它使视图外的磁贴不会徒劳地重新计算
谢谢
这通常被认为是渲染贴图的错误方式。
更正确的方法是创建一个大的纹理,在这种情况下是sf::Image
,然后将你的贴图渲染到这个纹理上,然后将这个大的纹理渲染到屏幕上。在某些情况下,这种方法是不可行的,但在大多数情况下,它要好得多。
这样,你只需要在加载贴图时渲染每个贴图一次,然后你只需要为每帧渲染一次大的纹理,而不是为每帧渲染2500个单独的贴图。
SFML使用OpenGL的方式对大量的Draw()
调用不友好,所以它有助于找到尽可能少调用它的方法。
相关文章:
- 在类中使用随机生成器时出现性能问题
- Qt OpenGL 渲染到纹理性能问题
- 剪辑性能问题
- 使用双包装器类进行位操作(C++、clang)修复性能下降问题
- OpenCV - 基本操作 - 性能问题 [模式:发布]
- 使用 #define 进行跟踪日志记录以避免性能问题
- 在 Qt C++ 中在自定义项委托上绘制文本时的性能问题
- std::函数有性能问题,如何避免?
- 使用 const double* const 作为模板参数 - 代码性能问题
- 在C 中读取大型CSV文件性能问题
- MPI 二进制文件 I/O 基本功能和性能问题
- 如何修复macOS线程互斥锁性能缓慢的问题?
- 使用STD :: MAP在数据及其性能问题中查找重复项.我可以预先分配吗?
- C 功能性能问题
- 一维数组映射方式的性能差异问题
- 在C 性能问题中使用Getter返回地图
- 初始化每个班级成员时的性能问题
- 事件(开始,结束),1天的最大事件.C++ 中的性能问题
- 在X64模式下从C /CLI调用MASM PROC会产生意外的性能问题
- OpenGL:MESA3D屏幕上的软件渲染性能问题