ImmediateModeRenderer/ImmediateModeRenderer.h

ImmediateModeRenderer/ImmediateModeRenderer.h
//**************************************************************************/
// Copyright (c) 2008 Autodesk, Inc.
// All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk license
// agreement provided at the time of installation or download, or which
// otherwise accompanies this software in either electronic or hard copy form.
//
//**************************************************************************/
// DESCRIPTION:
// CREATED: April 2010
//**************************************************************************/
#if defined(JAMBUILD)
#include <Mudbox/mudbox.h>
#else
#include "../../include/Mudbox/mudbox.h"
#include "../../include/Mudbox/MudBoxGL.h"
#endif
using namespace mudbox;
class ImmediateModeRenderer : public MeshRenderer
{
public:
ImmediateModeRenderer( void );
~ImmediateModeRenderer( void );
// Overrides for Node class
virtual void OnNodeEvent( const Attribute &, NodeEventType );
virtual void Serialize( Stream & );
// Overrides for MeshRenderer class
virtual void Initialize( void );
virtual void SetMesh( Mesh *pMesh );
virtual void Render(
const Selector *pSelector = 0,
bool bSkipMaterials = false,
const Camera *pCamera = 0,
);
virtual unsigned int RenderData( const Selector *pSelector, unsigned int iStart, const Camera *pCamera );
virtual void DecodeData( unsigned int iData, unsigned int &iFaceIndex, unsigned int &iVertexIndex );
virtual void OnVertexPositionChange( unsigned int iVertexIndex, unsigned int iFaceIndex );
virtual void OnVertexStateChange( unsigned int iVertexIndex, unsigned int iFaceIndex );
virtual void OnMeshChange( MeshRenderer::MeshChange eChange = MeshRenderer::changeTopology );
virtual void SetLODLevel( float fLevel );
virtual float LODLevel( void ) const;
virtual const AxisAlignedBoundingBox &ActiveUVArea( void ) const;
virtual void SetWireFrameMode( bool bMode );
virtual bool WireFrameMode( void ) const;
virtual void SetColorMode( bool bMode );
virtual bool ColorMode( void ) const;
virtual void SetVertexColor( Color cVertexColor );
virtual Color VertexColor( void ) const;
virtual void SetWireLevel( unsigned int iLevel );
virtual unsigned int WireLevel( void ) const;
virtual void SetTextureCoordinateMode( bool bMode );
virtual bool TextureCoordinateMode( void ) const;
virtual void SetTangentMode( bool bMode );
virtual bool TangentMode( void ) const;
virtual bool ReadyForClientRender() { return true;}
virtual void SetFacetedMode( bool bMode );
virtual bool FacetedMode( void ) const;
private:
void renderTriangle(unsigned int index);
void renderTriangleNormals();
void renderQuad(unsigned int index);
void renderQuadNormals();
Mesh *m_pMesh;
float m_fPointSize;
float m_fLineWidth;
GLenum m_ePolygonMode;
bool m_bTCMode;
bool m_bFacetedMode;
bool m_bWireframeMode;
AxisAlignedBoundingBox m_ActiveUVArea;
// Get color depth of render target
GLint m_iRedBits, m_iGreenBits, m_iBlueBits;
};