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; }   GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, textureFilter[texture .getFilter()]);   GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, textureMipmap[texture .getMipmap()]);
  public void apply() {    for (int i = 0; i < numTexUnits; i++) {      if (!isEnabled() || getTexture(i) == null) {        if (GLContext.GL_ARB_multitexture && GLContext.OpenGL13) {          GL13.glActiveTexture(GL13.GL_TEXTURE0 + i);        }        GL11.glDisable(GL11.GL_TEXTURE_2D);      }    }    if (isEnabled()) {      int index;      Texture texture;      for (int i = 0; i < numTexUnits; i++) {        index = GL13.GL_TEXTURE0 + i;        texture = getTexture(i);        if (texture == null) {          continue;        }        if (GLContext.GL_ARB_multitexture && GLContext.OpenGL13) {          GL13.glActiveTexture(index);        }        GL11.glEnable(GL11.GL_TEXTURE_2D);        //texture not yet loaded.        if (texture.getTextureId() == 0) {          // Create A IntBuffer For Image Address In Memory          //Create the texture          id.clear();          GL11.glGenTextures(id);          GL11.glBindTexture(GL11.GL_TEXTURE_2D, id.get(0));          texture.setTextureId(id.get(0));          // pass image data to OpenGL          Image image = texture.getImage();          if (image == null) {            LoggingSystem.getLogger().log(Level.WARNING,                                          "Image data for texture is null.");            texture.setTextureId( -1);            return;          }          // Set up the anisotropic filter.          GL11.glTexParameterf(GL11.GL_TEXTURE_2D,                               EXTTextureFilterAnisotropic.GL_TEXTURE_MAX_ANISOTROPY_EXT,                               texture.getAnisoLevel());          if (texture.getMipmap() == Texture.MM_NONE) {            GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0,                              imageComponents[image.getType()], image                              .getWidth(), image.getHeight(), 0,                              imageFormats[image.getType()],                              GL11.GL_UNSIGNED_BYTE, image.getData());          } else {            GLU.gluBuild2DMipmaps(GL11.GL_TEXTURE_2D,                                  imageComponents[image.getType()], image                                  .getWidth(), image.getHeight(),                                  imageFormats[image.getType()],                                  GL11.GL_UNSIGNED_BYTE, image.getData());          }        } else {          // texture already exists in OpenGL, just bind it          GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture                             .getTextureId());        }        // set up correction mode        GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT,                    textureCorrection[texture.getCorrection()]);        if (texture.getApply() == Texture.AM_COMBINE            && GLContext.GL_ARB_multitexture) {          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV,                         GL11.GL_TEXTURE_ENV_MODE, textureApply[texture                         .getApply()]);          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.GL_ARB_texture_env_dot3) {              GL11.glDisable(GL11.GL_TEXTURE_2D);              break;            }          }          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_COMBINE_RGB,                         textureCombineFunc[texture.getCombineFuncRGB()]);          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_COMBINE_ALPHA,                         textureCombineFunc[texture.getCombineFuncAlpha()]);          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE0_RGB,                         textureCombineSrc[texture.getCombineSrc0RGB()]);          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE1_RGB,                         textureCombineSrc[texture.getCombineSrc1RGB()]);          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE2_RGB,                         textureCombineSrc[texture.getCombineSrc2RGB()]);          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE0_ALPHA,                         textureCombineSrc[texture.getCombineSrc0Alpha()]);          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE1_ALPHA,                         textureCombineSrc[texture.getCombineSrc1Alpha()]);          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_SOURCE2_ALPHA,                         textureCombineSrc[texture.getCombineSrc2Alpha()]);          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_OPERAND0_RGB,                         textureCombineOpRgb[texture.getCombineOp0RGB()]);          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_OPERAND1_RGB,                         textureCombineOpRgb[texture.getCombineOp1RGB()]);          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, GL13.GL_OPERAND2_RGB,                         textureCombineOpRgb[texture.getCombineOp2RGB()]);          GL11              .glTexEnvi(GL11.GL_TEXTURE_ENV,                         GL13.GL_OPERAND0_ALPHA,                         textureCombineOpAlpha[texture                         .getCombineOp0Alpha()]);          GL11              .glTexEnvi(GL11.GL_TEXTURE_ENV,                         GL13.GL_OPERAND1_ALPHA,                         textureCombineOpAlpha[texture                         .getCombineOp1Alpha()]);          GL11              .glTexEnvi(GL11.GL_TEXTURE_ENV,                         GL13.GL_OPERAND2_ALPHA,                         textureCombineOpAlpha[texture                         .getCombineOp2Alpha()]);          GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL13.GL_RGB_SCALE,                         textureCombineScale[texture.getCombineScaleRGB()]);          GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_ALPHA_SCALE,                         textureCombineScale[texture.getCombineScaleRGB()]);        } 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);        } else 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 {          // set up apply mode          GL11.glTexEnvi(GL11.GL_TEXTURE_ENV,                         GL11.GL_TEXTURE_ENV_MODE, textureApply[texture                         .getApply()]);        }        GL11.glTexEnv(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_COLOR,                      texture.getBlendColor());        // 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;        }        // 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()]);      }    }  }