250 lines
7.7 KiB
C
250 lines
7.7 KiB
C
/*
|
|
=======================================================================================
|
|
Name : Init_Gli.c
|
|
Author : Philippe Vimont
|
|
Description : Init/close Gli + misc functions
|
|
=======================================================================================
|
|
Modification -> Author : Date :
|
|
Description :
|
|
=======================================================================================
|
|
*/
|
|
|
|
#define MAIN_GLI
|
|
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
#include "init_gli.h"
|
|
#include "gli_st.h"
|
|
#include "GLI_Defn.h"
|
|
#include "light_st.h"
|
|
#include "PvObj_st.h"
|
|
#include "material.h"
|
|
#include "linktab.h"
|
|
#include "Liste.h"
|
|
#include "watrplan.h"
|
|
#include "Priv_Obj.h"
|
|
#include "matstack.h"
|
|
#include "light.h"
|
|
#include "Object.h"
|
|
#include "texture.h"
|
|
#include "TMR.h"
|
|
#include "PRF.h"
|
|
#include "DLLInter.h"
|
|
#include "DispMode.h"
|
|
#include "GliText.h"
|
|
#include "DLLCaps.h"
|
|
#include "Tex.h"
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
|
/*
|
|
=======================================================================================
|
|
Constants
|
|
=======================================================================================
|
|
*/
|
|
/* Defined in TMR\Timer.cxx */
|
|
extern u_long fn_ulTimerTickPerSecond(short wTimerType);
|
|
|
|
extern ACP_tdxHandleOfMaterial gs_hDefaultMaterial;
|
|
static long GLI_gsIsInit = 0;
|
|
|
|
|
|
//float gs_xConstantFor3dfxBugFloat;
|
|
|
|
/*
|
|
=======================================================================================
|
|
External
|
|
=======================================================================================
|
|
*/
|
|
|
|
extern HWND fn_hGetApplicationWindow(void);
|
|
extern void GLI_vInitLensFlare(void) ;
|
|
|
|
extern void TEX_vSaveGlobales();
|
|
extern void TEX_vLoadGlobales();
|
|
extern void TEX_vSaveGlobalesFix();
|
|
extern void TEX_vLoadGlobalesFix();
|
|
|
|
#ifdef EXGEOM_APPLI
|
|
#define fn_vInitFrameLenght()
|
|
#else
|
|
void fn_vInitFrameLenght (void);
|
|
#endif
|
|
|
|
extern unsigned char g_ucMemorySnapshot;
|
|
extern char g_bSaveLoadFix;
|
|
extern unsigned long GLI_g_ulFrameLength;
|
|
extern GLI_tdstInternalGlobalValuesFor3dEngine * GLI_BIG_GLOBALS;
|
|
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
|
|
|
/* End of turn engine.*/
|
|
/*
|
|
void GLI_vEndOfTurnEngine(void)
|
|
{
|
|
}
|
|
*/
|
|
|
|
/*
|
|
=======================================================================================
|
|
Gli initialisation function
|
|
=======================================================================================
|
|
*/
|
|
|
|
/*
|
|
----------------------------------------------------------------------------------------
|
|
Description : initialize gli data
|
|
----------------------------------------------------------------------------------------
|
|
*/
|
|
void GLI_xInitGli (void)
|
|
{
|
|
static long lFirst = 1;
|
|
|
|
if (lFirst)
|
|
{
|
|
lFirst = 0;
|
|
|
|
/*
|
|
GLI_g_ulFrameLength = (long) ( ((float) fn_ulTimerTickPerSecond( C_wTimerFrequencyHigh )) / 60.0f );
|
|
*/
|
|
MMG_fn_vAddMemoryInfo (MMG_C_lTypeGLI , MMG_C_lSubTypeGlobal , NULL);
|
|
GLI_BIG_GLOBALS = (GLI_tdstInternalGlobalValuesFor3dEngine *)TMP_M_p_Malloc(sizeof(GLI_tdstInternalGlobalValuesFor3dEngine));
|
|
GLI_BIG_GLOBALS->GLD_RenderingCounter = -1;
|
|
GLI_BIG_GLOBALS->p_stActiveFog = NULL;
|
|
GLI_BIG_GLOBALS->p_stLastComputedFog = NULL;
|
|
GLI_BIG_GLOBALS->xFogIsOn = 0;
|
|
GLI_BIG_GLOBALS->lAMirrorIsDetected = 0;
|
|
GLI_BIG_GLOBALS->bDrawMirrorSymetric = 0;
|
|
GLI_BIG_GLOBALS->lDisplayMenuIsDetected = 0;
|
|
GLI_BIG_GLOBALS->xGlobalAlpha = 0.0f;
|
|
|
|
GLI_DRV_lSendDataToDll("GliBigGlobals", GLI_BIG_GLOBALS);
|
|
|
|
GLI_xCreateMaterial( &gs_hDefaultMaterial); /* little bug.*/
|
|
GLI_vIniTextRead();
|
|
GLI_vCreateObjectsReference();/* create collision visual objects.*/
|
|
//GLI_fn_vInitText();
|
|
GLI_vInitWaterplaneModule();
|
|
GLI_vSpecularOff();
|
|
GLI_vInitLensFlare() ;
|
|
GLI_xInitMatrixStack();
|
|
}
|
|
|
|
GLI_BIG_GLOBALS -> p_TheZListe = NULL;
|
|
GLI_g_stCaps.fRefreshRate = 0.0f;
|
|
|
|
GLI_DRV_xInitDriver( fn_hGetApplicationWindow(), GLI_fn_lIsFullScreenMode(), GLI_fn_lDisplayModeWidth(), GLI_fn_lDisplayModeHeight(), GLI_fn_lDisplayModeBPP() );
|
|
|
|
if ( (GLI_g_stCaps.fRefreshRate < 40.0f) || (GLI_g_stCaps.fRefreshRate >= 210.0f ) )
|
|
GLI_g_stCaps.fRefreshRate = 60.0f;
|
|
|
|
/* compute video frame length (for flip with synchro and meca) */
|
|
GLI_g_ulFrameLength = (long) ( (float) fn_ulTimerTickPerSecond( C_wTimerFrequencyMedium ) / GLI_g_stCaps.fRefreshRate );
|
|
/*GLI_g_ulFrameLength = (long) ( ((float) fn_ulTimerTickPerSecond( C_wTimerFrequencyMedium )) / 60.0f );*/
|
|
|
|
fn_vInitFrameLenght();
|
|
PRF_fn_vUpdateMonitorFrequency( (unsigned long)GLI_g_stCaps.fRefreshRate );
|
|
|
|
GLI_gsIsInit = 1;
|
|
}
|
|
|
|
/*
|
|
----------------------------------------------------------------------------------------
|
|
Description : close driver
|
|
----------------------------------------------------------------------------------------
|
|
*/
|
|
void GLI_vCloseGli( void )
|
|
{
|
|
GLI_gsIsInit = 0;
|
|
GLI_DRV_vCloseDriver();
|
|
}
|
|
|
|
/*
|
|
----------------------------------------------------------------------------------------
|
|
Description : return non zero if gli is initialized
|
|
----------------------------------------------------------------------------------------
|
|
*/
|
|
long GLI_xIsGliInit()
|
|
{
|
|
return GLI_gsIsInit;
|
|
}
|
|
|
|
/*
|
|
=======================================================================================
|
|
Other functions
|
|
=======================================================================================
|
|
*/
|
|
|
|
/*
|
|
----------------------------------------------------------------------------------------
|
|
Description : called after all graphic data are loaded
|
|
----------------------------------------------------------------------------------------
|
|
*/
|
|
void GLI_vEndofGeometricLoad()
|
|
{
|
|
if (g_ucMemorySnapshot == 2)
|
|
{
|
|
if(!g_bSaveLoadFix)
|
|
{
|
|
TEX_vSaveGlobales(); /* Save binary data's*/
|
|
}
|
|
else
|
|
{
|
|
TEX_vSaveGlobalesFix();
|
|
}
|
|
}
|
|
if (g_ucMemorySnapshot == 1)
|
|
{
|
|
if(!g_bSaveLoadFix)
|
|
{
|
|
TEX_vLoadGlobales(); /* Load binary data's*/
|
|
}
|
|
else
|
|
{
|
|
TEX_vLoadGlobalesFix();
|
|
}
|
|
}
|
|
|
|
/*
|
|
* load textures
|
|
*/
|
|
GLI_vComputeTextures ();
|
|
}
|
|
|
|
/*
|
|
----------------------------------------------------------------------------------------
|
|
Description : memory signal (to change memory channel)
|
|
----------------------------------------------------------------------------------------
|
|
*/
|
|
void GLI_vSignalCurrentMemoryChannel(unsigned char ucCurrentChannel)
|
|
{
|
|
GLI_TEX_vSignalCurrentMemoryChannel(ucCurrentChannel);
|
|
}
|
|
|
|
/*
|
|
----------------------------------------------------------------------------------------
|
|
Description : memory signal (to free memory channel)
|
|
----------------------------------------------------------------------------------------
|
|
*/
|
|
void GLI_vKillMemoryChannel(unsigned char ucCurrentChannel)
|
|
{
|
|
GLI_TEX_vKillMemoryChannel(ucCurrentChannel);
|
|
}
|
|
|
|
/*
|
|
----------------------------------------------------------------------------------------
|
|
Description : draw a bar (not implemented : called by rasters display)
|
|
----------------------------------------------------------------------------------------
|
|
*/
|
|
void GLI_vDrawBar (long _lX0, long _lY0, long _lLength, long _lHeight)
|
|
{
|
|
}
|
|
|
|
#ifdef __cplusplus
|
|
} /*extern "C"*/
|
|
#endif
|