28 #ifndef __HardwareBufferManager__
29 #define __HardwareBufferManager__
90 void extractFrom(
const VertexData* sourceData);
92 void checkoutTempCopies(
bool positions =
true,
bool normals =
true);
94 void bindTempCopies(
VertexData* targetData,
bool suppressHardwareUpload);
98 bool buffersCheckedOut(
bool positions =
true,
bool normals =
true)
const;
147 virtual void destroyAllDeclarations(
void);
149 virtual void destroyAllBindings(
void);
168 BLT_AUTOMATIC_RELEASE
187 : originalBufferPtr(orig)
189 , expiredDelay(delay)
256 bool useShadowBuffer =
false) = 0;
294 bool useShadowBuffer =
false,
const String& name =
"") = 0;
302 bool useShadowBuffer =
false,
const String& name =
"") = 0;
319 virtual void registerVertexBufferSourceAndCopy(
347 bool copyData =
false);
358 virtual void releaseVertexBufferCopy(
383 virtual void _freeUnusedBufferCopies(
void);
392 virtual void _releaseBufferCopies(
bool forceFreeUnused =
false);
442 bool useShadowBuffer =
false)
444 return mImpl->createVertexBuffer(vertexSize, numVerts, usage, useShadowBuffer);
451 return mImpl->createIndexBuffer(itype, numIndexes, usage, useShadowBuffer);
457 return mImpl->createRenderToVertexBuffer();
464 return mImpl->createUniformBuffer(sizeBytes, usage, useShadowBuffer, name);
471 return mImpl->createCounterBuffer(sizeBytes, usage, useShadowBuffer, name);
477 return mImpl->createVertexDeclaration();
482 mImpl->destroyVertexDeclaration(decl);
488 return mImpl->createVertexBufferBinding();
493 mImpl->destroyVertexBufferBinding(binding);
500 mImpl->registerVertexBufferSourceAndCopy(sourceBuffer, copy);
507 bool copyData =
false)
509 return mImpl->allocateVertexBufferCopy(sourceBuffer, licenseType, licensee, copyData);
515 mImpl->releaseVertexBufferCopy(bufferCopy);
522 mImpl->touchVertexBufferCopy(bufferCopy);
528 mImpl->_freeUnusedBufferCopies();
533 mImpl->_releaseBufferCopies(forceFreeUnused);
539 mImpl->_forceReleaseBufferCopies(sourceBuffer);
544 mImpl->_forceReleaseBufferCopies(sourceBuffer);
549 mImpl->_notifyVertexBufferDestroyed(buf);
554 mImpl->_notifyIndexBufferDestroyed(buf);
559 mImpl->_notifyUniformBufferDestroyed(buf);
564 mImpl->_notifyCounterBufferDestroyed(buf);
608 #endif // __HardwareBufferManager__