package speiger.src.coreengine.rendering.utils.values.textures;

import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import org.lwjgl.opengl.GL30;
import org.lwjgl.opengl.GL31;
import org.lwjgl.opengl.GL32;
import org.lwjgl.opengl.GL40;

import speiger.src.coreengine.rendering.utils.values.IGLValue;

public enum GLTextureType implements IGLValue {
	TEXTURE_1D(GL11.GL_TEXTURE_1D),
	TEXTURE_1D_ARRAY(GL30.GL_TEXTURE_1D_ARRAY),
	TEXTURE_2D(GL11.GL_TEXTURE_2D),
	TEXTURE_2D_ARRAY(GL30.GL_TEXTURE_2D_ARRAY),
	TEXTURE_2D_MULTISAMPLE(GL32.GL_TEXTURE_2D_MULTISAMPLE),
	TEXTURE_2D_MULTISAMPLE_ARRAY(GL32.GL_TEXTURE_2D_MULTISAMPLE_ARRAY),
	TEXTURE_3D(GL12.GL_TEXTURE_3D),
	TEXTURE_CUBE_MAP(GL32.GL_TEXTURE_CUBE_MAP),
	TEXTURE_CUBE_MAP_ARRAY(GL40.GL_TEXTURE_CUBE_MAP_ARRAY),
	TEXTURE_RECTANGLE(GL31.GL_TEXTURE_RECTANGLE),
	TEXTURE_BUFFER(GL31.GL_TEXTURE_BUFFER);
	
	int glValue;
	
	private GLTextureType(int glValue) {
		this.glValue = glValue;
	}
	
	@Override
	public int glValue() {
		return glValue;
	}
	
}
