#pragma once

namespace hedron
{

	enum class TextureInternalColorFormat
	{
		NONE = 0,
		
		RED,
		R8,
		R16,
		
		RG8,
		RG16,
		
		RGB4,
		RGB5,
		RGB8,
		RGB10,
		RGB12,
		RGB16,
		
		RGBA2,
		RGBA4,
		RGBA8,
		RGBA12,
		RGBA16,
		
		R16F,
		RG16F,
		RGB16F,
		RGBA16F,
		
		R32F,
		RG32F,
		RGB32F,
		RGBA32F,
		
		R8I,
		R8UI,
		R16I,
		R16UI,
		R32I,
		R32UI,

		RG8I,
		RG8UI,
		RG16I,
		RG16UI,
		RG32I,
		RG32UI,

		RGB8I,
		RGB8UI,
		RGB16I,
		RGB16UI,
		RGB32I,
		RGB32UI,

		RGBA8I,
		RGBA8UI,
		RGBA16I,
		RGBA16UI,
		RGBA32I,
		RGBA32UI
	};

	enum class TextureExternalColorFormat
	{
		NONE = 0,

		RED,
		GREEN,
		BLUE,
		ALPHA,
		RG,
		RGB,
		RGBA
	};

	enum class TextureMapping
	{
		REPEAT,
		MIRRORED_REPEAT,
		CLAMP_TO_EDGE,
		CLAMP_TO_BORDER
	};
}