Example #1
0
	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;
			}
		}
	}