Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

ps2gl.h

Go to the documentation of this file.
00001 /*        Copyright (C) 2000,2001,2002  Sony Computer Entertainment America
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    // immBufferVertexSize is the size in vertices of the buffers used to store
00024    // glBegin/glEnd geometry. there are currently 2 sets of buffers:
00025    // vertex, normal, tex coord, and color buffers.
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    // gs memory allocation
00035 
00036    extern void pglPrintGsMemAllocation(void);
00037    extern int pglHasGsMemBeenInitted(void);
00038 
00039    // gs mem slots
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    // gs mem areas
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    // display and draw management
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    // textures
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    // geometry
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    // general
00104 
00105    void pglEnable( GLenum cap );
00106    void pglDisable( GLenum cap );
00107 
00108    void pglSetInterlacingOffset( float yPixels );
00109 
00110    const char* pglGetCurRendererName();
00111 
00112    // custom renderers
00113 
00114    void pglBeginRendererDefs();
00115    void pglRegisterRenderer( void *renderer );
00116    void pglEndRendererDefs();
00117 
00118    // custom prim types
00119 
00120    void pglRegisterCustomPrimType( GLenum primType,
00121                                    pglU64_t requirements,
00122                                    pglU64_t rendererReqMask,
00123                                    int mergeContiguous );
00124 
00125    // custom state
00126 
00127    void pglEnableCustom( pglU64_t flag );
00128    void pglDisableCustom( pglU64_t flag );
00129 
00130 #ifdef __cplusplus
00131 }
00132 #endif // __cplusplus
00133 
00134 // "capabilities" (things that can be passed to pglEnable/pglDisable
00135 
00136 #define PGL_CLIPPING            2
00137 
00138 // for pglFinishRendering
00139 
00140 #define PGL_FORCE_IMMEDIATE_STOP        1
00141 #define PGL_DONT_FORCE_IMMEDIATE_STOP   0
00142 
00143 // for pglSetDrawBuffers / pglSetDisplayBuffers
00144 
00145 #define PGL_NONINTERLACED       0
00146 #define PGL_INTERLACED          1
00147 
00148 // custom prim types
00149 
00150 #define PGL_DONT_MERGE_CONTIGUOUS       0
00151 #define PGL_MERGE_CONTIGUOUS            1
00152 
00153 // various limits
00154 
00155 #define PGL_MAX_CUSTOM_RENDERERS        64
00156 #define PGL_MAX_CUSTOM_PRIM_TYPES       32
00157 
00158 #endif // ps2gl_h

ps2gl version cvs