//********************************** Banshee Engine (www.banshee3d.com) **************************************************// //**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************// #include "BsGLTextureManager.h" #include "RenderAPI/BsRenderAPI.h" #include "BsGLRenderTexture.h" #include "BsGLPixelFormat.h" namespace bs { GLTextureManager::GLTextureManager(ct::GLSupport& support) :TextureManager(), mGLSupport(support) { } GLTextureManager::~GLTextureManager() { } SPtr GLTextureManager::createRenderTextureImpl(const RENDER_TEXTURE_DESC& desc) { GLRenderTexture* tex = new (bs_alloc()) GLRenderTexture(desc); return bs_core_ptr(tex); } PixelFormat GLTextureManager::getNativeFormat(TextureType ttype, PixelFormat format, int usage, bool hwGamma) { // Check if this is a valid rendertarget format if(usage & TU_RENDERTARGET) return ct::GLRTTManager::instance().getSupportedAlternative(format); return ct::GLPixelUtil::getClosestSupportedPF(format, ttype, usage); } namespace ct { GLTextureManager::GLTextureManager(GLSupport& support) :mGLSupport(support) { } SPtr GLTextureManager::createTextureInternal(const TEXTURE_DESC& desc, const SPtr& initialData, GpuDeviceFlags deviceMask) { GLTexture* tex = new (bs_alloc()) GLTexture(mGLSupport, desc, initialData, deviceMask); SPtr texPtr = bs_shared_ptr(tex); texPtr->_setThisPtr(texPtr); return texPtr; } SPtr GLTextureManager::createRenderTextureInternal(const RENDER_TEXTURE_DESC& desc, UINT32 deviceIdx) { SPtr texPtr = bs_shared_ptr_new(desc, deviceIdx); texPtr->_setThisPtr(texPtr); return texPtr; } } }