#ifndef GLI_PROJ_H #define GLI_PROJ_H #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ struct GLI_tdstAligned2DVector_; struct GLI_tdstAligned3DVector_; /* For DLL using these function :*/ #include "cpa_expt.h" #include "vertex.h" /**********************************************************************************************/ /* Name: GLI_xProjection */ /* Goal: Proje"ct a vertex*/ /* Code: Elie Khoury / 1.0*/ /* OPTIMMIZED : */ /**********************************************************************************************/ extern CPA_EXPORT void GLI_xProjection ( struct GLI_tdstCamera_ *p_stCam , MTH3D_tdstVector *p_stSource , GLI_tdst2DVertex *p_stDest ) ; /**********************************************************************************************/ /* Name: GLI_xSerialProjectionNoTrans 1.0*/ /* Goal: Perspective Project a list of 3d vertex- no Iso cameras*/ /* Code: Steve McCalla*/ /**********************************************************************************************/ extern CPA_EXPORT void GLI_xSerialProjectionNoTrans ( struct GLI_tdstCamera_ *p_stCam , long lNbOfVertex , struct GLI_tdstAligned3DVector_ *p_stSource , struct GLI_tdstAligned2DVector_ *p_stDest ); /**********************************************************************************************/ /* Name: GLI_xSerialProjection 1.1 */ /* Goal: Project a list of 3d vertex*/ /* Code: Elie Khoury / 1.0*/ /* Philippe Vimont / 1.1 -> ASSEMBLY CODE*/ /* OPTIMMIZED : */ /**********************************************************************************************/ extern CPA_EXPORT void GLI_xSerialProjection ( struct GLI_tdstCamera_ *p_stCam , long lNbOfVertex , struct GLI_tdstAligned3DVector_ *p_stSource , struct GLI_tdstAligned2DVector_ *p_stDest ) ; /**********************************************************************************************/ /* Name: GLI_vInit_Projections*/ /* Goal: Init a table for f(x) = 1/x;*/ /* Code: Philippe Vimont / 1.0*/ /* OPTIMMIZED : No*/ /**********************************************************************************************/ extern CPA_EXPORT void GLI_vInit_Projections(); void GLI_vSerialComputeScreenVertices(struct GLI_tdstInternalGlobalValuesFor3dEngine_ *p_stGlobalsParrameters,long xStart,long xNumber); typedef struct tdstGlobalsProjection_ { MTH_tdxReal xOoXTable[1024]; } tdstGlobalsProjection; #ifndef NO_ASSEMBLY_IN_GLI /**********************************************************************************************/ /* Name: GLI_xSerialProjectionAsm */ /* Goal: Project a table of vertices*/ /* Code: Philippe Vimont / 1.0*/ /* OPTIMMIZED : Assembly (serial.msm)*/ /**********************************************************************************************/ /***************************************************************************************/ /* C function*/ /***************************************************************************************/ /* extern CPA_EXPORT void GLI_xSerialProjectionAsm ( (long) long lNbOfVertex , (long) MTH_tdxReal *p_xCoefX, (long) MTH_tdxReal *p_xCoefY, (long) MTH3D_tdstVector *p_st3DVertices , (long) GLI_tdst2DVertex *p_st2DVertices , (long) GLI_tdst2DVertex *p_stTranslation ) ;*/ /***************************************************************************************/ /* Assembly function */ /***************************************************************************************/ #define GLI_xSerialProjectionAsm _GLI_xSerialProjectionAsm CALLING_ASM_6_0(GLI_xSerialProjectionAsm ,ecx ,ebx ,edx ,esi ,edi ,eax ); #ifdef WATCOM #pragma aux _GLI_xSerialProjectionAsm parm [ecx] [ebx] [edx] [esi] [edi] [eax] \ modify [ecx ebx edx esi edi eax]; #endif /**********************************************************************************************/ /* Name: GLI_xSerialComputeOox */ /* Goal: f(x) = 1/x;*/ /* Code: Philippe Vimont / 1.0*/ /* OPTIMMIZED : Assembly (serial.msm)*/ /**********************************************************************************************/ /***************************************************************************************/ /* C function*/ /***************************************************************************************/ /* extern CPA_EXPORT void GLI_xSerialComputeOox ( (long) lNbOfVertex , (long) p_stSource , (long) &p_stDest->xOoZ, (long) stProjGlobs.xOoXTable , (long) sizeof(MTH3D_tdstVector), (long) sizeof(GLI_tdst2DVertex));*/ /***************************************************************************************/ /* Assembly function */ /***************************************************************************************/ #define GLI_xSerialComputeOox _GLI_xSerialComputeOox CALLING_ASM_6_0(GLI_xSerialComputeOox ,ecx ,esi ,edi ,eax ,ebx ,edx ); #ifdef WATCOM #pragma aux _GLI_xSerialComputeOox parm [ecx][esi][edi][eax][ebx][edx] modify [ecx esi edi eax ebx edx] #endif #endif /*NO_ASSEMBLY_IN_GLI*/ #ifdef __cplusplus }; #endif /* __cplusplus */ #endif /* GLI_PROJ_H*/