#pragma once

#include <cstdint>

enum TextureTargetEnum
{
	E_Texture2D,
	E_CubeMapPosX,
	E_CubeMapNegX,
	E_CubeMapPosY,
	E_CubeMapNegY,
	E_CubeMapPosZ,
	E_CubeMapNegZ,
};

enum TextureFormatEnum
{
	E_Red,
	E_RG,
	E_RGB,
	E_BGR,
	E_RGBA,
	E_BGRA,
	E_StencilIndex,
	E_Depth,
	E_DepthStencil
};

enum TextureStorageEnum
{
	E_UInt8,
	E_UInt16,
	E_UInt32,
	E_Int8,
	E_Int16,
	E_Int32,
	E_Float16,
	E_Float32,

	E_UInt8_3_3_2,
	E_UInt8_2_3_3_REV,
	E_UInt16_5_6_5,
	E_UInt16_5_6_5_REV,
	E_UInt16_4_4_4_4,
	E_UInt16_4_4_4_4_REV,
	E_UInt16_5_5_5_1,
	E_UInt16_1_5_5_5_REV,
	E_UInt32_8_8_8_8,
	E_UInt32_8_8_8_8_REV,
	E_UInt32_10_10_10_2,
	E_UInt32_2_10_10_10_REV
};

struct Texture
{
	TextureTargetEnum	target;
	uint32_t			mipLevel;
	uint32_t			width;
	uint32_t			height;
	TextureFormatEnum	format;
	TextureStorageEnum	storage;
};

