#ifdef GLI_IS_MULTIDRIVER
 
typedef struct GLI_TheInterface_
{
    /* DOMATxxx.C */
    void (* GLI_vDoTextureSelection)(GLI_tdstInternalGlobalValuesFor3dEngine *p_stGlobaleMT);
    void (* GLI_DRV_vWrite16bBitmapToBackBuffer) ( GLD_tdhDevice _hGLDDevice,GLD_tdhViewport _hGLDViewport,void *_p_vSourceBuffer,long _lWidth,long _lHeight,long _lDestX,long _lDestY );
    void (* GLI_vSetFogParams)( tdstFogParams *_p_stFogParams );
    
    /* ACCES_XXXX.C */
    void (* GLI_vDrawTriangle)(void);
    void (* GLI_vDrawZSortedTriangle)(void *p_3Point);
    void (* GLI_DRV_vSendSpriteToClip)(GLI_tdstAligned2DVector *a4_st2DVertex ,MTH_tdxReal xZ ,GLI_tdstInternalGlobalValuesFor3dEngine *p_stGlobaleMT);
    void (* GLI_DRV_vSendSpriteToClipWithUV)( GLI_tdstAligned2DVector *a4_st2DVertex , MTH_tdxReal *a8_stUVVertex, MTH_tdxReal xZ , GLI_tdstInternalGlobalValuesFor3dEngine *p_stGlobaleMT);
    
    /* ACCES_ALL.C */
    void (* GLI_TestBackfaceClockwise)(void);
    void (* GLI_TestBackfaceCounterClockwize)(void);
    void (* GLI_vComputeMovingUVW)(void);
    void (* GLI_vComputeNormalUVW)(void);
    void (* GLI_vComputeMirrorUVW)(void);
    void (* GLI_vComputeXYZ)(void);
    void (* GLI_FastMirrorCulling)(void);
    void (* GLI_FastZCull)(void);
    void (* GLI_bCullingXMax_XMin)(void);
    void (* GLI_bCullingXMax)(void);
    void (* GLI_bCullingXMin)(void);
    void (* GLI_bCullingYMax_YMin)(void);
    void (* GLI_bCullingYMax)(void);
    void (* GLI_bCullingYMin)(void);
    void (* GLI_bCullingXYALL)(void);
    void (* GLI_XMinCLipping)(void);
    void (* GLI_YMinCLipping)(void);
    void (* GLI_XMaxCLipping)(void);
    void (* GLI_YMaxCLipping)(void);
    void (* GLI_vZClipping)(void);
    void (* GLI_FastMirrorCLipping)(void);
    void (* GLI_FastWaterCLipping)(void);
 
    /* HDWTex_xxx.C */
    void (* GLI_DRV_vDownLoadTextures)(long , long, BOOL);
    long (* GLI_DRV_lGetHardwareTotalTextureMemorySize)(long);
    long (* GLI_DRV_lGetHardwareMaxTextureSize)(void);
    long (* GLI_DRV_lIsHardwareAcceptNonSquaredTextures)(void);
    void (* GLI_DRV_vUnLoadTextures)(void);
 
    /* init_XXX.c */
    void (* GLI_DRV_vFlipDevice)(long lNbFrames);
    void (* GLI_DRV_vClearDevice)(BOOL ZBuffer, BOOL ColorBuffer, unsigned long Color);
    void (* GLI_vBeginDrawingTexturedMirrors)(void);
    void (* GLI_vBeginDrawingTexturedMirrorsSurfaces)(void);
    void (* GLI_vEndDrawingTexturedMirrors)(void);
    void (* GLI_DRV_xInitDriver) (void);
    void (* GLI_DRV_vCloseDriver) (void);
    long (* GLI_DRV_lWhatIsGli)(void);
    long (* GLI_lGetNumOfVersion)(void);
    unsigned char *(* GLI_ucGetTextOfVersion)(void);
    void (* GLI_DRV_vClearZBufferRegion)(long lXStart,long lXEnd,long lYStart,long lYEnd);
 
} GLI_TheInterface;
 
#define GLI_INTERFACE_FUNC(a) a##GLI_DRIVER
 
#else
#define GLI_INTERFACE_FUNC(a) a
#endif
