Что такое indexBuffer, и что может заставить меня их исчерпать?
Я делаю флэш-игру, используя Flare3D, и когда я загружаю новую сцену, она выдает мне эту ошибку:
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 для этих классов, я посмотрел, и они не отвечают на этот вопрос.
1 ответ
Я могу ошибаться, но я предполагаю, что они говорят о тех же индексных буферах, которые используются в OpenGL и DirectX. Они представляют собой массивы целых чисел, которые являются индексами в массиве вершин, поэтому при рисовании нескольких полигонов, имеющих общие вершины, вам не нужно каждый раз указывать всю вершину.
Это относительно хорошее объяснение: http://openglbook.com/the-book/chapter-3-index-buffer-objects-and-primitive-types/
Я ничего не знаю о Flare3D, но возможно ли, что ваша сцена имеет слишком много сложных сеток и не хватает памяти для индексных буферов?