165 lines
4.7 KiB
C
165 lines
4.7 KiB
C
/*
|
|
Tested with LINT
|
|
*/
|
|
#include <KAMUI.H>
|
|
#include "init_gli.h"
|
|
#include "gli_st.h"
|
|
#include "GLI_Defn.h"
|
|
#include "light_st.h"
|
|
#include "PvObj_st.h"
|
|
#include "GLI_interface.h"
|
|
|
|
KMVERTEXBUFFDESC VertexBufferDesc;
|
|
KMSURFACEDESC PrimarySurfaceDesc; /* Primary frame buffer*/
|
|
KMSURFACEDESC BackSurfaceDesc; /* Back-buffer frame buffer*/
|
|
KMSURFACEDESC stSpecialTexture;
|
|
KMSURFACEDESC stSpecialTexture20;
|
|
KMSURFACEDESC stSpecialTexture21;
|
|
KMVERTEXCONTEXT stRenderingContex;
|
|
|
|
extern short TEXTURETWIDDLED[];
|
|
|
|
extern volatile long gsbIsRender;
|
|
#define GLI_C_SiSeOFVertexBuffer (512288)
|
|
extern GLI_tdstInternalGlobalValuesFor3dEngine *GLI_BIG_GLOBALS;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
void GLI_vEndOfRenderingCallback(void *pnull)
|
|
{
|
|
gsbIsRender &= 0xFFFFFFFF - 1;
|
|
}
|
|
|
|
void GLI_vEndOfVertexTransfertCallback(void *pnull)
|
|
{
|
|
gsbIsRender &= 0xFFFFFFFF - 2;
|
|
}
|
|
|
|
void GLI_vWaitEndOfVertexTransfert()
|
|
{
|
|
while (gsbIsRender & 2) {};
|
|
}
|
|
|
|
void GLI_vWaitEndOfRendering()
|
|
{
|
|
while (gsbIsRender & 1) {};
|
|
}
|
|
|
|
void GLI_vEndOfVSyncCallback(void *pnull)
|
|
{
|
|
gsbIsRender &= ~4;
|
|
}
|
|
|
|
void GLI_vWaitEndOfVSync()
|
|
{
|
|
gsbIsRender |= 4;
|
|
while (gsbIsRender & 4) {};
|
|
}
|
|
|
|
|
|
|
|
/* Global initialisation.*/
|
|
void GLI_DRV_xInitDriver( HWND _hWnd, BOOL _bFullScreen, long _lWidth, long _lHeight, long _lBpp )
|
|
{
|
|
kmInitDevice(KM_VGA);
|
|
kmSetDisplayMode( KM_DSPMODE_VGA,KM_DSPBPP_RGB565,FALSE,TRUE);
|
|
kmCreateFrameBufferSurface(&PrimarySurfaceDesc,640,480,FALSE,FALSE);
|
|
kmCreateFrameBufferSurface(&BackSurfaceDesc,640,480,FALSE,FALSE);
|
|
kmCreateVertexBuffer(&VertexBufferDesc, GLI_C_SiSeOFVertexBuffer , 0 , GLI_C_SiSeOFVertexBuffer , 0);
|
|
kmActivateFrameBuffer( &PrimarySurfaceDesc,&BackSurfaceDesc,FALSE,TRUE);
|
|
kmSetStrideWidth(512);
|
|
kmCreateTextureSurface(&stSpecialTexture,512,512, KM_TEXTURE_STRIDE | KM_TEXTURE_RGB565);
|
|
#define WATERSIZE 256L
|
|
kmCreateTextureSurface(&stSpecialTexture20,WATERSIZE ,WATERSIZE, KM_TEXTURE_TWIDDLED | KM_TEXTURE_ARGB4444);
|
|
kmSetEORCallback(GLI_vEndOfRenderingCallback,NULL);
|
|
kmSetEndOfVertexCallback(GLI_vEndOfVertexTransfertCallback,NULL);
|
|
kmSetVSyncCallback(GLI_vEndOfVSyncCallback,NULL);
|
|
memset( &stRenderingContex, 0, sizeof(stRenderingContex));
|
|
}
|
|
|
|
/* Temporary function.*/
|
|
/*
|
|
long GLI_INTERFACE_FUNC(GLI_DRV_lWhatIsGli)(void)
|
|
{
|
|
return GLI_C_VersionGlide;
|
|
}
|
|
*/
|
|
|
|
|
|
void GLI_DRV_vCloseDriver ()
|
|
{
|
|
}
|
|
|
|
/* Return version number.*/
|
|
/*
|
|
long GLI_INTERFACE_FUNC(GLI_lGetNumOfVersion)(void)
|
|
{
|
|
return 0;//g_stCurLLInterface.iMode;
|
|
}
|
|
*/
|
|
|
|
/* Return a pointer on the text version of GLI engine.*/
|
|
/*unsigned char *GLI_INTERFACE_FUNC(GLI_ucGetTextOfVersion)(void)
|
|
{
|
|
return NULL;//g_stCurLLInterface.ucTextMode;
|
|
}
|
|
*/
|
|
|
|
/* Erase a rectangular region of Z buffer.*/
|
|
void GLI_INTERFACE_FUNC(GLI_DRV_vClearZBufferRegion)(long lXStart,long lXEnd,long lYStart,long lYEnd)
|
|
{
|
|
/* g_stCurLLInterface.p_fnClearZBufferRegion(lXStart,lXEnd,lYStart,lYEnd);*/
|
|
if (!bDrawMirrorSymetric)
|
|
GLI_BIG_GLOBALS->lDisplayMenuIsDetected = 1;
|
|
}
|
|
void GLI_INTERFACE_FUNC(GLI_vBeginDrawingTexturedMirrors)(void)
|
|
{
|
|
GLI_BIG_GLOBALS->bDrawMirrorSymetric = 1;
|
|
}
|
|
void GLI_INTERFACE_FUNC(GLI_vBeginDrawingTexturedMirrorsSurfaces)()
|
|
{
|
|
/*kmSetFramebufferTexture(&TexSurfaceDesc2);*/
|
|
GLI_BIG_GLOBALS->lAMirrorIsDetected = 3;
|
|
/* GLI_vWaitEndOfRendering();*/
|
|
/* GLI_vWaitEndOfVSync();*/
|
|
/* kmRenderTexture(&stSpecialTexture);*/
|
|
/* GLI_vWaitEndOfRendering();*/
|
|
/* GLI_vWaitEndOfVSync();*/
|
|
/* kmFlipFrameBuffer();// */
|
|
/* GLI_vWaitEndOfRendering();*/
|
|
/* Now Draw The reversed World . It will be displayed with Frame later.*/
|
|
/* GLI_vWaitEndOfRendering();*/
|
|
}
|
|
void
|
|
GLI_INTERFACE_FUNC(GLI_vEndDrawingTexturedMirrors)()
|
|
{
|
|
GLI_BIG_GLOBALS->lAMirrorIsDetected &= 1;
|
|
GLI_BIG_GLOBALS->bDrawMirrorSymetric = 0;
|
|
}
|
|
|
|
/*extern long GLI_xIsGliInit();*/
|
|
void GLI_INTERFACE_FUNC(GLI_DRV_vFlipDevice)(long lNbFrames)
|
|
{
|
|
if (!GLI_MDRV_xIsGliInit())
|
|
return;
|
|
|
|
GLI_BIG_GLOBALS->lDisplayMenuIsDetected = 0;
|
|
GLI_BIG_GLOBALS->lAMirrorIsDetected = 0;
|
|
gsbIsRender |= 3;
|
|
kmFlipFrameBuffer();/* */
|
|
kmRender/*Direct*/();
|
|
}
|
|
|
|
void GLI_INTERFACE_FUNC(GLI_DRV_vClearDevice)(BOOL ZBuffer, BOOL ColorBuffer, unsigned long Color)
|
|
{
|
|
}
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} /*extern "C"*/
|
|
#endif
|