Ogre::TextureUsage OgreTexture::convertUsage(TextureUsage _usage) { if (_usage == TextureUsage::Default) { return Ogre::TU_STATIC_WRITE_ONLY; } else if (_usage == TextureUsage::RenderTarget) { return Ogre::TU_RENDERTARGET; } else if (_usage.isValue(TextureUsage::Static)) { if (_usage.isValue(TextureUsage::Write)) { return Ogre::TU_STATIC_WRITE_ONLY; } else { return Ogre::TU_STATIC; } } else if (_usage.isValue(TextureUsage::Dynamic)) { if (_usage.isValue(TextureUsage::Write)) { return Ogre::TU_DYNAMIC_WRITE_ONLY; } else { return Ogre::TU_DYNAMIC; } } else if (_usage.isValue(TextureUsage::Stream)) { if (_usage.isValue(TextureUsage::Write)) { return Ogre::TU_DYNAMIC_WRITE_ONLY_DISCARDABLE; } else { return Ogre::TU_DYNAMIC; } } return Ogre::TU_DEFAULT; }
RenderBase::RenderResource::Usage GenesisTexture::UsageMyGuiToWj(TextureUsage usage) { if (usage == TextureUsage::Default) { return RenderBase::RenderResource::UsageImmutable;//Ogre::TU_STATIC_WRITE_ONLY; } else if (usage == TextureUsage::RenderTarget) { return RenderBase::RenderResource::UsageDynamic;//Ogre::TU_RENDERTARGET; } else if (usage.isValue(TextureUsage::Static)) { if (usage.isValue(TextureUsage::Write)) { return RenderBase::RenderResource::UsageDynamic;//Ogre::TU_STATIC_WRITE_ONLY; } else { return RenderBase::RenderResource::UsageImmutable;//Ogre::TU_STATIC; } } else if (usage.isValue(TextureUsage::Dynamic)) { if (usage.isValue(TextureUsage::Write)) { return RenderBase::RenderResource::UsageDynamic;//Ogre::TU_DYNAMIC_WRITE_ONLY; } else { return RenderBase::RenderResource::UsageImmutable;//Ogre::TU_DYNAMIC; } } else if (usage.isValue(TextureUsage::Stream)) { if (usage.isValue(TextureUsage::Write)) { return RenderBase::RenderResource::UsageCpu;//Ogre::TU_DYNAMIC_WRITE_ONLY_DISCARDABLE; } else { return RenderBase::RenderResource::UsageCpu;//Ogre::TU_DYNAMIC; } } return RenderBase::RenderResource::UsageImmutable;//Ogre::TU_DEFAULT; }
void OpenGLTexture::setUsage(TextureUsage _usage) { mAccess = 0; mUsage = 0; if (_usage == TextureUsage::Default) { mUsage = GL_STATIC_READ_ARB; mAccess = GL_READ_ONLY_ARB; } else if (_usage.isValue(TextureUsage::Static)) { if (_usage.isValue(TextureUsage::Read)) { if (_usage.isValue(TextureUsage::Write)) { mUsage = GL_STATIC_COPY_ARB; mAccess = GL_READ_WRITE_ARB; } else { mUsage = GL_STATIC_READ_ARB; mAccess = GL_READ_ONLY_ARB; } } else if (_usage.isValue(TextureUsage::Write)) { mUsage = GL_STATIC_DRAW_ARB; mAccess = GL_WRITE_ONLY_ARB; } } else if (_usage.isValue(TextureUsage::Dynamic)) { if (_usage.isValue(TextureUsage::Read)) { if (_usage.isValue(TextureUsage::Write)) { mUsage = GL_DYNAMIC_COPY_ARB; mAccess = GL_READ_WRITE_ARB; } else { mUsage = GL_DYNAMIC_READ_ARB; mAccess = GL_READ_ONLY_ARB; } } else if (_usage.isValue(TextureUsage::Write)) { mUsage = GL_DYNAMIC_DRAW_ARB; mAccess = GL_WRITE_ONLY_ARB; } } else if (_usage.isValue(TextureUsage::Stream)) { if (_usage.isValue(TextureUsage::Read)) { if (_usage.isValue(TextureUsage::Write)) { mUsage = GL_STREAM_COPY_ARB; mAccess = GL_READ_WRITE_ARB; } else { mUsage = GL_STREAM_READ_ARB; mAccess = GL_READ_ONLY_ARB; } } else if (_usage.isValue(TextureUsage::Write)) { mUsage = GL_STREAM_DRAW_ARB; mAccess = GL_WRITE_ONLY_ARB; } } }