Example usage for org.lwjgl.opengl ARBTextureCubeMap GL_NORMAL_MAP_ARB

List of usage examples for org.lwjgl.opengl ARBTextureCubeMap GL_NORMAL_MAP_ARB

Introduction

In this page you can find the example usage for org.lwjgl.opengl ARBTextureCubeMap GL_NORMAL_MAP_ARB.

Prototype

int GL_NORMAL_MAP_ARB

To view the source code for org.lwjgl.opengl ARBTextureCubeMap GL_NORMAL_MAP_ARB.

Click Source Link

Document

Accepted by the param parameters of TexGend, TexGenf, and TexGeni when pname parameter is TEXTURE_GEN_MODE.

Usage

From source file:com.ardor3d.scene.state.lwjgl.LwjglTextureStateUtil.java

License:Open Source License

public static void applyTexCoordGeneration(final Texture texture, final TextureUnitRecord unitRecord,
        final int unit, final TextureStateRecord record, final ContextCapabilities caps) {
    switch (texture.getEnvironmentalMapMode()) {
    case None://w  w  w.j  a va2s.co m
        // No coordinate generation
        setTextureGen(unitRecord, unit, record, caps, false, false, false, false);
        break;
    case SphereMap:
        // generate spherical texture coordinates
        if (!unitRecord.isValid() || unitRecord.textureGenSMode != GL11.GL_SPHERE_MAP) {
            checkAndSetUnit(unit, record, caps);

            GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_SPHERE_MAP);
            unitRecord.textureGenSMode = GL11.GL_SPHERE_MAP;

            GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_SPHERE_MAP);
            unitRecord.textureGenTMode = GL11.GL_SPHERE_MAP;
        }

        setTextureGen(unitRecord, unit, record, caps, true, true, false, false);
        break;
    case NormalMap:
        // generate normals based texture coordinates
        if (!unitRecord.isValid() || unitRecord.textureGenSMode != ARBTextureCubeMap.GL_NORMAL_MAP_ARB) {
            checkAndSetUnit(unit, record, caps);
            GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, ARBTextureCubeMap.GL_NORMAL_MAP_ARB);
            unitRecord.textureGenSMode = ARBTextureCubeMap.GL_NORMAL_MAP_ARB;

            GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, ARBTextureCubeMap.GL_NORMAL_MAP_ARB);
            unitRecord.textureGenTMode = ARBTextureCubeMap.GL_NORMAL_MAP_ARB;

            GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, ARBTextureCubeMap.GL_NORMAL_MAP_ARB);
            unitRecord.textureGenRMode = ARBTextureCubeMap.GL_NORMAL_MAP_ARB;
        }

        setTextureGen(unitRecord, unit, record, caps, true, true, true, false);
        break;
    case ReflectionMap:
        // generate reflection texture coordinates
        if (!unitRecord.isValid() || unitRecord.textureGenSMode != ARBTextureCubeMap.GL_REFLECTION_MAP_ARB) {
            checkAndSetUnit(unit, record, caps);

            GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, ARBTextureCubeMap.GL_REFLECTION_MAP_ARB);
            unitRecord.textureGenSMode = ARBTextureCubeMap.GL_REFLECTION_MAP_ARB;

            GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, ARBTextureCubeMap.GL_REFLECTION_MAP_ARB);
            unitRecord.textureGenTMode = ARBTextureCubeMap.GL_REFLECTION_MAP_ARB;

            GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, ARBTextureCubeMap.GL_REFLECTION_MAP_ARB);
            unitRecord.textureGenRMode = ARBTextureCubeMap.GL_REFLECTION_MAP_ARB;
        }

        setTextureGen(unitRecord, unit, record, caps, true, true, true, false);
        break;
    case EyeLinear:
        // do here because we don't check planes
        checkAndSetUnit(unit, record, caps);

        // generate eye linear texture coordinates
        if (!unitRecord.isValid() || unitRecord.textureGenSMode != GL11.GL_EYE_LINEAR) {
            GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR);
            unitRecord.textureGenSMode = GL11.GL_EYE_LINEAR;

            GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR);
            unitRecord.textureGenTMode = GL11.GL_EYE_LINEAR;

            GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR);
            unitRecord.textureGenRMode = GL11.GL_EYE_LINEAR;

            GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR);
            unitRecord.textureGenQMode = GL11.GL_EYE_LINEAR;
        }

        record.prepPlane(texture.getEnvPlaneS(), TextureStateRecord.DEFAULT_S_PLANE);
        GL11.glTexGen(GL11.GL_S, GL11.GL_EYE_PLANE, record.plane);
        record.prepPlane(texture.getEnvPlaneT(), TextureStateRecord.DEFAULT_T_PLANE);
        GL11.glTexGen(GL11.GL_T, GL11.GL_EYE_PLANE, record.plane);
        record.prepPlane(texture.getEnvPlaneR(), TextureStateRecord.DEFAULT_R_PLANE);
        GL11.glTexGen(GL11.GL_R, GL11.GL_EYE_PLANE, record.plane);
        record.prepPlane(texture.getEnvPlaneQ(), TextureStateRecord.DEFAULT_Q_PLANE);
        GL11.glTexGen(GL11.GL_Q, GL11.GL_EYE_PLANE, record.plane);

        setTextureGen(unitRecord, unit, record, caps, true, true, true, true);
        break;
    case ObjectLinear:
        // do here because we don't check planes
        checkAndSetUnit(unit, record, caps);

        // generate object linear texture coordinates
        if (!unitRecord.isValid() || unitRecord.textureGenSMode != GL11.GL_OBJECT_LINEAR) {
            GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR);
            unitRecord.textureGenSMode = GL11.GL_OBJECT_LINEAR;

            GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR);
            unitRecord.textureGenTMode = GL11.GL_OBJECT_LINEAR;

            GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR);
            unitRecord.textureGenRMode = GL11.GL_OBJECT_LINEAR;

            GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR);
            unitRecord.textureGenQMode = GL11.GL_OBJECT_LINEAR;
        }

        record.prepPlane(texture.getEnvPlaneS(), TextureStateRecord.DEFAULT_S_PLANE);
        GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, record.plane);
        record.prepPlane(texture.getEnvPlaneT(), TextureStateRecord.DEFAULT_T_PLANE);
        GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, record.plane);
        record.prepPlane(texture.getEnvPlaneR(), TextureStateRecord.DEFAULT_R_PLANE);
        GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, record.plane);
        record.prepPlane(texture.getEnvPlaneQ(), TextureStateRecord.DEFAULT_Q_PLANE);
        GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, record.plane);

        setTextureGen(unitRecord, unit, record, caps, true, true, true, true);
        break;
    }
}