//--------------------------------------------------------------------- GLHardwareBufferManagerBase::GLHardwareBufferManagerBase() : mScratchBufferPool(NULL), mMapBufferThreshold(OGRE_GL_DEFAULT_MAP_BUFFER_THRESHOLD) { mStateCacheManager = dynamic_cast<GLRenderSystem*>(Root::getSingleton().getRenderSystem())->getGLSupportRef()->getStateCacheManager(); // Init scratch pool // TODO make it a configurable size? // 32-bit aligned buffer mScratchBufferPool = static_cast<char*>(OGRE_MALLOC_ALIGN(SCRATCH_POOL_SIZE, MEMCATEGORY_GEOMETRY, SCRATCH_ALIGNMENT)); GLScratchBufferAlloc* ptrAlloc = (GLScratchBufferAlloc*)mScratchBufferPool; ptrAlloc->size = SCRATCH_POOL_SIZE - sizeof(GLScratchBufferAlloc); ptrAlloc->free = 1; // non-Win32 machines are having issues glBufferSubData, looks like buffer corruption // disable for now until we figure out where the problem lies # if OGRE_PLATFORM != OGRE_PLATFORM_WIN32 mMapBufferThreshold = 0; # endif // Win32 machines with ATI GPU are having issues glMapBuffer, looks like buffer corruption // disable for now until we figure out where the problem lies # if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 if (Root::getSingleton().getRenderSystem()->getCapabilities()->getVendor() == GPU_AMD) { mMapBufferThreshold = 0xffffffffUL /* maximum unsigned long value */; } # endif }
//--------------------------------------------------------------------- GLHardwareBufferManagerBase::GLHardwareBufferManagerBase() : mScratchBufferPool(NULL), mMapBufferThreshold(OGRE_GL_DEFAULT_MAP_BUFFER_THRESHOLD) { mRenderSystem = static_cast<GLRenderSystem*>(Root::getSingleton().getRenderSystem()); // Init scratch pool // TODO make it a configurable size? // 32-bit aligned buffer mScratchBufferPool = static_cast<char*>(OGRE_MALLOC_ALIGN(SCRATCH_POOL_SIZE, MEMCATEGORY_GEOMETRY, SCRATCH_ALIGNMENT)); GLScratchBufferAlloc* ptrAlloc = (GLScratchBufferAlloc*)mScratchBufferPool; ptrAlloc->size = SCRATCH_POOL_SIZE - sizeof(GLScratchBufferAlloc); ptrAlloc->free = 1; mMapBufferThreshold = 0; }
GLESHardwareBufferManagerBase::GLESHardwareBufferManagerBase() { // Init scratch pool // TODO make it a configurable size? // 32-bit aligned buffer mScratchBufferPool = static_cast<char*>(OGRE_MALLOC_ALIGN(SCRATCH_POOL_SIZE, MEMCATEGORY_GEOMETRY, SCRATCH_ALIGNMENT)); GLESScratchBufferAlloc* ptrAlloc = (GLESScratchBufferAlloc*)mScratchBufferPool; ptrAlloc->size = SCRATCH_POOL_SIZE - sizeof(GLESScratchBufferAlloc); ptrAlloc->free = 1; // non-Win32 machines are having issues glBufferSubData, looks like buffer corruption // disable for now until we figure out where the problem lies # if OGRE_PLATFORM != OGRE_PLATFORM_WIN32 mMapBufferThreshold = 0; # endif }