private static void applyFogHint(final Quality quality, final FogStateRecord record) { int glHint = 0; switch (quality) { case PerVertex: glHint = GL11.GL_FASTEST; break; case PerPixel: glHint = GL11.GL_NICEST; break; } if (!record.isValid() || record.fogHint != glHint) { GL11.glHint(GL11.GL_FOG_HINT, glHint); record.fogHint = glHint; } } }
@Override public StateRecord createStateRecord(final ContextCapabilities caps) { return new FogStateRecord(); }
private static void applyFogMode(final DensityFunction densityFunction, final FogStateRecord record) { int glMode = 0; switch (densityFunction) { case Exponential: glMode = GL11.GL_EXP; break; case Linear: glMode = GL11.GL_LINEAR; break; case ExponentialSquared: glMode = GL11.GL_EXP2; break; } if (!record.isValid() || record.fogMode != glMode) { GL11.glFogi(GL11.GL_FOG_MODE, glMode); record.fogMode = glMode; } }
private static void applyFogHint(final Quality quality, final FogStateRecord record) { final GL gl = GLContext.getCurrentGL(); int glHint = 0; switch (quality) { case PerVertex: glHint = GL.GL_FASTEST; break; case PerPixel: glHint = GL.GL_NICEST; break; } if (!record.isValid() || record.fogHint != glHint) { gl.glHint(GL2ES1.GL_FOG_HINT, glHint); record.fogHint = glHint; } } }
private static void applyFogColor(final ReadOnlyColorRGBA color, final FogStateRecord record) { if (!record.isValid() || !color.equals(record.fogColor)) { record.fogColor.set(color); record.colorBuff.clear(); record.colorBuff.put(record.fogColor.getRed()).put(record.fogColor.getGreen()) .put(record.fogColor.getBlue()).put(record.fogColor.getAlpha()); record.colorBuff.flip(); GL11.glFog(GL11.GL_FOG_COLOR, record.colorBuff); } }
private static void applyFogColor(final ReadOnlyColorRGBA color, final FogStateRecord record) { final GL gl = GLContext.getCurrentGL(); if (!record.isValid() || !color.equals(record.fogColor)) { record.fogColor.set(color); record.colorBuff.clear(); record.colorBuff.put(record.fogColor.getRed()).put(record.fogColor.getGreen()) .put(record.fogColor.getBlue()).put(record.fogColor.getAlpha()); record.colorBuff.flip(); gl.getGL2ES1().glFogfv(GL2ES1.GL_FOG_COLOR, record.colorBuff); } }
private static void applyFogMode(final DensityFunction densityFunction, final FogStateRecord record) { final GL gl = GLContext.getCurrentGL(); int glMode = 0; switch (densityFunction) { case Exponential: glMode = GL2ES1.GL_EXP; break; case Linear: glMode = GL.GL_LINEAR; break; case ExponentialSquared: glMode = GL2ES1.GL_EXP2; break; } if (!record.isValid() || record.fogMode != glMode) { gl.getGL2().glFogi(GL2ES1.GL_FOG_MODE, glMode); record.fogMode = glMode; } }
private static void applyFogSource(final CoordinateSource source, final FogStateRecord record, final ContextCapabilities caps) { if (caps.isFogCoordinatesSupported()) { if (!record.isValid() || !source.equals(record.source)) { if (source == CoordinateSource.Depth) { GL11.glFogi(EXTFogCoord.GL_FOG_COORDINATE_SOURCE_EXT, EXTFogCoord.GL_FRAGMENT_DEPTH_EXT); } else { GL11.glFogi(EXTFogCoord.GL_FOG_COORDINATE_SOURCE_EXT, EXTFogCoord.GL_FOG_COORDINATE_EXT); } } } }
private static void enableFog(final boolean enable, final FogStateRecord record) { if (record.isValid()) { if (enable && !record.enabled) { GL11.glEnable(GL11.GL_FOG); record.enabled = true; } else if (!enable && record.enabled) { GL11.glDisable(GL11.GL_FOG); record.enabled = false; } } else { if (enable) { GL11.glEnable(GL11.GL_FOG); } else { GL11.glDisable(GL11.GL_FOG); } record.enabled = enable; } }
private static void enableFog(final boolean enable, final FogStateRecord record) { final GL gl = GLContext.getCurrentGL(); if (record.isValid()) { if (enable && !record.enabled) { gl.glEnable(GL2ES1.GL_FOG); record.enabled = true; } else if (!enable && record.enabled) { gl.glDisable(GL2ES1.GL_FOG); record.enabled = false; } } else { if (enable) { gl.glEnable(GL2ES1.GL_FOG); } else { gl.glDisable(GL2ES1.GL_FOG); } record.enabled = enable; } }
private static void applyFogSource(final CoordinateSource source, final FogStateRecord record, final ContextCapabilities caps) { final GL gl = GLContext.getCurrentGL(); if (caps.isFogCoordinatesSupported()) { if (!record.isValid() || !source.equals(record.source)) { if (source == CoordinateSource.Depth) { gl.getGL2().glFogi(GL2.GL_FOG_COORDINATE_SOURCE, GL2.GL_FRAGMENT_DEPTH); } else { gl.getGL2().glFogi(GL2.GL_FOG_COORDINATE_SOURCE, GL2.GL_FOG_COORDINATE); } } } }