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

import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import org.lwjgl.opengl.GL13;
import org.lwjgl.opengl.GL14;
import org.lwjgl.opengl.GL30;
import org.lwjgl.opengl.GL44;

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

public enum GLTextureValue implements IGLValue {
	DEPTH_COMPONENT(GL11.GL_DEPTH_COMPONENT),
	STENCIL_INDEX(GL11.GL_STENCIL_INDEX),
	COMPARE_REF_TO_TEXTURE(GL30.GL_COMPARE_REF_TO_TEXTURE),
	NONE(GL11.GL_NONE),
	NEAREST(GL11.GL_NEAREST),
	LINEAR(GL11.GL_LINEAR),
	NEAREST_MIPMAP_NEAREST(GL11.GL_NEAREST_MIPMAP_NEAREST),
	LINEAR_MIPMAP_NEAREST(GL11.GL_LINEAR_MIPMAP_NEAREST),
	NEAREST_MIPMAP_LINEAR(GL11.GL_NEAREST_MIPMAP_LINEAR),
	LINEAR_MIPMAP_LINEAR(GL11.GL_LINEAR_MIPMAP_LINEAR),
	RED(GL11.GL_RED),
	GREEN(GL11.GL_GREEN),
	BLUE(GL11.GL_BLUE),
	ALPHA(GL11.GL_ALPHA),
	CLAMP_TO_EDGE(GL12.GL_CLAMP_TO_EDGE),
	CLAMP_TO_BORDER(GL13.GL_CLAMP_TO_BORDER),
	MIRRORED_REPEAT(GL14.GL_MIRRORED_REPEAT),
	REPEAT(GL11.GL_REPEAT),
	MIRROR_CLAMP_TO_EDGE(GL44.GL_MIRROR_CLAMP_TO_EDGE),
	
	;
	
	int glValue;
	
	private GLTextureValue(int glValue) {
		this.glValue = glValue;
	}
	
	@Override
	public int glValue() {
		return glValue;
	}
}
