HardwareUniformBufferSharedPtr DefaultHardwareBufferManagerBase::createUniformBuffer(size_t sizeBytes, HardwareBuffer::Usage usage, bool useShadowBuffer, const String& name) { DefaultHardwareUniformBuffer* ub = OGRE_NEW DefaultHardwareUniformBuffer(this, sizeBytes, usage, useShadowBuffer); return HardwareUniformBufferSharedPtr(ub); }
HardwareUniformBufferSharedPtr GL3PlusDefaultHardwareBufferManagerBase::createUniformBuffer(size_t sizeBytes, HardwareBuffer::Usage usage, bool useShadowBuffer, const String& name) { return HardwareUniformBufferSharedPtr( new GL3PlusDefaultHardwareUniformBuffer(this, sizeBytes, usage, useShadowBuffer, name)); }
HardwareUniformBufferSharedPtr GL3PlusHardwareBufferManagerBase::createShaderStorageBuffer(size_t sizeBytes, HardwareBuffer::Usage usage, bool useShadowBuffer, const String& name) { GL3PlusHardwareShaderStorageBuffer* buf = new GL3PlusHardwareShaderStorageBuffer(this, sizeBytes, usage, useShadowBuffer, name); { OGRE_LOCK_MUTEX(mUniformBuffersMutex); mShaderStorageBuffers.insert(buf); } return HardwareUniformBufferSharedPtr(buf); }
HardwareUniformBufferSharedPtr GLES2DefaultHardwareBufferManagerBase::createUniformBuffer(size_t sizeBytes, HardwareBuffer::Usage usage, bool useShadowBuffer, const String& name) { if(!gleswIsSupported(3, 0)) { OGRE_EXCEPT(Exception::ERR_RENDERINGAPI_ERROR, "GLES2 does not support uniform buffer objects", "GLES2DefaultHardwareBufferManager::createUniformBuffer"); } return HardwareUniformBufferSharedPtr(new GLES2DefaultHardwareUniformBuffer(this, sizeBytes, usage, useShadowBuffer, name)); }
//--------------------------------------------------------------------- Ogre::HardwareUniformBufferSharedPtr GLES2HardwareBufferManagerBase::createUniformBuffer( size_t sizeBytes, HardwareBuffer::Usage usage, bool useShadowBuffer, const String& name ) { #if OGRE_NO_GLES3_SUPPORT == 0 GLES2HardwareUniformBuffer* buf = new GLES2HardwareUniformBuffer(this, sizeBytes, usage, useShadowBuffer, name); { OGRE_LOCK_MUTEX(mUniformBuffersMutex); mUniformBuffers.insert(buf); } return HardwareUniformBufferSharedPtr(buf); #else OGRE_EXCEPT(Exception::ERR_RENDERINGAPI_ERROR, "GLES2 does not support uniform buffer objects", "GLES2HardwareBufferManagerBase::createUniformBuffer"); #endif }
//----------------------------------------------------------------------- HardwareUniformBufferSharedPtr D3D11HardwareBufferManagerBase::createUniformBuffer(size_t sizeBytes, HardwareBuffer::Usage usage, bool useShadowBuffer, const String& name) { assert(sizeBytes > 0); D3D11HardwareUniformBuffer* uni = 0; /* if (name != "") { SharedUniformBufferMap::iterator it = mSharedUniformBuffers.find(name); if (it != mSharedUniformBuffers.end()) { uni = static_cast<D3D11HardwareUniformBuffer*>(it->second); assert (uni->getSizeInBytes() == sizeBytes); assert (uni->getUsage() == usage); } else { uni = new D3D11HardwareUniformBuffer(this, sizeBytes, usage, useShadowBuffer, name, mlpD3DDevice); { OGRE_LOCK_MUTEX(mUniformBuffersMutex) mUniformBuffers.insert(uni); //mSharedUniformBuffers.insert(std::make_pair(name, uni)); } } } else {*/ uni = new D3D11HardwareUniformBuffer(this, sizeBytes, usage, useShadowBuffer, name, mlpD3DDevice); { OGRE_LOCK_MUTEX(mUniformBuffersMutex); mUniformBuffers.insert(uni); } //} return HardwareUniformBufferSharedPtr(uni); }