001 package net.minecraft.client.renderer;
002
003 import cpw.mods.fml.relauncher.Side;
004 import cpw.mods.fml.relauncher.SideOnly;
005 import org.lwjgl.opengl.ARBMultitexture;
006 import org.lwjgl.opengl.GL13;
007 import org.lwjgl.opengl.GLContext;
008
009 @SideOnly(Side.CLIENT)
010 public class OpenGlHelper
011 {
012 /**
013 * An OpenGL constant corresponding to GL_TEXTURE0, used when setting data pertaining to auxiliary OpenGL texture
014 * units.
015 */
016 public static int defaultTexUnit;
017
018 /**
019 * An OpenGL constant corresponding to GL_TEXTURE1, used when setting data pertaining to auxiliary OpenGL texture
020 * units.
021 */
022 public static int lightmapTexUnit;
023
024 /**
025 * True if the renderer supports multitextures and the OpenGL version != 1.3
026 */
027 private static boolean useMultitextureARB = false;
028
029 /**
030 * Initializes the texture constants to be used when rendering lightmap values
031 */
032 public static void initializeTextures()
033 {
034 useMultitextureARB = GLContext.getCapabilities().GL_ARB_multitexture && !GLContext.getCapabilities().OpenGL13;
035
036 if (useMultitextureARB)
037 {
038 defaultTexUnit = 33984;
039 lightmapTexUnit = 33985;
040 }
041 else
042 {
043 defaultTexUnit = 33984;
044 lightmapTexUnit = 33985;
045 }
046 }
047
048 /**
049 * Sets the current lightmap texture to the specified OpenGL constant
050 */
051 public static void setActiveTexture(int par0)
052 {
053 if (useMultitextureARB)
054 {
055 ARBMultitexture.glActiveTextureARB(par0);
056 }
057 else
058 {
059 GL13.glActiveTexture(par0);
060 }
061 }
062
063 /**
064 * Sets the current lightmap texture to the specified OpenGL constant
065 */
066 public static void setClientActiveTexture(int par0)
067 {
068 if (useMultitextureARB)
069 {
070 ARBMultitexture.glClientActiveTextureARB(par0);
071 }
072 else
073 {
074 GL13.glClientActiveTexture(par0);
075 }
076 }
077
078 /**
079 * Sets the current coordinates of the given lightmap texture
080 */
081 public static void setLightmapTextureCoords(int par0, float par1, float par2)
082 {
083 if (useMultitextureARB)
084 {
085 ARBMultitexture.glMultiTexCoord2fARB(par0, par1, par2);
086 }
087 else
088 {
089 GL13.glMultiTexCoord2f(par0, par1, par2);
090 }
091 }
092 }