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

linear_renderer.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 linear_renderer_h
00008 #define linear_renderer_h
00009 
00010 #include "ps2s/packet.h"
00011 
00012 #include "GL/gl.h"
00013 #include "ps2gl/immgmanager.h"
00014 #include "ps2gl/renderer.h"
00015 #include "ps2gl/base_renderer.h"
00016 
00017 class CLinearRenderer : public CBaseRenderer {
00018    protected:
00019       int               InputGeomBufSize;
00020 
00021       // called by DrawArrays
00022       void DrawBlock( CVifSCDmaPacket &packet, CGeometryBlock &block, int maxVertsPerBuffer );
00023 
00024       // used by DrawBlock
00025       void FindNumBuffers( int numToAdd, int numVertsToRestart,
00026                            int numVertsAlreadyInFirstBuffer, int maxVertsPerBuffer,
00027                            int &numVertsFirstBuffer, int &numVertsLastBuffer,
00028                            int &numBuffers );
00029 
00030       // used by DrawBlock
00031       void FinishBuffer( CVifSCDmaPacket &packet, int numVertsToBreakStrip,
00032                          int numVertsInBuffer, int vu1QuadsPerVert,
00033                          int numStripsInBuffer, unsigned short *stripOffsets );
00034 
00035       // used by FinishBuffer
00036       void XferBufferHeader( CVifSCDmaPacket& packet, int numVertsToBreakStrip,
00037                              int numVerts,
00038                              int numStripsInBuffer, unsigned short *stripOffsets );
00039 
00040    public:
00041       CLinearRenderer( void *packet, CRendererProps caps, CRendererProps reqs,
00042                        int inQuadsPerVert, int outQuadsPerVert,
00043                        int inGeomOffset, int inGeomBufSize,
00044                        const char *name)
00045          : CBaseRenderer(packet, caps, reqs,
00046                          inQuadsPerVert, outQuadsPerVert, inGeomOffset, name),
00047            InputGeomBufSize(inGeomBufSize)
00048       {}
00049 
00050       CLinearRenderer( void *packet,
00051                        int inQuadsPerVert, int outQuadsPerVert,
00052                        int inGeomOffset, int inGeomBufSize,
00053                        const char *name)
00054          : CBaseRenderer(packet, inQuadsPerVert, outQuadsPerVert, inGeomOffset, name),
00055            InputGeomBufSize(inGeomBufSize)
00056       {}
00057 
00058       virtual void InitContext( GLenum primType, tU32 rcChanges, bool userRcChanged );
00059       virtual void DrawLinearArrays( CGeometryBlock &block );
00060       virtual int GetPacketQwordSize( const CGeometryBlock &geometry );
00061       virtual CRendererProps GetRenderContextDeps();
00062       virtual bool GetCachePackets( const CGeometryBlock &geometry );
00063 };
00064 
00065 #endif // linear_renderer_h

ps2gl version cvs