【问题标题】:What is the indexBuffer, and what might cause me to run out of them?什么是 indexBuffer,什么可能导致我用完它们?
【发布时间】:2012-05-06 16:43:06
【问题描述】:

我正在使用 Flare3D 制作一个 Flash 游戏,当我加载一个新场景时,它给了我这个错误:

Error: Error #3691: Resource limit for this resource type exceeded.
    at flash.display3D::Context3D/createIndexBuffer()
    at flare.core::Surface3D/upload()[Z:\projects\flare3d 2\src\flare\core\Surface3D.as:237]
    at flare.core::Mesh3D/upload()[Z:\projects\flare3d 2\src\flare\core\Mesh3D.as:130]
    at flare.core::Mesh3D/draw()[Z:\projects\flare3d 2\src\flare\core\Mesh3D.as:335]
    at flare.basic::Scene3D/render()[Z:\projects\flare3d 2\src\flare\basic\Scene3D.as:593]
    at flare.basic::Scene3D/enterFrameEvent()[Z:\projects\flare3d 2\src\flare\basic\Scene3D.as:461]

我从错误中猜测它正在运行某些东西,但我不知道 Context3D.createIndexBuffer() 做了什么。由于flare3D 不是开源的,我无法在那里挖掘任何线索。

所以我想知道:什么是 Context3D IndexBuffer,什么可能让我用完该资源类型?

请不要只链接到这些课程的 ASDocs,我已经查看过,但他们没有回答这个问题。

【问题讨论】:

    标签: actionscript-3 stage3d flare3d


    【解决方案1】:

    我可能是错的,但我猜他们谈论的是在 OpenGL 和 DirectX 中使用的相同索引缓冲区。它们是整数数组,是顶点数组的索引,因此在绘制多个共享顶点的多边形时,您不必每次都指定整个顶点。

    这是一个比较好的解释: http://openglbook.com/the-book/chapter-3-index-buffer-objects-and-primitive-types/#toc-enter-index-buffers

    我对 Flare3D 一无所知,但您的场景是否有可能有太多复杂的网格并且索引缓冲区的内存不足?

    【讨论】:

    • Skye - 这听起来像是正确的道路。如果没有其他人对 Flash Stage3D 中 IndexBuffer 的限制有更好的信息,我不反对接受这个答案。
    • 它们就是这样。它们是视频卡上的阵列。如果你用完了它们,那么你很可能做错了什么。你不应该需要填写这么多你用完的这些。也就是说,您自己在技术上并没有与他们合作,闪存虚拟机正在为您做这件事,它可能只是闪存方面的一个糟糕的实现,谁知道呢。
    • 或者你每帧请求一个新的顶点缓冲区或其他东西......我认为顶点缓冲区的数量上限为 4096/256mb
    • 这个答案似乎是正确的。引擎没有卸载几何体,导致它最终崩溃。我得看看能不能让它正确卸载所有东西。
    猜你喜欢
    • 2015-02-23
    • 2011-08-26
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    相关资源
    最近更新 更多