1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
| private static final HashMap glConstantsMap = new HashMap(513, 1.0f); static { loadGLConstants(); }
public static int decode(String glstring) throws OpenGLException { Integer i = (Integer) glConstantsMap.get(glstring.toUpperCase()); if (i == null) throw new OpenGLException(glstring+" is not a recognised GL constant"); else return i.intValue(); } public static String recode(int code) { for (Iterator i = glConstantsMap.keySet().iterator(); i.hasNext(); ) { String s = (String) i.next(); Integer n = (Integer) glConstantsMap.get(s); if (n.intValue() == code) return s; } throw new OpenGLException(code+" is not a known GL code"); } private static void loadGLConstants(Class intf) { Field[] field = intf.getFields(); for (int i = 0; i < field.length; i ++) { try { if (Modifier.isStatic(field[i].getModifiers()) && Modifier.isPublic(field[i].getModifiers()) && Modifier.isFinal(field[i].getModifiers()) && field[i].getType().equals(int.class)) glConstantsMap.put(field[i].getName(), new Integer(field[i].getInt(null))); } catch (Exception e) { } } }
private static void loadGLConstants() { Class[] classes = new Class[] { GL11.class, GL12.class, GL13.class, GL14.class, GL15.class, ARBMultitexture.class, ARBTextureCubeMap.class, ARBDepthTexture.class, ARBFragmentProgram.class, ARBMatrixPalette.class, ARBMultisample.class, ARBPointParameters.class, ARBShadow.class, ARBShadowAmbient.class, ARBTextureBorderClamp.class, ARBTextureCompression.class, ARBTextureEnvCombine.class, ARBTextureEnvDot3.class, ARBTextureMirroredRepeat.class, ARBTransposeMatrix.class, ARBVertexBlend.class, ARBVertexBufferObject.class, ARBVertexProgram.class, ARBWindowPos.class, EXTDrawRangeElements.class, EXTAbgr.class, EXTBgra.class, EXTBlendFuncSeparate.class, EXTBlendSubtract.class, EXTCompiledVertexArray.class, EXTFogCoord.class, EXTMultiDrawArrays.class, EXTPackedPixels.class, EXTPointParameters.class, EXTRescaleNormal.class, EXTSecondaryColor.class, EXTSeparateSpecularColor.class, EXTSharedTexturePalette.class, EXTStencilTwoSide.class, EXTStencilWrap.class, EXTTextureCompressionS3TC.class, EXTTextureEnvCombine.class, EXTTextureEnvDot3.class, EXTTextureFilterAnisotropic.class, EXTTextureLODBias.class, EXTVertexShader.class, EXTVertexWeighting.class, ATIElementArray.class, ATIEnvmapBumpmap.class, ATIFragmentShader.class, ATIPnTriangles.class, ATISeparateStencil.class, ATITextureMirrorOnce.class, ATIVertexArrayObject.class, ATIVertexStreams.class, NVCopyDepthToColor.class, NVDepthClamp.class, NVEvaluators.class, NVFence.class, NVFogDistance.class, NVLightMaxExponent.class, NVOcclusionQuery.class, NVPackedDepthStencil.class, NVPointSprite.class, NVRegisterCombiners.class, NVRegisterCombiners2.class, NVTexgenReflection.class, NVTextureEnvCombine4.class, NVTextureRectangle.class, NVTextureShader.class, NVTextureShader2.class, NVTextureShader3.class, NVVertexArrayRange.class, NVVertexArrayRange2.class, NVVertexProgram.class }; for (int i = 0; i < classes.length; i ++) { loadGLConstants(classes[i]); } } |