gpt4 book ai didi

c++ - 确定发送到 VBO 的数据限制?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:59:34 29 4
gpt4 key购买 nike

我正在为 Playbook 编写一个 3d 应用程序,它有一个 PowerVR SGX 540。我注意到如果我通过 opengl 在 VBO 中填充足够的数据,我可能会导致设备崩溃(不仅仅是应用程序,还有整个设备,需要硬重启)。为了导致崩溃,我发送了一个具有约 30 万个三角形和约 15 万个顶点的模型的数据。我也为顶点发送了正常数据。

我发现如果我发送较少的数据(尝试使用另一个具有一半三角形和顶点的模型),问题就不会发生。此外,如果我使用顶点数组,则不会出现此问题(尽管它非常慢)。

我想知道:

  • 我看到的是移动硬件的常见结果吗?也就是说,具有 150k 个顶点和法线的 300k tri 模型是否过度杀伤?

  • 除了测试一堆不同的模型大小(从崩溃中恢复设备需要五分钟)之外,我能否检查我有多少内存可用于 VBO 使用?

  • 是否还有其他原因导致此问题?我提供了一些额外的信息:

我将 Qt 用于我的 GUI,并在将 3d 场景绘制到 GUI 之前将其绘制到 FBO(我还没有检查是否通过创建 EGL 窗口并绘制到重新创建问题 - 这需要一段时间)。

为了验证不是我使用 OpenGL 不当,我尝试了对所有 3d 内容使用原始 OpenGL 调用,以及使用 OpenSceneGraph 进行所有操作。两种方法都以完全相同的方式失败(VBO 使用较少的数据,顶点数组工作,增加的 VBO 数据导致崩溃)。

该程序在我的桌面上运行良好。不幸的是,我没有任何其他移动设备可以用来测试我的应用程序。

最佳答案

OpenGL ES 仅支持无符号短整型(16 位)作为索引的数据类型,因此如果您使用的是索引数组,则超出了该限制。

关于c++ - 确定发送到 VBO 的数据限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287604/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com