List of usage examples for org.lwjgl.opengl ARBTextureEnvCombine GL_COMBINE_RGB_ARB
int GL_COMBINE_RGB_ARB
To view the source code for org.lwjgl.opengl ARBTextureEnvCombine GL_COMBINE_RGB_ARB.
Click Source Link
From source file:com.ardor3d.scene.state.lwjgl.LwjglTextureStateUtil.java
License:Open Source License
public static void applyCombineFactors(final Texture texture, final TextureUnitRecord unitRecord, final int unit, final TextureStateRecord record, final ContextCapabilities caps) { // check that this is a valid fixed function unit. glTexEnv is only // supported for unit < GL_MAX_TEXTURE_UNITS if (unit >= caps.getNumberOfFixedTextureUnits()) { return;//from w ww . jav a2s . c o m } // first thing's first... if we are doing dot3 and don't // support it, disable this texture. boolean checked = false; if (!caps.isEnvDot3TextureCombineSupported() && (texture.getCombineFuncRGB() == CombinerFunctionRGB.Dot3RGB || texture.getCombineFuncRGB() == CombinerFunctionRGB.Dot3RGBA)) { // disable disableTexturing(unitRecord, record, unit, caps); // No need to continue return; } // Okay, now let's set our scales if we need to: // First RGB Combine scale if (!unitRecord.isValid() || unitRecord.envRGBScale != texture.getCombineScaleRGB()) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_RGB_SCALE_ARB, texture.getCombineScaleRGB().floatValue()); unitRecord.envRGBScale = texture.getCombineScaleRGB(); } // Then Alpha Combine scale if (!unitRecord.isValid() || unitRecord.envAlphaScale != texture.getCombineScaleAlpha()) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_ALPHA_SCALE, texture.getCombineScaleAlpha().floatValue()); unitRecord.envAlphaScale = texture.getCombineScaleAlpha(); } // Time to set the RGB combines final CombinerFunctionRGB rgbCombineFunc = texture.getCombineFuncRGB(); if (!unitRecord.isValid() || unitRecord.rgbCombineFunc != rgbCombineFunc) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_COMBINE_RGB_ARB, LwjglTextureUtil.getGLCombineFuncRGB(rgbCombineFunc)); unitRecord.rgbCombineFunc = rgbCombineFunc; } CombinerSource combSrcRGB = texture.getCombineSrc0RGB(); if (!unitRecord.isValid() || unitRecord.combSrcRGB0 != combSrcRGB) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_SOURCE0_RGB_ARB, LwjglTextureUtil.getGLCombineSrc(combSrcRGB)); unitRecord.combSrcRGB0 = combSrcRGB; } CombinerOperandRGB combOpRGB = texture.getCombineOp0RGB(); if (!unitRecord.isValid() || unitRecord.combOpRGB0 != combOpRGB) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_OPERAND0_RGB_ARB, LwjglTextureUtil.getGLCombineOpRGB(combOpRGB)); unitRecord.combOpRGB0 = combOpRGB; } // We only need to do Arg1 or Arg2 if we aren't in Replace mode if (rgbCombineFunc != CombinerFunctionRGB.Replace) { combSrcRGB = texture.getCombineSrc1RGB(); if (!unitRecord.isValid() || unitRecord.combSrcRGB1 != combSrcRGB) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_SOURCE1_RGB_ARB, LwjglTextureUtil.getGLCombineSrc(combSrcRGB)); unitRecord.combSrcRGB1 = combSrcRGB; } combOpRGB = texture.getCombineOp1RGB(); if (!unitRecord.isValid() || unitRecord.combOpRGB1 != combOpRGB) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_OPERAND1_RGB_ARB, LwjglTextureUtil.getGLCombineOpRGB(combOpRGB)); unitRecord.combOpRGB1 = combOpRGB; } // We only need to do Arg2 if we are in Interpolate mode if (rgbCombineFunc == CombinerFunctionRGB.Interpolate) { combSrcRGB = texture.getCombineSrc2RGB(); if (!unitRecord.isValid() || unitRecord.combSrcRGB2 != combSrcRGB) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_SOURCE2_RGB_ARB, LwjglTextureUtil.getGLCombineSrc(combSrcRGB)); unitRecord.combSrcRGB2 = combSrcRGB; } combOpRGB = texture.getCombineOp2RGB(); if (!unitRecord.isValid() || unitRecord.combOpRGB2 != combOpRGB) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_OPERAND2_RGB_ARB, LwjglTextureUtil.getGLCombineOpRGB(combOpRGB)); unitRecord.combOpRGB2 = combOpRGB; } } } // Now Alpha combines final CombinerFunctionAlpha alphaCombineFunc = texture.getCombineFuncAlpha(); if (!unitRecord.isValid() || unitRecord.alphaCombineFunc != alphaCombineFunc) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_COMBINE_ALPHA_ARB, LwjglTextureUtil.getGLCombineFuncAlpha(alphaCombineFunc)); unitRecord.alphaCombineFunc = alphaCombineFunc; } CombinerSource combSrcAlpha = texture.getCombineSrc0Alpha(); if (!unitRecord.isValid() || unitRecord.combSrcAlpha0 != combSrcAlpha) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_SOURCE0_ALPHA_ARB, LwjglTextureUtil.getGLCombineSrc(combSrcAlpha)); unitRecord.combSrcAlpha0 = combSrcAlpha; } CombinerOperandAlpha combOpAlpha = texture.getCombineOp0Alpha(); if (!unitRecord.isValid() || unitRecord.combOpAlpha0 != combOpAlpha) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_OPERAND0_ALPHA_ARB, LwjglTextureUtil.getGLCombineOpAlpha(combOpAlpha)); unitRecord.combOpAlpha0 = combOpAlpha; } // We only need to do Arg1 or Arg2 if we aren't in Replace mode if (alphaCombineFunc != CombinerFunctionAlpha.Replace) { combSrcAlpha = texture.getCombineSrc1Alpha(); if (!unitRecord.isValid() || unitRecord.combSrcAlpha1 != combSrcAlpha) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_SOURCE1_ALPHA_ARB, LwjglTextureUtil.getGLCombineSrc(combSrcAlpha)); unitRecord.combSrcAlpha1 = combSrcAlpha; } combOpAlpha = texture.getCombineOp1Alpha(); if (!unitRecord.isValid() || unitRecord.combOpAlpha1 != combOpAlpha) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_OPERAND1_ALPHA_ARB, LwjglTextureUtil.getGLCombineOpAlpha(combOpAlpha)); unitRecord.combOpAlpha1 = combOpAlpha; } // We only need to do Arg2 if we are in Interpolate mode if (alphaCombineFunc == CombinerFunctionAlpha.Interpolate) { combSrcAlpha = texture.getCombineSrc2Alpha(); if (!unitRecord.isValid() || unitRecord.combSrcAlpha2 != combSrcAlpha) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_SOURCE2_ALPHA_ARB, LwjglTextureUtil.getGLCombineSrc(combSrcAlpha)); unitRecord.combSrcAlpha2 = combSrcAlpha; } combOpAlpha = texture.getCombineOp2Alpha(); if (!unitRecord.isValid() || unitRecord.combOpAlpha2 != combOpAlpha) { if (!checked) { checkAndSetUnit(unit, record, caps); checked = true; } GL11.glTexEnvi(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_OPERAND2_ALPHA_ARB, LwjglTextureUtil.getGLCombineOpAlpha(combOpAlpha)); unitRecord.combOpAlpha2 = combOpAlpha; } } } }
From source file:espresso3d.engine.renderer.E3DGeometryRenderer.java
License:Open Source License
/*********************************/ public void setupTextureUnits(int glTextureID, int detail0TextureID, int detail1TextureID) { ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE0_ARB); if (glTextureID != -1) { GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glBindTexture(GL11.GL_TEXTURE_2D, glTextureID); /* if(detail0TextureID != -1) {// w w w.ja va 2 s . c om GL11.glTexEnvf (GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, ARBTextureEnvCombine.GL_COMBINE_ARB); GL11.glTexEnvf (GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_COMBINE_RGB_ARB, GL11.GL_REPLACE); } else {*/ GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_MODULATE); // } } else GL11.glDisable(GL11.GL_TEXTURE_2D); if (getEngine().getFeatureChecker().getArbMultitextureNumTexUnitsSupported() < 2) return; ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE1_ARB); if (detail0TextureID != -1) { GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glBindTexture(GL11.GL_TEXTURE_2D, detail0TextureID); GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, ARBTextureEnvCombine.GL_COMBINE_ARB); GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_COMBINE_RGB_ARB, GL11.GL_ADD); } else GL11.glDisable(GL11.GL_TEXTURE_2D); if (getEngine().getFeatureChecker().getArbMultitextureNumTexUnitsSupported() < 3) return; ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE2_ARB); if (detail1TextureID != -1) { GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glBindTexture(GL11.GL_TEXTURE_2D, detail1TextureID); GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, ARBTextureEnvCombine.GL_COMBINE_ARB); GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, ARBTextureEnvCombine.GL_COMBINE_RGB_ARB, GL11.GL_ADD); } else GL11.glDisable(GL11.GL_TEXTURE_2D); }