00001
00002
00003 This file is subject to the terms and conditions of the GNU Lesser
00004 General Public License Version 2.1. See the file "COPYING" in the
00005 main directory of this archive for more details. */
00006
00007 #ifndef ps2gl_h
00008 #define ps2gl_h
00009
00010 #include "GL/gl.h"
00011
00012
00013 * types
00014 */
00015
00016 typedef long pgl64_t;
00017 typedef unsigned long pglU64_t;
00018
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif // __cplusplus
00022
00023
00024
00025
00026 extern int pglInit( int immBufferVertexSize, int immDrawBufferQwordSize );
00027 extern int pglHasLibraryBeenInitted(void);
00028 extern void pglFinish(void);
00029
00030 extern void pglWaitForVU1(void);
00031 extern void pglWaitForVSync(void);
00032 extern void pglSwapBuffers(void);
00033
00034
00035
00036 extern void pglPrintGsMemAllocation(void);
00037 extern int pglHasGsMemBeenInitted(void);
00038
00039
00040
00041 typedef unsigned int pgl_slot_handle_t;
00042
00043 extern pgl_slot_handle_t pglAddGsMemSlot( int startingPage, int pageLength, unsigned int pixelMode );
00044 extern void pglLockGsMemSlot( pgl_slot_handle_t slot_handle );
00045 extern void pglUnlockGsMemSlot( pgl_slot_handle_t slot_handle );
00046 extern void pglRemoveAllGsMemSlots();
00047
00048
00049
00050 typedef unsigned int pgl_area_handle_t;
00051
00052 extern pgl_area_handle_t pglCreateGsMemArea( int width, int height, unsigned int pix_format );
00053 extern void pglDestroyGsMemArea( pgl_area_handle_t mem_area );
00054
00055 extern void pglAllocGsMemArea( pgl_area_handle_t mem_area );
00056 extern void pglFreeGsMemArea( pgl_area_handle_t mem_area );
00057
00058 extern void pglSetGsMemAreaWordAddr( pgl_area_handle_t mem_area, unsigned int addr );
00059
00060 extern void pglBindGsMemAreaToSlot( pgl_area_handle_t mem_area, pgl_slot_handle_t mem_slot );
00061 extern void pglUnbindGsMemArea( pgl_area_handle_t mem_area );
00062
00063 extern void pglLockGsMemArea( pgl_area_handle_t mem_area );
00064 extern void pglUnlockGsMemArea( pgl_area_handle_t mem_area );
00065
00066 extern int pglGsMemAreaIsAllocated( pgl_area_handle_t mem_area );
00067 extern unsigned int pglGetGsMemAreaWordAddr( pgl_area_handle_t mem_area );
00068
00069
00070
00071 extern void pglSetDisplayBuffers( int interlaced,
00072 pgl_area_handle_t frame0_mem, pgl_area_handle_t frame1_mem );
00073 extern void pglSetDrawBuffers( int interlaced,
00074 pgl_area_handle_t frame0_mem, pgl_area_handle_t frame1_mem,
00075 pgl_area_handle_t depth_mem );
00076
00077
00078
00079 void pglTextureFromGsMemArea( pgl_area_handle_t tex_area_handle );
00080
00081 void pglBindTextureToSlot( GLuint texId, pgl_slot_handle_t mem_slot );
00082 void pglFreeTexture( GLuint texId );
00083
00084
00085
00086 void pglNormalPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr );
00087 void pglDrawIndexedArrays( GLenum primType,
00088 int numIndices, const unsigned char* indices,
00089 int numVertices );
00090
00091 void pglBeginImmediateGeometry( void );
00092 void pglEndImmediateGeometry( void );
00093 void pglRenderImmediateGeometry( void );
00094 void pglFinishRenderingImmediateGeometry( int forceImmediateStop );
00095
00096 void pglBeginGeometry( void );
00097 void pglEndGeometry( void );
00098 void pglRenderGeometry( void );
00099 void pglFinishRenderingGeometry( int forceImmediateStop );
00100
00101 void pglSetRenderingFinishedCallback( void (*cb)(void) );
00102
00103
00104
00105 void pglEnable( GLenum cap );
00106 void pglDisable( GLenum cap );
00107
00108 void pglSetInterlacingOffset( float yPixels );
00109
00110 const char* pglGetCurRendererName();
00111
00112
00113
00114 void pglBeginRendererDefs();
00115 void pglRegisterRenderer( void *renderer );
00116 void pglEndRendererDefs();
00117
00118
00119
00120 void pglRegisterCustomPrimType( GLenum primType,
00121 pglU64_t requirements,
00122 pglU64_t rendererReqMask,
00123 int mergeContiguous );
00124
00125
00126
00127 void pglEnableCustom( pglU64_t flag );
00128 void pglDisableCustom( pglU64_t flag );
00129
00130 #ifdef __cplusplus
00131 }
00132 #endif // __cplusplus
00133
00134
00135
00136 #define PGL_CLIPPING 2
00137
00138
00139
00140 #define PGL_FORCE_IMMEDIATE_STOP 1
00141 #define PGL_DONT_FORCE_IMMEDIATE_STOP 0
00142
00143
00144
00145 #define PGL_NONINTERLACED 0
00146 #define PGL_INTERLACED 1
00147
00148
00149
00150 #define PGL_DONT_MERGE_CONTIGUOUS 0
00151 #define PGL_MERGE_CONTIGUOUS 1
00152
00153
00154
00155 #define PGL_MAX_CUSTOM_RENDERERS 64
00156 #define PGL_MAX_CUSTOM_PRIM_TYPES 32
00157
00158 #endif // ps2gl_h