android - 大型合并网格的低 FPS
问题描述
我尝试渲染一组 3d 模型。我将网格合并为一个具有 200k 个顶点的网格。具有位置、法线和纹理坐标属性。我使用VBO
但不使用索引缓冲区对象。我只做 2 个渲染调用(一个用于阴影)。我用libgdx
.
我希望我的弱点上的合并网格具有良好的 FPS Galaxy j3 (2016)
,但我得到了 13 FPS。在 Galaxy s8 和 nexus 5 上,我得到了 60 FPS。
所以有什么问题?
Galaxy j3 对于 200k 顶点来说是不是太弱了?
或者 200k 顶点是太大的网格?
Galaxy J3 特性:
CPU:展讯 SC9830I Quad,1.5 ГГц。
内存:1.5 Gb。
GPU:ARM Mali-400 MP2。
解决方案
Mali-400 是一种旧设计,具有非常单一的顶点处理器,不会随着核心数量的增加而扩展,因此它绝对可以应对顶点复杂度,其中复杂度为shader cost * vertex count
.
值得注意的是,将所有内容合并到一次平局通常会适得其反。您希望将绘图调用数减少到 CPU 可以处理的数量,但是一旦您的绘图调用少于几百个,它就不太可能为您带来太多收益,并且您会浪费很多机会。例如,您失去了在 CPU 上剔除截锥体对象的能力,即使在更现代的 GPU 上,这也是强烈推荐的最佳实践。
推荐阅读
- react-native - 我应该根据 expo react native 中的键检查 AsyncStorage 令牌值吗?
- javascript - 1 个字母后,搜索字段将我踢出输入字段
- r - R Flexdashboard - 在标题中添加一个中断
- java - IB TWS API 在 EClientSocket 上调用 eDisconnect() 时出现 SocketException,发生在 java.io.DataInputStream.readInt(EClientSocket)
- mongodb - 为什么MongoDB支持事务?
- node.js - 节点js,当包含“include”和“where:array []”选项时,使用偏移量和限制对findAndCountAll进行Sequelize不起作用
- image - 有没有办法创建在点击或单击时翻转到另一侧(另一页)的图像?
- google-api - Google Calendar API 删除 410 错误是什么意思
- reactjs - 无法编译 React Native 应用程序
- r - 是否有任何函数可以让我将此列表转换为一组向量?