void GFXStringEnumTranslate::init()
{
   static bool sInitCalled = false;

   if( sInitCalled )
      return;

   sInitCalled = true;

   INIT_LOOKUPTABLE( GFXStringIndexFormat, GFXIndexFormat, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringIndexFormat, GFXIndexFormat16 );
   GFX_STRING_ASSIGN_MACRO( GFXStringIndexFormat, GFXIndexFormat32 );
   VALIDATE_LOOKUPTABLE( GFXStringIndexFormat, GFXIndexFormat );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE_EX( GFXStringSamplerState, GFXSAMP, const char *, GFXStringSamplerStateValueLookup );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringSamplerState, GFXSAMPAddressU, GFXStringTextureAddress );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringSamplerState, GFXSAMPAddressV, GFXStringTextureAddress );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringSamplerState, GFXSAMPAddressW, GFXStringTextureAddress );
   GFX_STRING_ASSIGN_MACRO( GFXStringSamplerState, GFXSAMPBorderColor );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringSamplerState, GFXSAMPMagFilter, GFXStringTextureFilter );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringSamplerState, GFXSAMPMinFilter, GFXStringTextureFilter );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringSamplerState, GFXSAMPMipFilter, GFXStringTextureFilter );
   GFX_STRING_ASSIGN_MACRO( GFXStringSamplerState, GFXSAMPMipMapLODBias );
   GFX_STRING_ASSIGN_MACRO( GFXStringSamplerState, GFXSAMPMaxMipLevel );
   GFX_STRING_ASSIGN_MACRO( GFXStringSamplerState, GFXSAMPMaxAnisotropy );

   GFX_STRING_ASSIGN_MACRO( GFXStringSamplerState, GFXSAMPSRGBTexture );
   GFX_STRING_ASSIGN_MACRO( GFXStringSamplerState, GFXSAMPElementIndex );
   GFX_STRING_ASSIGN_MACRO( GFXStringSamplerState, GFXSAMPDMapOffset );

   VALIDATE_LOOKUPTABLE( GFXStringSamplerState, GFXSAMP );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXStringTextureFormat, GFXFormat, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR8G8B8 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR8G8B8A8 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR8G8B8X8 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR32F );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR5G6B5 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR5G5B5A1 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR5G5B5X1 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatA4L4 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatA8L8 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatA8 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatL8 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatDXT1 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatDXT2 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatDXT3 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatDXT4 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatDXT5 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatD32 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatD24X8 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatD24S8 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatD24FS8 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatD16 );

   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR32G32B32A32F );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR16G16B16A16F );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatL16 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR16G16B16A16 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR16G16 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR16F );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR16G16F );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFormat, GFXFormatR10G10B10A2 );
   VALIDATE_LOOKUPTABLE( GFXStringTextureFormat, GFXFormat);
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE_EX( GFXStringRenderState, GFXRenderState, const char *, GFXStringRenderStateValueLookup );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSZEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSFillMode );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSZWriteEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSAlphaTestEnable );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSSrcBlend, GFXStringBlend );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSDestBlend, GFXStringBlend );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSCullMode, GFXStringCullMode );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSZFunc, GFXStringCmpFunc );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSAlphaRef );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSAlphaFunc, GFXStringCmpFunc );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSAlphaBlendEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSStencilEnable );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSStencilFail, GFXStringStencilOp );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSStencilZFail, GFXStringStencilOp );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSStencilPass, GFXStringStencilOp );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSStencilFunc, GFXStringCmpFunc );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSStencilRef );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSStencilMask );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSStencilWriteMask );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap0 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap1 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap2 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap3 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap4 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap5 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap6 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap7 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSClipPlaneEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSPointSize );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSPointSizeMin );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSPointSize_Max );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSPointSpriteEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSMultiSampleantiAlias );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSMultiSampleMask );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSShadeMode );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSLastPixel );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSClipping );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSPointScaleEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSPointScale_A );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSPointScale_B );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSPointScale_C );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSLighting );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSAmbient );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSFogVertexMode );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSColorVertex );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSLocalViewer );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSNormalizeNormals );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSDiffuseMaterialSource );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSSpecularMaterialSource );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSAmbientMaterialSource );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSEmissiveMaterialSource );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSVertexBlend );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSFogEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSSpecularEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSFogColor );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSFogTableMode );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSFogStart );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSFogEnd );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSFogDensity );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSRangeFogEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSDebugMonitorToken );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSIndexedVertexBlendEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSTweenFactor );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSTextureFactor );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSPatchEdgeStyle );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSDitherEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSColorWriteEnable );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSBlendOp, GFXStringBlendOp );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSPositionDegree );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSNormalDegree );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSAntiAliasedLineEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSAdaptiveTess_X );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSAdaptiveTess_Y );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSdaptiveTess_Z );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSAdaptiveTess_W );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSEnableAdaptiveTesselation );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSScissorTestEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSSlopeScaleDepthBias );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSMinTessellationLevel );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSMaxTessellationLevel );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSTwoSidedStencilMode );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSCCWStencilFail );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSCCWStencilZFail );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSCCWStencilPass );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSCCWStencilFunc );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSColorWriteEnable1 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSColorWriteEnable2 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSolorWriteEnable3 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSBlendFactor );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSSRGBWriteEnable );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSDepthBias );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap8 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap9 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap10 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap11 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap12 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap13 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap14 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSWrap15 );
   GFX_STRING_ASSIGN_MACRO( GFXStringRenderState, GFXRSSeparateAlphaBlendEnable );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSSrcBlendAlpha, GFXStringBlend );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSDestBlendAlpha, GFXStringBlend );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringRenderState, GFXRSBlendOpAlpha, GFXStringBlendOp );

   VALIDATE_LOOKUPTABLE( GFXStringRenderState, GFXRenderState );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXStringTextureFilter, GFXTextureFilter, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFilter, GFXTextureFilterNone );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFilter, GFXTextureFilterPoint );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFilter, GFXTextureFilterLinear );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFilter, GFXTextureFilterAnisotropic );

   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFilter, GFXTextureFilterPyramidalQuad );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureFilter, GFXTextureFilterGaussianQuad );

   VALIDATE_LOOKUPTABLE( GFXStringTextureFilter, GFXTextureFilter );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXStringBlend, GFXBlend, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendZero );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendOne );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendSrcColor );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendInvSrcColor );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendSrcAlpha );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendInvSrcAlpha );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendDestAlpha );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendInvDestAlpha );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendDestColor );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendInvDestColor );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlend, GFXBlendSrcAlphaSat );
   VALIDATE_LOOKUPTABLE( GFXStringBlend, GFXBlend );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXStringBlendOp, GFXBlendOp, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlendOp, GFXBlendOpAdd );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlendOp, GFXBlendOpSubtract );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlendOp, GFXBlendOpRevSubtract );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlendOp, GFXBlendOpMin );
   GFX_STRING_ASSIGN_MACRO( GFXStringBlendOp, GFXBlendOpMax );
   VALIDATE_LOOKUPTABLE( GFXStringBlendOp, GFXBlendOp );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXStringStencilOp, GFXStencilOp, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringStencilOp, GFXStencilOpKeep );
   GFX_STRING_ASSIGN_MACRO( GFXStringStencilOp, GFXStencilOpZero );
   GFX_STRING_ASSIGN_MACRO( GFXStringStencilOp, GFXStencilOpReplace );
   GFX_STRING_ASSIGN_MACRO( GFXStringStencilOp, GFXStencilOpIncrSat );
   GFX_STRING_ASSIGN_MACRO( GFXStringStencilOp, GFXStencilOpDecrSat );
   GFX_STRING_ASSIGN_MACRO( GFXStringStencilOp, GFXStencilOpInvert );
   GFX_STRING_ASSIGN_MACRO( GFXStringStencilOp, GFXStencilOpIncr );
   GFX_STRING_ASSIGN_MACRO( GFXStringStencilOp, GFXStencilOpDecr );
   VALIDATE_LOOKUPTABLE( GFXStringStencilOp, GFXStencilOp );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXStringCmpFunc, GFXCmp, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringCmpFunc, GFXCmpNever );
   GFX_STRING_ASSIGN_MACRO( GFXStringCmpFunc, GFXCmpLess );
   GFX_STRING_ASSIGN_MACRO( GFXStringCmpFunc, GFXCmpEqual );
   GFX_STRING_ASSIGN_MACRO( GFXStringCmpFunc, GFXCmpLessEqual );
   GFX_STRING_ASSIGN_MACRO( GFXStringCmpFunc, GFXCmpGreater );
   GFX_STRING_ASSIGN_MACRO( GFXStringCmpFunc, GFXCmpNotEqual );
   GFX_STRING_ASSIGN_MACRO( GFXStringCmpFunc, GFXCmpGreaterEqual );
   GFX_STRING_ASSIGN_MACRO( GFXStringCmpFunc, GFXCmpAlways );
   VALIDATE_LOOKUPTABLE( GFXStringCmpFunc, GFXCmp );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXStringCullMode, GFXCull, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringCullMode, GFXCullNone );
   GFX_STRING_ASSIGN_MACRO( GFXStringCullMode, GFXCullCW );
   GFX_STRING_ASSIGN_MACRO( GFXStringCullMode, GFXCullCCW );
   VALIDATE_LOOKUPTABLE( GFXStringCullMode, GFXCull );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXStringPrimType, GFXPT, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringPrimType, GFXPointList );
   GFX_STRING_ASSIGN_MACRO( GFXStringPrimType, GFXLineList );
   GFX_STRING_ASSIGN_MACRO( GFXStringPrimType, GFXLineStrip );
   GFX_STRING_ASSIGN_MACRO( GFXStringPrimType, GFXTriangleList );
   GFX_STRING_ASSIGN_MACRO( GFXStringPrimType, GFXTriangleStrip );
   GFX_STRING_ASSIGN_MACRO( GFXStringPrimType, GFXTriangleFan );
   VALIDATE_LOOKUPTABLE( GFXStringPrimType, GFXPT );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE_EX( GFXStringTextureStageState, GFXTSS, const char *, GFXStringTextureStageStateValueLookup );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringTextureStageState, GFXTSSColorOp, GFXStringTextureOp );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSColorArg1 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSColorArg2 );
   GFX_STRING_ASSIGN_MACRO_EX( GFXStringTextureStageState, GFXTSSAlphaOp, GFXStringTextureOp );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSAlphaArg1 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSAlphaArg2 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSBumpEnvMat00 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSBumpEnvMat01 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSBumpEnvMat10 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSBumpEnvMat11 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSTexCoordIndex );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSBumpEnvlScale );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSBumpEnvlOffset );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSTextureTransformFlags );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSColorArg0 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSAlphaArg0 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSResultArg );

   GFX_STRING_ASSIGN_MACRO( GFXStringTextureStageState, GFXTSSConstant );
   VALIDATE_LOOKUPTABLE( GFXStringTextureStageState, GFXTSS );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXStringTextureAddress, GFXAddress, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureAddress, GFXAddressWrap );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureAddress, GFXAddressMirror );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureAddress, GFXAddressClamp );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureAddress, GFXAddressBorder );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureAddress, GFXAddressMirrorOnce );
   VALIDATE_LOOKUPTABLE(GFXStringTextureAddress, GFXAddress );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXStringTextureOp, GFXTOP, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPDisable );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPSelectARG1 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPSelectARG2 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPModulate );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPModulate2X );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPModulate4X );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPAdd );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPAddSigned );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPAddSigned2X );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPSubtract );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPAddSmooth );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPBlendDiffuseAlpha );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPBlendTextureAlpha );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPBlendFactorAlpha );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPBlendTextureAlphaPM );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPBlendCURRENTALPHA );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPPreModulate );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPModulateAlphaAddColor );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPModulateColorAddAlpha );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPModulateInvAlphaAddColor );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPModulateInvColorAddAlpha );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPBumpEnvMap );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPBumpEnvMapLuminance );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPDotProduct3 );
   GFX_STRING_ASSIGN_MACRO( GFXStringTextureOp, GFXTOPLERP );
   VALIDATE_LOOKUPTABLE( GFXStringTextureOp, GFXTOP );

   INIT_LOOKUPTABLE( GFXStringFillMode, GFXFill, const char * );
   GFX_STRING_ASSIGN_MACRO( GFXStringFillMode, GFXFillPoint );
   GFX_STRING_ASSIGN_MACRO( GFXStringFillMode, GFXFillWireframe );
   GFX_STRING_ASSIGN_MACRO( GFXStringFillMode, GFXFillSolid );
   VALIDATE_LOOKUPTABLE( GFXStringFillMode, GFXFill );
}
void GFXD3D9EnumTranslate::init()
{
   INIT_LOOKUPTABLE( GFXD3D9IndexFormat, GFXIndexFormat, _D3DFORMAT );
   GFXD3D9IndexFormat[GFXIndexFormat16] = D3DFMT_INDEX16;
   GFXD3D9IndexFormat[GFXIndexFormat32] = D3DFMT_INDEX32;
   VALIDATE_LOOKUPTABLE( GFXD3D9IndexFormat, GFXIndexFormat );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9SamplerState, GFXSAMP, _D3DSAMPLERSTATETYPE );
   GFXD3D9SamplerState[GFXSAMPAddressU] = D3DSAMP_ADDRESSU;
   GFXD3D9SamplerState[GFXSAMPAddressV] = D3DSAMP_ADDRESSV;
   GFXD3D9SamplerState[GFXSAMPAddressW] = D3DSAMP_ADDRESSW;
   GFXD3D9SamplerState[GFXSAMPBorderColor] = D3DSAMP_BORDERCOLOR;
   GFXD3D9SamplerState[GFXSAMPMagFilter] = D3DSAMP_MAGFILTER;
   GFXD3D9SamplerState[GFXSAMPMinFilter] = D3DSAMP_MINFILTER;
   GFXD3D9SamplerState[GFXSAMPMipFilter] = D3DSAMP_MIPFILTER;
   GFXD3D9SamplerState[GFXSAMPMipMapLODBias] = D3DSAMP_MIPMAPLODBIAS;
   GFXD3D9SamplerState[GFXSAMPMaxMipLevel] = D3DSAMP_MAXMIPLEVEL;
   GFXD3D9SamplerState[GFXSAMPMaxAnisotropy] = D3DSAMP_MAXANISOTROPY;
   GFXD3D9SamplerState[GFXSAMPSRGBTexture] = D3DSAMP_SRGBTEXTURE;
   GFXD3D9SamplerState[GFXSAMPElementIndex] = D3DSAMP_ELEMENTINDEX;
   GFXD3D9SamplerState[GFXSAMPDMapOffset] = D3DSAMP_DMAPOFFSET;
   VALIDATE_LOOKUPTABLE( GFXD3D9SamplerState, GFXSAMP );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9TextureFormat, GFXFormat, _D3DFORMAT );
   GFXD3D9TextureFormat[GFXFormatR8G8B8] = D3DFMT_R8G8B8;
   GFXD3D9TextureFormat[GFXFormatR8G8B8A8] = D3DFMT_A8R8G8B8;
   GFXD3D9TextureFormat[GFXFormatR8G8B8X8] = D3DFMT_X8R8G8B8;
   GFXD3D9TextureFormat[GFXFormatB8G8R8A8] = D3DFMT_A8R8G8B8;
   GFXD3D9TextureFormat[GFXFormatR5G6B5] = D3DFMT_R5G6B5;
   GFXD3D9TextureFormat[GFXFormatR5G5B5A1] = D3DFMT_A1R5G5B5;
   GFXD3D9TextureFormat[GFXFormatR5G5B5X1] = D3DFMT_X1R5G5B5;
   GFXD3D9TextureFormat[GFXFormatR32F] = D3DFMT_R32F;
   GFXD3D9TextureFormat[GFXFormatA4L4] = D3DFMT_A4L4;
   GFXD3D9TextureFormat[GFXFormatA8L8] = D3DFMT_A8L8;
   GFXD3D9TextureFormat[GFXFormatA8] = D3DFMT_A8;
   GFXD3D9TextureFormat[GFXFormatL8] = D3DFMT_L8;
   GFXD3D9TextureFormat[GFXFormatDXT1] = D3DFMT_DXT1;
   GFXD3D9TextureFormat[GFXFormatDXT2] = D3DFMT_DXT2;
   GFXD3D9TextureFormat[GFXFormatDXT3] = D3DFMT_DXT3;
   GFXD3D9TextureFormat[GFXFormatDXT4] = D3DFMT_DXT4;
   GFXD3D9TextureFormat[GFXFormatDXT5] = D3DFMT_DXT5;
   GFXD3D9TextureFormat[GFXFormatR32G32B32A32F] = D3DFMT_A32B32G32R32F;
   GFXD3D9TextureFormat[GFXFormatR16G16B16A16F] = D3DFMT_A16B16G16R16F;
   GFXD3D9TextureFormat[GFXFormatL16] = D3DFMT_L16;
   GFXD3D9TextureFormat[GFXFormatR16G16B16A16] = D3DFMT_A16B16G16R16;
   GFXD3D9TextureFormat[GFXFormatR16G16] = D3DFMT_G16R16;
   GFXD3D9TextureFormat[GFXFormatR16F] = D3DFMT_R16F;
   GFXD3D9TextureFormat[GFXFormatR16G16F] = D3DFMT_G16R16F;
   GFXD3D9TextureFormat[GFXFormatR10G10B10A2] = D3DFMT_A2R10G10B10;
   GFXD3D9TextureFormat[GFXFormatD32] = D3DFMT_D32;
   GFXD3D9TextureFormat[GFXFormatD24X8] = D3DFMT_D24X8;
   GFXD3D9TextureFormat[GFXFormatD24S8] = D3DFMT_D24S8;
   GFXD3D9TextureFormat[GFXFormatD24FS8] = D3DFMT_D24FS8;
   GFXD3D9TextureFormat[GFXFormatD16] = D3DFMT_D16;
   VALIDATE_LOOKUPTABLE( GFXD3D9TextureFormat, GFXFormat);
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9RenderState, GFXRenderState, _D3DRENDERSTATETYPE );
   GFXD3D9RenderState[GFXRSZEnable] = D3DRS_ZENABLE;
   GFXD3D9RenderState[GFXRSFillMode] = D3DRS_FILLMODE;
   GFXD3D9RenderState[GFXRSZWriteEnable] = D3DRS_ZWRITEENABLE;
   GFXD3D9RenderState[GFXRSAlphaTestEnable] = D3DRS_ALPHATESTENABLE;
   GFXD3D9RenderState[GFXRSSrcBlend] = D3DRS_SRCBLEND;
   GFXD3D9RenderState[GFXRSDestBlend] = D3DRS_DESTBLEND;
   GFXD3D9RenderState[GFXRSCullMode] = D3DRS_CULLMODE;
   GFXD3D9RenderState[GFXRSZFunc] = D3DRS_ZFUNC;
   GFXD3D9RenderState[GFXRSAlphaRef] = D3DRS_ALPHAREF;
   GFXD3D9RenderState[GFXRSAlphaFunc] = D3DRS_ALPHAFUNC;
   GFXD3D9RenderState[GFXRSAlphaBlendEnable] = D3DRS_ALPHABLENDENABLE;
   GFXD3D9RenderState[GFXRSStencilEnable] = D3DRS_STENCILENABLE;
   GFXD3D9RenderState[GFXRSStencilFail] = D3DRS_STENCILFAIL;
   GFXD3D9RenderState[GFXRSStencilZFail] = D3DRS_STENCILZFAIL;
   GFXD3D9RenderState[GFXRSStencilPass] = D3DRS_STENCILPASS;
   GFXD3D9RenderState[GFXRSStencilFunc] = D3DRS_STENCILFUNC;
   GFXD3D9RenderState[GFXRSStencilRef] = D3DRS_STENCILREF;
   GFXD3D9RenderState[GFXRSStencilMask] = D3DRS_STENCILMASK;
   GFXD3D9RenderState[GFXRSStencilWriteMask] = D3DRS_STENCILWRITEMASK;
   GFXD3D9RenderState[GFXRSWrap0] = D3DRS_WRAP0;
   GFXD3D9RenderState[GFXRSWrap1] = D3DRS_WRAP1;
   GFXD3D9RenderState[GFXRSWrap2] = D3DRS_WRAP2;
   GFXD3D9RenderState[GFXRSWrap3] = D3DRS_WRAP3;
   GFXD3D9RenderState[GFXRSWrap4] = D3DRS_WRAP4;
   GFXD3D9RenderState[GFXRSWrap5] = D3DRS_WRAP5;
   GFXD3D9RenderState[GFXRSWrap6] = D3DRS_WRAP6;
   GFXD3D9RenderState[GFXRSWrap7] = D3DRS_WRAP7;
   GFXD3D9RenderState[GFXRSClipPlaneEnable] = D3DRS_CLIPPLANEENABLE;
   GFXD3D9RenderState[GFXRSPointSize] = D3DRS_POINTSIZE;
   GFXD3D9RenderState[GFXRSPointSizeMin] = D3DRS_POINTSIZE_MIN;
   GFXD3D9RenderState[GFXRSPointSize_Max] = D3DRS_POINTSIZE_MAX;
   GFXD3D9RenderState[GFXRSPointSpriteEnable] = D3DRS_POINTSPRITEENABLE;
   GFXD3D9RenderState[GFXRSMultiSampleantiAlias] = D3DRS_MULTISAMPLEANTIALIAS;
   GFXD3D9RenderState[GFXRSMultiSampleMask] = D3DRS_MULTISAMPLEMASK;
   GFXD3D9RenderState[GFXRSShadeMode] = D3DRS_SHADEMODE;
   GFXD3D9RenderState[GFXRSLastPixel] = D3DRS_LASTPIXEL;
   GFXD3D9RenderState[GFXRSClipping] = D3DRS_CLIPPING;
   GFXD3D9RenderState[GFXRSPointScaleEnable] = D3DRS_POINTSCALEENABLE;
   GFXD3D9RenderState[GFXRSPointScale_A] = D3DRS_POINTSCALE_A;
   GFXD3D9RenderState[GFXRSPointScale_B] = D3DRS_POINTSCALE_B;
   GFXD3D9RenderState[GFXRSPointScale_C] = D3DRS_POINTSCALE_C;
   GFXD3D9RenderState[GFXRSLighting] = D3DRS_LIGHTING;
   GFXD3D9RenderState[GFXRSAmbient] = D3DRS_AMBIENT;
   GFXD3D9RenderState[GFXRSFogVertexMode] = D3DRS_FOGVERTEXMODE;
   GFXD3D9RenderState[GFXRSColorVertex] = D3DRS_COLORVERTEX;
   GFXD3D9RenderState[GFXRSLocalViewer] = D3DRS_LOCALVIEWER;
   GFXD3D9RenderState[GFXRSNormalizeNormals] = D3DRS_NORMALIZENORMALS;
   GFXD3D9RenderState[GFXRSDiffuseMaterialSource] = D3DRS_DIFFUSEMATERIALSOURCE;
   GFXD3D9RenderState[GFXRSSpecularMaterialSource] = D3DRS_SPECULARMATERIALSOURCE;
   GFXD3D9RenderState[GFXRSAmbientMaterialSource] = D3DRS_AMBIENTMATERIALSOURCE;
   GFXD3D9RenderState[GFXRSEmissiveMaterialSource] = D3DRS_EMISSIVEMATERIALSOURCE;
   GFXD3D9RenderState[GFXRSVertexBlend] = D3DRS_VERTEXBLEND;
   GFXD3D9RenderState[GFXRSFogEnable] = D3DRS_FOGENABLE;
   GFXD3D9RenderState[GFXRSSpecularEnable] = D3DRS_SPECULARENABLE;
   GFXD3D9RenderState[GFXRSFogColor] = D3DRS_FOGCOLOR;
   GFXD3D9RenderState[GFXRSFogTableMode] = D3DRS_FOGTABLEMODE;
   GFXD3D9RenderState[GFXRSFogStart] = D3DRS_FOGSTART;
   GFXD3D9RenderState[GFXRSFogEnd] = D3DRS_FOGEND;
   GFXD3D9RenderState[GFXRSFogDensity] = D3DRS_FOGDENSITY;
   GFXD3D9RenderState[GFXRSRangeFogEnable] = D3DRS_RANGEFOGENABLE;
   GFXD3D9RenderState[GFXRSDebugMonitorToken] = D3DRS_DEBUGMONITORTOKEN;
   GFXD3D9RenderState[GFXRSIndexedVertexBlendEnable] = D3DRS_INDEXEDVERTEXBLENDENABLE;
   GFXD3D9RenderState[GFXRSTweenFactor] = D3DRS_TWEENFACTOR;
   GFXD3D9RenderState[GFXRSTextureFactor] = D3DRS_TEXTUREFACTOR;
   GFXD3D9RenderState[GFXRSPatchEdgeStyle] = D3DRS_PATCHEDGESTYLE;
   GFXD3D9RenderState[GFXRSPositionDegree] = D3DRS_POSITIONDEGREE;
   GFXD3D9RenderState[GFXRSNormalDegree] = D3DRS_NORMALDEGREE;
   GFXD3D9RenderState[GFXRSAntiAliasedLineEnable] = D3DRS_ANTIALIASEDLINEENABLE;
   GFXD3D9RenderState[GFXRSAdaptiveTess_X] = D3DRS_ADAPTIVETESS_X;
   GFXD3D9RenderState[GFXRSAdaptiveTess_Y] = D3DRS_ADAPTIVETESS_Y;
   GFXD3D9RenderState[GFXRSdaptiveTess_Z] = D3DRS_ADAPTIVETESS_Z;
   GFXD3D9RenderState[GFXRSAdaptiveTess_W] = D3DRS_ADAPTIVETESS_W;
   GFXD3D9RenderState[GFXRSEnableAdaptiveTesselation] = D3DRS_ENABLEADAPTIVETESSELLATION;
   GFXD3D9RenderState[GFXRSDitherEnable] = D3DRS_DITHERENABLE;
   GFXD3D9RenderState[GFXRSColorWriteEnable] = D3DRS_COLORWRITEENABLE;
   GFXD3D9RenderState[GFXRSBlendOp] = D3DRS_BLENDOP;
   GFXD3D9RenderState[GFXRSScissorTestEnable] = D3DRS_SCISSORTESTENABLE;
   GFXD3D9RenderState[GFXRSSlopeScaleDepthBias] = D3DRS_SLOPESCALEDEPTHBIAS;
   GFXD3D9RenderState[GFXRSMinTessellationLevel] = D3DRS_MINTESSELLATIONLEVEL;
   GFXD3D9RenderState[GFXRSMaxTessellationLevel] = D3DRS_MAXTESSELLATIONLEVEL;
   GFXD3D9RenderState[GFXRSTwoSidedStencilMode] = D3DRS_TWOSIDEDSTENCILMODE;
   GFXD3D9RenderState[GFXRSCCWStencilFail] = D3DRS_CCW_STENCILFAIL;
   GFXD3D9RenderState[GFXRSCCWStencilZFail] = D3DRS_CCW_STENCILZFAIL;
   GFXD3D9RenderState[GFXRSCCWStencilPass] = D3DRS_CCW_STENCILPASS;
   GFXD3D9RenderState[GFXRSCCWStencilFunc] = D3DRS_CCW_STENCILFUNC;
   GFXD3D9RenderState[GFXRSColorWriteEnable1] = D3DRS_COLORWRITEENABLE1;
   GFXD3D9RenderState[GFXRSColorWriteEnable2] = D3DRS_COLORWRITEENABLE2;
   GFXD3D9RenderState[GFXRSolorWriteEnable3] = D3DRS_COLORWRITEENABLE3;
   GFXD3D9RenderState[GFXRSBlendFactor] = D3DRS_BLENDFACTOR;
   GFXD3D9RenderState[GFXRSSRGBWriteEnable] = D3DRS_SRGBWRITEENABLE;
   GFXD3D9RenderState[GFXRSDepthBias] = D3DRS_DEPTHBIAS;
   GFXD3D9RenderState[GFXRSWrap8] = D3DRS_WRAP8;
   GFXD3D9RenderState[GFXRSWrap9] = D3DRS_WRAP9;
   GFXD3D9RenderState[GFXRSWrap10] = D3DRS_WRAP10;
   GFXD3D9RenderState[GFXRSWrap11] = D3DRS_WRAP11;
   GFXD3D9RenderState[GFXRSWrap12] = D3DRS_WRAP12;
   GFXD3D9RenderState[GFXRSWrap13] = D3DRS_WRAP13;
   GFXD3D9RenderState[GFXRSWrap14] = D3DRS_WRAP14;
   GFXD3D9RenderState[GFXRSWrap15] = D3DRS_WRAP15;
   GFXD3D9RenderState[GFXRSSeparateAlphaBlendEnable] = D3DRS_SEPARATEALPHABLENDENABLE;
   GFXD3D9RenderState[GFXRSSrcBlendAlpha] = D3DRS_SRCBLENDALPHA;
   GFXD3D9RenderState[GFXRSDestBlendAlpha] = D3DRS_DESTBLENDALPHA;
   GFXD3D9RenderState[GFXRSBlendOpAlpha] = D3DRS_BLENDOPALPHA;
   VALIDATE_LOOKUPTABLE( GFXD3D9RenderState, GFXRenderState );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9TextureFilter, GFXTextureFilter, _D3DTEXTUREFILTERTYPE );
   GFXD3D9TextureFilter[GFXTextureFilterNone] = D3DTEXF_NONE;
   GFXD3D9TextureFilter[GFXTextureFilterPoint] = D3DTEXF_POINT;
   GFXD3D9TextureFilter[GFXTextureFilterLinear] = D3DTEXF_LINEAR;
   GFXD3D9TextureFilter[GFXTextureFilterAnisotropic] = D3DTEXF_ANISOTROPIC;
   GFXD3D9TextureFilter[GFXTextureFilterPyramidalQuad] = D3DTEXF_PYRAMIDALQUAD;
   GFXD3D9TextureFilter[GFXTextureFilterGaussianQuad] = D3DTEXF_GAUSSIANQUAD;
   VALIDATE_LOOKUPTABLE( GFXD3D9TextureFilter, GFXTextureFilter );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9Blend, GFXBlend, _D3DBLEND );
   GFXD3D9Blend[GFXBlendZero] = D3DBLEND_ZERO;
   GFXD3D9Blend[GFXBlendOne] = D3DBLEND_ONE;
   GFXD3D9Blend[GFXBlendSrcColor] = D3DBLEND_SRCCOLOR;
   GFXD3D9Blend[GFXBlendInvSrcColor] = D3DBLEND_INVSRCCOLOR;
   GFXD3D9Blend[GFXBlendSrcAlpha] = D3DBLEND_SRCALPHA;
   GFXD3D9Blend[GFXBlendInvSrcAlpha] = D3DBLEND_INVSRCALPHA;
   GFXD3D9Blend[GFXBlendDestAlpha] = D3DBLEND_DESTALPHA;
   GFXD3D9Blend[GFXBlendInvDestAlpha] = D3DBLEND_INVDESTALPHA;
   GFXD3D9Blend[GFXBlendDestColor] = D3DBLEND_DESTCOLOR;
   GFXD3D9Blend[GFXBlendInvDestColor] = D3DBLEND_INVDESTCOLOR;
   GFXD3D9Blend[GFXBlendSrcAlphaSat] = D3DBLEND_SRCALPHASAT;
   VALIDATE_LOOKUPTABLE( GFXD3D9Blend, GFXBlend );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9BlendOp, GFXBlendOp, _D3DBLENDOP );
   GFXD3D9BlendOp[GFXBlendOpAdd] = D3DBLENDOP_ADD;
   GFXD3D9BlendOp[GFXBlendOpSubtract] = D3DBLENDOP_SUBTRACT;
   GFXD3D9BlendOp[GFXBlendOpRevSubtract] = D3DBLENDOP_REVSUBTRACT;
   GFXD3D9BlendOp[GFXBlendOpMin] = D3DBLENDOP_MIN;
   GFXD3D9BlendOp[GFXBlendOpMax] = D3DBLENDOP_MAX;
   VALIDATE_LOOKUPTABLE( GFXD3D9BlendOp, GFXBlendOp );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9StencilOp, GFXStencilOp, _D3DSTENCILOP );
   GFXD3D9StencilOp[GFXStencilOpKeep] = D3DSTENCILOP_KEEP;
   GFXD3D9StencilOp[GFXStencilOpZero] = D3DSTENCILOP_ZERO;
   GFXD3D9StencilOp[GFXStencilOpReplace] = D3DSTENCILOP_REPLACE;
   GFXD3D9StencilOp[GFXStencilOpIncrSat] = D3DSTENCILOP_INCRSAT;
   GFXD3D9StencilOp[GFXStencilOpDecrSat] = D3DSTENCILOP_DECRSAT;
   GFXD3D9StencilOp[GFXStencilOpInvert] = D3DSTENCILOP_INVERT;
   GFXD3D9StencilOp[GFXStencilOpIncr] = D3DSTENCILOP_INCR;
   GFXD3D9StencilOp[GFXStencilOpDecr] = D3DSTENCILOP_DECR;
   VALIDATE_LOOKUPTABLE( GFXD3D9StencilOp, GFXStencilOp );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9CmpFunc, GFXCmp, _D3DCMPFUNC );
   GFXD3D9CmpFunc[GFXCmpNever] = D3DCMP_NEVER;
   GFXD3D9CmpFunc[GFXCmpLess] = D3DCMP_LESS;
   GFXD3D9CmpFunc[GFXCmpEqual] = D3DCMP_EQUAL;
   GFXD3D9CmpFunc[GFXCmpLessEqual] = D3DCMP_LESSEQUAL;
   GFXD3D9CmpFunc[GFXCmpGreater] = D3DCMP_GREATER;
   GFXD3D9CmpFunc[GFXCmpNotEqual] = D3DCMP_NOTEQUAL;
   GFXD3D9CmpFunc[GFXCmpGreaterEqual] = D3DCMP_GREATEREQUAL;
   GFXD3D9CmpFunc[GFXCmpAlways] = D3DCMP_ALWAYS;
   VALIDATE_LOOKUPTABLE( GFXD3D9CmpFunc, GFXCmp );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9CullMode, GFXCull, _D3DCULL );
   GFXD3D9CullMode[GFXCullNone] = D3DCULL_NONE;
   GFXD3D9CullMode[GFXCullCW] = D3DCULL_CW;
   GFXD3D9CullMode[GFXCullCCW] = D3DCULL_CCW;
   VALIDATE_LOOKUPTABLE( GFXD3D9CullMode, GFXCull );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9FillMode, GFXFill, _D3DFILLMODE );
   GFXD3D9FillMode[GFXFillPoint] = D3DFILL_POINT;
   GFXD3D9FillMode[GFXFillWireframe] = D3DFILL_WIREFRAME;
   GFXD3D9FillMode[GFXFillSolid] = D3DFILL_SOLID;
   VALIDATE_LOOKUPTABLE( GFXD3D9FillMode, GFXFill );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9PrimType, GFXPT, _D3DPRIMITIVETYPE );
   GFXD3D9PrimType[GFXPointList] = D3DPT_POINTLIST;
   GFXD3D9PrimType[GFXLineList] = D3DPT_LINELIST;
   GFXD3D9PrimType[GFXLineStrip] = D3DPT_LINESTRIP;
   GFXD3D9PrimType[GFXTriangleList] = D3DPT_TRIANGLELIST;
   GFXD3D9PrimType[GFXTriangleStrip] = D3DPT_TRIANGLESTRIP;
   GFXD3D9PrimType[GFXTriangleFan] = D3DPT_TRIANGLEFAN;
   VALIDATE_LOOKUPTABLE( GFXD3D9PrimType, GFXPT );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9TextureStageState, GFXTSS, _D3DTEXTURESTAGESTATETYPE );
   GFXD3D9TextureStageState[GFXTSSColorOp] = D3DTSS_COLOROP;
   GFXD3D9TextureStageState[GFXTSSColorArg1] = D3DTSS_COLORARG1;
   GFXD3D9TextureStageState[GFXTSSColorArg2] = D3DTSS_COLORARG2;
   GFXD3D9TextureStageState[GFXTSSAlphaOp] = D3DTSS_ALPHAOP;
   GFXD3D9TextureStageState[GFXTSSAlphaArg1] = D3DTSS_ALPHAARG1;
   GFXD3D9TextureStageState[GFXTSSAlphaArg2] = D3DTSS_ALPHAARG2;
   GFXD3D9TextureStageState[GFXTSSBumpEnvMat00] = D3DTSS_BUMPENVMAT00;
   GFXD3D9TextureStageState[GFXTSSBumpEnvMat01] = D3DTSS_BUMPENVMAT01;
   GFXD3D9TextureStageState[GFXTSSBumpEnvMat10] = D3DTSS_BUMPENVMAT10;
   GFXD3D9TextureStageState[GFXTSSBumpEnvMat11] = D3DTSS_BUMPENVMAT11;
   GFXD3D9TextureStageState[GFXTSSTexCoordIndex] = D3DTSS_TEXCOORDINDEX;
   GFXD3D9TextureStageState[GFXTSSBumpEnvlScale] = D3DTSS_BUMPENVLSCALE;
   GFXD3D9TextureStageState[GFXTSSBumpEnvlOffset] = D3DTSS_BUMPENVLOFFSET;
   GFXD3D9TextureStageState[GFXTSSTextureTransformFlags] = D3DTSS_TEXTURETRANSFORMFLAGS;
   GFXD3D9TextureStageState[GFXTSSColorArg0] = D3DTSS_COLORARG0;
   GFXD3D9TextureStageState[GFXTSSAlphaArg0] = D3DTSS_ALPHAARG0;
   GFXD3D9TextureStageState[GFXTSSResultArg] = D3DTSS_RESULTARG;
   GFXD3D9TextureStageState[GFXTSSConstant] = D3DTSS_CONSTANT;
   VALIDATE_LOOKUPTABLE( GFXD3D9TextureStageState, GFXTSS );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9TextureAddress, GFXAddress, _D3DTEXTUREADDRESS );
   GFXD3D9TextureAddress[GFXAddressWrap] = D3DTADDRESS_WRAP ;
   GFXD3D9TextureAddress[GFXAddressMirror] = D3DTADDRESS_MIRROR;
   GFXD3D9TextureAddress[GFXAddressClamp] = D3DTADDRESS_CLAMP;
   GFXD3D9TextureAddress[GFXAddressBorder] = D3DTADDRESS_BORDER;
   GFXD3D9TextureAddress[GFXAddressMirrorOnce] = D3DTADDRESS_MIRRORONCE;
   VALIDATE_LOOKUPTABLE(GFXD3D9TextureAddress, GFXAddress );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9TextureOp, GFXTOP, _D3DTEXTUREOP );
   GFXD3D9TextureOp[GFXTOPDisable] = D3DTOP_DISABLE;
   GFXD3D9TextureOp[GFXTOPSelectARG1] = D3DTOP_SELECTARG1;
   GFXD3D9TextureOp[GFXTOPSelectARG2] = D3DTOP_SELECTARG2;
   GFXD3D9TextureOp[GFXTOPModulate] = D3DTOP_MODULATE;
   GFXD3D9TextureOp[GFXTOPModulate2X] = D3DTOP_MODULATE2X;
   GFXD3D9TextureOp[GFXTOPModulate4X] = D3DTOP_MODULATE4X;
   GFXD3D9TextureOp[GFXTOPAdd] = D3DTOP_ADD;
   GFXD3D9TextureOp[GFXTOPAddSigned] = D3DTOP_ADDSIGNED;
   GFXD3D9TextureOp[GFXTOPAddSigned2X] = D3DTOP_ADDSIGNED2X;
   GFXD3D9TextureOp[GFXTOPSubtract] = D3DTOP_SUBTRACT;
   GFXD3D9TextureOp[GFXTOPAddSmooth] = D3DTOP_ADDSMOOTH;
   GFXD3D9TextureOp[GFXTOPBlendDiffuseAlpha] = D3DTOP_BLENDDIFFUSEALPHA;
   GFXD3D9TextureOp[GFXTOPBlendTextureAlpha] = D3DTOP_BLENDTEXTUREALPHA;
   GFXD3D9TextureOp[GFXTOPBlendFactorAlpha] = D3DTOP_BLENDFACTORALPHA;
   GFXD3D9TextureOp[GFXTOPBlendTextureAlphaPM] = D3DTOP_BLENDTEXTUREALPHAPM;
   GFXD3D9TextureOp[GFXTOPBlendCURRENTALPHA] = D3DTOP_BLENDCURRENTALPHA;
   GFXD3D9TextureOp[GFXTOPPreModulate] = D3DTOP_PREMODULATE;
   GFXD3D9TextureOp[GFXTOPModulateAlphaAddColor] = D3DTOP_MODULATEALPHA_ADDCOLOR;
   GFXD3D9TextureOp[GFXTOPModulateColorAddAlpha] = D3DTOP_MODULATECOLOR_ADDALPHA;
   GFXD3D9TextureOp[GFXTOPModulateInvAlphaAddColor] = D3DTOP_MODULATEINVALPHA_ADDCOLOR;
   GFXD3D9TextureOp[GFXTOPModulateInvColorAddAlpha] = D3DTOP_MODULATEINVCOLOR_ADDALPHA;
   GFXD3D9TextureOp[GFXTOPBumpEnvMap] = D3DTOP_BUMPENVMAP;
   GFXD3D9TextureOp[GFXTOPBumpEnvMapLuminance] = D3DTOP_BUMPENVMAPLUMINANCE;
   GFXD3D9TextureOp[GFXTOPDotProduct3] = D3DTOP_DOTPRODUCT3;
   GFXD3D9TextureOp[GFXTOPLERP] = D3DTOP_LERP;
   VALIDATE_LOOKUPTABLE( GFXD3D9TextureOp, GFXTOP );
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
   INIT_LOOKUPTABLE( GFXD3D9DeclType, GFXDeclType, _D3DDECLTYPE );
   GFXD3D9DeclType[GFXDeclType_Float] = D3DDECLTYPE_FLOAT1;
   GFXD3D9DeclType[GFXDeclType_Float2] = D3DDECLTYPE_FLOAT2;
   GFXD3D9DeclType[GFXDeclType_Float3] = D3DDECLTYPE_FLOAT3;
   GFXD3D9DeclType[GFXDeclType_Float4] = D3DDECLTYPE_FLOAT4;
   GFXD3D9DeclType[GFXDeclType_Color] = D3DDECLTYPE_D3DCOLOR;
   VALIDATE_LOOKUPTABLE( GFXD3D9DeclType, GFXDeclType );
}