&& (texture == null || (!texture.needsWrapRefresh() && !texture .needsFilterRefresh()))) || (texture.getTextureId() == 0 && texture.getImage() == null)) {
&& (texture == null || (!texture.needsWrapRefresh() && !texture.needsFilterRefresh())))) {
    public void apply() {        if (isEnabled()) {            int index;            Texture texture;            for (int i = 0; i < numTotalTexUnits; i++) {                texture = getTexture(i);                if (texture != null) {                                        if ((texture == currentTexture[i]                            && (texture == null || (!texture.needsWrapRefresh() && !texture                                    .needsFilterRefresh())))                            || (texture.getTextureId() == 0 && texture.getImage() == null)) {                        continue;                    }                }                currentTexture[i] = texture;                index = GL13.GL_TEXTURE0 + i;                if (supportsMultiTexture) {                    GL13.glActiveTexture(index);                }                                if (i>=numFixedTexUnits && texture == null)                	continue;                                if( i< numFixedTexUnits) {	                if (texture == null) {	                  	                	GL11.glDisable(GL11.GL_TEXTURE_2D);	                    continue;	                }                                        GL11.glEnable(GL11.GL_TEXTURE_2D);		                boolean doTrans = texture.getTranslation() != null	                        && !Vector3f.ZERO.equals(texture.getTranslation());	                boolean doRot = texture.getRotation() != null	                        && !Quaternion.IDENTITY.equals(texture.getRotation());	                boolean doScale = texture.getScale() != null	                        && !Vector3f.UNIT_XYZ.equals(texture.getScale());		                if (doTrans || doRot || doScale) {	                    GL11.glMatrixMode(GL11.GL_TEXTURE);	                    GL11.glLoadIdentity();	                    if (doTrans) {	                        GL11	                                .glTranslatef(texture.getTranslation().x,	                                        texture.getTranslation().y, texture	                                                .getTranslation().z);	                    }	                    if (doRot) {	                        Vector3f vRot = tmp_rotation1;	                        float rot = texture.getRotation().toAngleAxis(vRot)	                                * FastMath.RAD_TO_DEG;	                        GL11.glRotatef(rot, vRot.x, vRot.y, vRot.z);	                    }	                    if (doScale)	                        GL11.glScalef(texture.getScale().x,	                                texture.getScale().y, texture.getScale().z);	                    GL11.glMatrixMode(GL11.GL_MODELVIEW);	                } else { // do this always as we can't know identity is	                            // really set	                    GL11.glMatrixMode(GL11.GL_TEXTURE);	                    GL11.glLoadIdentity();	                    GL11.glMatrixMode(GL11.GL_MODELVIEW);	                }                }                // texture not yet loaded.                if (texture.getTextureId() == 0) {                    load(i);                } else {                    // texture already exists in OpenGL, just bind it                    GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture                            .getTextureId());                }                idCache[i] = texture.getTextureId();                // If wrap mode was changed or this texture is new...                if (texture.needsWrapRefresh()) {                    texture.setNeedsWrapRefresh(false);                    // set up wrap mode                    switch (texture.getWrap()) {                        case Texture.WM_ECLAMP_S_ECLAMP_T:                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_S,                                    GL12.GL_CLAMP_TO_EDGE);                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_T,                                    GL12.GL_CLAMP_TO_EDGE);                            break;                        case Texture.WM_BCLAMP_S_BCLAMP_T:                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_S,                                    GL13.GL_CLAMP_TO_BORDER);                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_T,                                    GL13.GL_CLAMP_TO_BORDER);                            break;                        case Texture.WM_CLAMP_S_CLAMP_T:                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_S, GL11.GL_CLAMP);                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_T, GL11.GL_CLAMP);                            break;                        case Texture.WM_CLAMP_S_WRAP_T:                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_S, GL11.GL_CLAMP);                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);                            break;                        case Texture.WM_WRAP_S_CLAMP_T:                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_T, GL11.GL_CLAMP);                            break;                        case Texture.WM_WRAP_S_WRAP_T:                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);                            GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                                    GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);                            break;                    }                }                // If texture data was changed, (eg. render to texture) the                // filtering needs to be redone.                if (texture.needsFilterRefresh()) {                    texture.setNeedsFilterRefresh(false);                    // set up filter mode                    GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                            GL11.GL_TEXTURE_MAG_FILTER, textureFilter[texture                                    .getFilter()]);                    // set up mipmap mode                    GL11.glTexParameteri(GL11.GL_TEXTURE_2D,                            GL11.GL_TEXTURE_MIN_FILTER, textureMipmap[texture                                    .getMipmap()]);                }                // set up correction mode                GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT,                        textureCorrection[texture.getCorrection()]);                                if( i < numFixedTexUnits) {	                // set Texture apply mode.	                GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE,	                        textureApply[texture.getApply()]);		                if (texture.getApply() == Texture.AM_COMBINE	                        && supportsMultiTexture) {		                    if (texture.getCombineFuncAlpha() == Texture.ACF_DOT3_RGB	                            || texture.getCombineFuncAlpha() == Texture.ACF_DOT3_RGBA) {	                        GL11.glDisable(GL11.GL_TEXTURE_2D);	                        break;	                    }		                    if (texture.getCombineFuncRGB() == Texture.ACF_DOT3_RGB	                            || texture.getCombineFuncRGB() == Texture.ACF_DOT3_RGBA) {	                        // check if supported before proceeding	                        if (!GLContext.getCapabilities().GL_ARB_texture_env_dot3) {	                            GL11.glDisable(GL11.GL_TEXTURE_2D);	                            break;	                        }	                    }	                    int cf = texture.getCombineFuncRGB();	                    GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_COMBINE_RGB,	                            textureCombineFunc[cf]);	                    GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE0_RGB,	                            textureCombineSrc[texture.getCombineSrc0RGB()]);	                    GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_OPERAND0_RGB,	                            textureCombineOpRgb[texture.getCombineOp0RGB()]);	                    if (cf != Texture.ACF_REPLACE) {	                        GL11.glTexEnvi(GL11.GL_TEXTURE_ENV,	                                GL13.GL_SOURCE1_RGB, textureCombineSrc[texture	                                        .getCombineSrc1RGB()]);	                        GL11	                                .glTexEnvi(GL11.GL_TEXTURE_ENV,	                                        GL13.GL_OPERAND1_RGB,	                                        textureCombineOpRgb[texture	                                                .getCombineOp1RGB()]);	                        if (cf == Texture.ACF_INTERPOLATE) {	                            GL11.glTexEnvi(GL11.GL_TEXTURE_ENV,	                                    GL13.GL_OPERAND2_RGB,	                                    textureCombineOpRgb[texture	                                            .getCombineOp2RGB()]);	                            GL11.glTexEnvi(GL11.GL_TEXTURE_ENV,	                                    GL13.GL_SOURCE2_RGB,	                                    textureCombineSrc[texture	                                            .getCombineSrc2RGB()]);	                        }	                    }		                    cf = texture.getCombineFuncAlpha();	                    GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_COMBINE_ALPHA,	                            textureCombineFunc[cf]);	                    GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE0_ALPHA,	                            textureCombineSrc[texture.getCombineSrc0Alpha()]);	                    GL11	                            .glTexEnvi(GL11.GL_TEXTURE_ENV,	                                    GL13.GL_OPERAND0_ALPHA,	                                    textureCombineOpAlpha[texture	                                            .getCombineOp0Alpha()]);	                    if (cf != Texture.ACF_REPLACE) {	                        GL11	                                .glTexEnvi(GL11.GL_TEXTURE_ENV,	                                        GL13.GL_SOURCE1_ALPHA,	                                        textureCombineSrc[texture	                                                .getCombineSrc1Alpha()]);	                        GL11.glTexEnvi(GL11.GL_TEXTURE_ENV,	                                GL13.GL_OPERAND1_ALPHA,	                                textureCombineOpAlpha[texture	                                        .getCombineOp1Alpha()]);	                        if (cf == Texture.ACF_INTERPOLATE) {	                            GL11.glTexEnvi(GL11.GL_TEXTURE_ENV,	                                    GL13.GL_SOURCE2_ALPHA,	                                    textureCombineSrc[texture	                                            .getCombineSrc2Alpha()]);	                            GL11.glTexEnvi(GL11.GL_TEXTURE_ENV,	                                    GL13.GL_OPERAND2_ALPHA,	                                    textureCombineOpAlpha[texture	                                            .getCombineOp2Alpha()]);	                        }	                    }		                    GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL13.GL_RGB_SCALE,	                            texture.getCombineScaleRGB());	                    GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_ALPHA_SCALE,	                            texture.getCombineScaleAlpha());		                }		                if (texture.getEnvironmentalMapMode() == Texture.EM_IGNORE) {	                    // Do not alter the texure generation status. This allows	                    // complex texturing outside of texture state to exist	                    // peacefully.	                } else if (texture.getEnvironmentalMapMode() == Texture.EM_NONE) {	                    // turn off anything that other maps might have turned on	                    GL11.glDisable(GL11.GL_TEXTURE_GEN_Q);	                    GL11.glDisable(GL11.GL_TEXTURE_GEN_R);	                    GL11.glDisable(GL11.GL_TEXTURE_GEN_S);	                    GL11.glDisable(GL11.GL_TEXTURE_GEN_T);	                } else if (texture.getEnvironmentalMapMode() == Texture.EM_SPHERE) {	                    // generate texture coordinates	                    GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE,	                            GL11.GL_SPHERE_MAP);	                    GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE,	                            GL11.GL_SPHERE_MAP);	                    GL11.glEnable(GL11.GL_TEXTURE_GEN_S);	                    GL11.glEnable(GL11.GL_TEXTURE_GEN_T);	                }		                texture.getBlendColor().rewind();	                GL11.glTexEnv(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_COLOR,	                        texture.getBlendColor());                }            }                    } else {            if (supportsMultiTexture) {                for (int i = 0; i < numFixedTexUnits; i++) {                    GL13.glActiveTexture(GL13.GL_TEXTURE0 + i);                    GL11.glDisable(GL11.GL_TEXTURE_2D);                    currentTexture[i] = null;                }            } else {                GL11.glDisable(GL11.GL_TEXTURE_2D);                currentTexture[0] = null;            }        }    }