NL3D::IMeshVertexProgram Class Reference

#include <mesh_vertex_program.h>

Inheritance diagram for NL3D::IMeshVertexProgram:

NLMISC::IStreamable NLMISC::CRefCount NLMISC::IClassable NL3D::CMeshVPPerPixelLight NL3D::CMeshVPWindTree

Detailed Description

Interface to a CMeshGeom/CMeshMRMGeom Special VertexProgram Effect.
Author:
Lionel Berenguier

Nevrax France

Date:
2002

Definition at line 59 of file mesh_vertex_program.h.

Public Member Functions

virtual bool begin (IDriver *drv, CScene *scene, CMeshBaseInstance *mbi, const NLMISC::CMatrix &invertedModelMat, const NLMISC::CVector &viewerPos)=0
virtual void end (IDriver *drv)=0
virtual std::string getClassName ()=0
virtual float getMaxVertexMove ()
const sintgetRefCount () const
 IMeshVertexProgram ()
 Constructor.

virtual void initInstance (CMeshBaseInstance *mbi)=0
virtual bool needTangentSpace () const
virtual void serial (IStream &f)=0
virtual void setupForMaterial (const CMaterial &mat, IDriver *drv, CScene *scene, IVertexBufferHard *vb)=0
 The same as setupForMaterial, but with a hard vb.

virtual void setupForMaterial (const CMaterial &mat, IDriver *drv, CScene *scene, CVertexBuffer *vb)=0
virtual ~IMeshVertexProgram ()

Data Fields

sint crefs
CPtrInfo * pinfo

Static Public Attributes

CPtrInfo NullPtrInfo

Friends

struct CPtrInfo


Constructor & Destructor Documentation

NL3D::IMeshVertexProgram::IMeshVertexProgram  )  [inline]
 

Constructor.

Definition at line 64 of file mesh_vertex_program.h.

00064 {}

virtual NL3D::IMeshVertexProgram::~IMeshVertexProgram  )  [inline, virtual]
 

Definition at line 65 of file mesh_vertex_program.h.

00065 {}


Member Function Documentation

virtual bool NL3D::IMeshVertexProgram::begin IDriver drv,
CScene scene,
CMeshBaseInstance mbi,
const NLMISC::CMatrix invertedModelMat,
const NLMISC::CVector viewerPos
[pure virtual]
 

Called to setup constant / activate VertexProgram. (called before activate of the VB). The result tells wether the vertex program will be used in the given context. If this is the case, a call to setupMaterial must be done for each material being rendered with this V.P. After all primitive have been rendered, end() must be called.

Parameters:
drv driver where to setup VP.
scene retrieve some useFull scene info (windPower, time ...)
mbi the mesh instance to retrieve some instance setup.
mat the matrix to use (may not be the one of mbi)
viewerPos position of the viewer in world space.

Implemented in NL3D::CMeshVPPerPixelLight, and NL3D::CMeshVPWindTree.

virtual void NL3D::IMeshVertexProgram::beginMBRInstance IDriver drv,
CScene scene,
CMeshBaseInstance mbi,
const NLMISC::CMatrix invertedModelMat
[inline, virtual]
 

Reimplemented in NL3D::CMeshVPWindTree.

Definition at line 123 of file mesh_vertex_program.h.

00123 {};

virtual void NL3D::IMeshVertexProgram::beginMBRMesh IDriver drv,
CScene scene
[inline, virtual]
 

Reimplemented in NL3D::CMeshVPWindTree.

Definition at line 122 of file mesh_vertex_program.h.

00122 {};

virtual void NL3D::IMeshVertexProgram::end IDriver drv  )  [pure virtual]
 

Typically disable the VertexProgram, or do some uninit.

Implemented in NL3D::CMeshVPPerPixelLight, and NL3D::CMeshVPWindTree.

virtual void NL3D::IMeshVertexProgram::endMBRMesh IDriver drv  )  [inline, virtual]
 

Reimplemented in NL3D::CMeshVPWindTree.

Definition at line 124 of file mesh_vertex_program.h.

00124 {}

virtual std::string NLMISC::IClassable::getClassName  )  [pure virtual, inherited]
 

Implemented in NLAIAGENT::CNumericIndex, NLAIC::IPointerGestion, NLAIC::CIdentType, and CAutomataDesc.

Referenced by NLMISC::CClassRegistry::checkObject(), and NL3D::GetTextureSize().

virtual float NL3D::IMeshVertexProgram::getMaxVertexMove  )  [inline, virtual]
 

This return the (over-evaluated) max delta the VertexProgram apply to vertex (in world basis) NB: This method call is relevant only after begin() or beginMBRInstance()

Reimplemented in NL3D::CMeshVPWindTree.

Definition at line 131 of file mesh_vertex_program.h.

00131 {return 0;}

const sint& NLMISC::CRefCount::getRefCount  )  const [inline, inherited]
 

Definition at line 70 of file smart_ptr.h.

References NLMISC::CRefCount::crefs, and sint.

00071         {
00072                 return  crefs;
00073         }

virtual void NL3D::IMeshVertexProgram::initInstance CMeshBaseInstance mbi  )  [pure virtual]
 

Called at creation of an instance, to setup some information directly in the CMeshBaseInstance

Implemented in NL3D::CMeshVPPerPixelLight, and NL3D::CMeshVPWindTree.

virtual bool NL3D::IMeshVertexProgram::isMBRVpOk IDriver drv  )  const [inline, virtual]
 

Reimplemented in NL3D::CMeshVPWindTree.

Definition at line 121 of file mesh_vertex_program.h.

00121 {return false;}

virtual bool NL3D::IMeshVertexProgram::needTangentSpace  )  const [inline, virtual]
 

Reimplemented in NL3D::CMeshVPPerPixelLight.

Definition at line 106 of file mesh_vertex_program.h.

00106 { return false; }

virtual void NLMISC::IStreamable::serial IStream f  )  [pure virtual, inherited]
 

Implemented in NL3D::CFlareShape, NL3D::CTextureCross, NL3D::CMesh, NL3D::CMeshGeom, NL3D::CMeshMRMGeom, NL3D::CMeshMRM, NL3D::CMeshMRMSkinnedGeom, NL3D::CMeshMRMSkinned, NL3D::CMeshMultiLod, NL3D::CMeshVPPerPixelLight, NL3D::CMeshVPWindTree, NL3D::CParticleSystemProcess, NL3D::CParticleSystemShape, NL3D::CPSAttribMaker< T >, NL3D::CPSAttribMakerBinOp< T >, NL3D::CPSAttribMakerT< T, F >, NL3D::CPSAttribMakerMemoryBase< T >, NL3D::CPSAttribMakerMemory< uint32 >, NL3D::CPSAttribMakerMemory< sint32 >, NL3D::CPSAttribMakerMemory< float >, NL3D::CPSDot, NL3D::CPSEmitter, NL3D::CPSEmitterDirectionnal, NL3D::CPSRadialEmitter, NL3D::CPSEmitterOmni, NL3D::CPSEmitterRectangle, NL3D::CPSEmitterConic, NL3D::CPSSphericalEmitter, NL3D::CPSFace, NL3D::CPSFaceLookAt, NL3D::CPSFanLight, NL3D::CPSForce, NL3D::CPSForceIntensityHelper, NL3D::CIsotropicForceT< T >, NL3D::CPSDirectionnalForce, NL3D::CPSGravity, NL3D::CPSCentralGravity, NL3D::CPSSpring, NL3D::CPSCylindricVortex, NL3D::CPSMagneticForce, NL3D::CPSLight, NL3D::CPSLocated, NL3D::CPSLocatedBindable, NL3D::CPSTargetLocatedBindable, NL3D::CPSMesh, NL3D::CPSConstraintMesh, NL3D::CPSParticle, NL3D::CPSPlaneBasisFollowSpeed, NL3D::CPSQuad, NL3D::CPSRibbon, NL3D::CPSRibbonBase, NL3D::CPSRibbonLookAt, NL3D::CPSShockWave, NL3D::CPSSound, NL3D::CPSTailDot, NL3D::CPSZone, NL3D::CPSZonePlane, NL3D::CPSZoneSphere, NL3D::CPSZoneDisc, NL3D::CPSZoneCylinder, NL3D::CPSZoneRectangle, NL3D::CSegRemanenceShape, NL3D::CSkeletonShape, NL3D::ITexture, NL3D::CTextureBlend, NL3D::CTextureBump, NL3D::CTextureCube, NL3D::CTextureDLM, NL3D::CTextureEmboss, NL3D::CTextureFar, NL3D::CTextureFile, NL3D::CTextureFont, NL3D::CTextureGrouped, NL3D::CTextureMem, NL3D::CTextureMultiFile, NL3D::CTextureNear, NL3D::CTrackDefaultBlendable< T >, NL3D::CTrackDefaultNotBlendable< T >, NL3D::ITrackKeyFramer< CKeyT >, NL3D::CTrackSampledQuat, NL3D::CTrackSampledVector, NL3D::CWaterShape, NL3D::CWaveMakerShape, NLAIAGENT::CNumericIndex, NLAIC::IPointerGestion, NLAIC::CIdentType, NLAIC::IBasicInterface, NLAISCRIPT::COperandVoid, NLAISCRIPT::COperandAnyObject, NLAISCRIPT::COperandSimple, NLAISCRIPT::COperandSimpleListOr, NLAISCRIPT::COperandUnknown, NLAISCRIPT::COperationType, NLAISCRIPT::COperationTypeGD, NLAISCRIPT::COperandListType, CAutomataDesc, NL3D::CPSAttribMaker< float >, NL3D::CPSAttribMaker< CPlaneBasis >, NL3D::CPSAttribMaker< NLMISC::CRGBA >, NL3D::CPSAttribMaker< uint32 >, NL3D::CPSAttribMaker< CRGBA >, NL3D::CPSAttribMaker< sint32 >, NL3D::CPSAttribMakerBinOp< float >, NL3D::CPSAttribMakerBinOp< CPlaneBasis >, NL3D::CPSAttribMakerBinOp< uint32 >, NL3D::CPSAttribMakerBinOp< NLMISC::CRGBA >, NL3D::CPSAttribMakerBinOp< sint32 >, NL3D::CPSAttribMakerT< NLMISC::CRGBA, CPSValueGradientFunc< NLMISC::CRGBA > >, NL3D::CPSAttribMakerT< sint32, CPSValueBlendFunc< sint32 > >, NL3D::CPSAttribMakerT< T, CPSValueGradientFunc< T > >, NL3D::CPSAttribMakerT< sint32, CPSValueGradientFunc< sint32 > >, NL3D::CPSAttribMakerT< uint32, CPSValueGradientFunc< uint32 > >, NL3D::CPSAttribMakerT< NLMISC::CRGBA, CPSValueBlendFunc< NLMISC::CRGBA > >, NL3D::CPSAttribMakerT< float, CPSFloatCurveFunctor >, NL3D::CPSAttribMakerT< CPlaneBasis, CPSValueBlendFunc< CPlaneBasis > >, NL3D::CPSAttribMakerT< float, CPSValueGradientFunc< float > >, NL3D::CPSAttribMakerT< float, CPSValueBlendFunc< float > >, NL3D::CPSAttribMakerT< T, CPSValueBlendSampleFunc< T, n > >, NL3D::CPSAttribMakerT< NLMISC::CRGBA, CPSValueBlendSampleFunc< NLMISC::CRGBA, n > >, NL3D::CPSAttribMakerT< CPlaneBasis, CPSValueGradientFunc< CPlaneBasis > >, NL3D::CPSAttribMakerT< CPlaneBasis, CSpinnerFunctor >, NL3D::CPSAttribMakerT< T, CPSValueBlendFunc< T > >, NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >, NL3D::CPSAttribMakerMemoryBase< float >, NL3D::CPSAttribMakerMemoryBase< CPlaneBasis >, NL3D::CPSAttribMakerMemoryBase< NLMISC::CRGBA >, NL3D::CPSAttribMakerMemoryBase< uint32 >, NL3D::CPSAttribMakerMemoryBase< sint32 >, NL3D::CIsotropicForceT< CPSTurbulForceFunc >, NL3D::CIsotropicForceT< CPSFluidFrictionFunctor >, NL3D::CTrackDefaultBlendable< float >, NL3D::CTrackDefaultBlendable< NLMISC::CRGBA >, NL3D::CTrackDefaultBlendable< CQuat >, NL3D::CTrackDefaultBlendable< sint32 >, NL3D::CTrackDefaultBlendable< CVector >, NL3D::CTrackDefaultNotBlendable< std::string >, NL3D::CTrackDefaultNotBlendable< bool >, NL3D::ITrackKeyFramer< CKeyBezierVector >, NL3D::ITrackKeyFramer< CKeyTCBVector >, NL3D::ITrackKeyFramer< CKeyVector >, NL3D::ITrackKeyFramer< CKeyTCBQuat >, NL3D::ITrackKeyFramer< CKeyRGBA >, NL3D::ITrackKeyFramer< CKeyInt >, NL3D::ITrackKeyFramer< CKeyBool >, NL3D::ITrackKeyFramer< CKeyFloat >, NL3D::ITrackKeyFramer< CKeyQuat >, NL3D::ITrackKeyFramer< CKeyBezierFloat >, NL3D::ITrackKeyFramer< CKeyTCBFloat >, NL3D::ITrackKeyFramer< CKeyString >, and NL3D::ITrackKeyFramer< CKeyBezierQuat >.

Referenced by NL3D::CMeshMRMGeom::loadHeader().

virtual void NL3D::IMeshVertexProgram::setupForMaterial const CMaterial mat,
IDriver drv,
CScene scene,
IVertexBufferHard vb
[pure virtual]
 

The same as setupForMaterial, but with a hard vb.

Implemented in NL3D::CMeshVPPerPixelLight, and NL3D::CMeshVPWindTree.

virtual void NL3D::IMeshVertexProgram::setupForMaterial const CMaterial mat,
IDriver drv,
CScene scene,
CVertexBuffer vb
[pure virtual]
 

Setup this shader for the given material. This may disable the shader if necessary. This is why the vertex buffer is needed : when disabling the v.p we may need to reactivate it

Implemented in NL3D::CMeshVPPerPixelLight, and NL3D::CMeshVPWindTree.

virtual bool NL3D::IMeshVertexProgram::supportMeshBlockRendering  )  const [inline, virtual]
 

Reimplemented in NL3D::CMeshVPWindTree.

Definition at line 120 of file mesh_vertex_program.h.

00120 { return false; }


Friends And Related Function Documentation

friend struct CPtrInfo [friend, inherited]
 

Definition at line 67 of file smart_ptr.h.


Field Documentation

sint NLMISC::CRefCount::crefs [mutable, inherited]
 

Definition at line 79 of file smart_ptr.h.

Referenced by NLMISC::CRefCount::CRefCount(), NLMISC::CRefCount::getRefCount(), and NLMISC::CRefCount::~CRefCount().

CRefCount::CPtrInfo NLMISC::CRefCount::NullPtrInfo [static, inherited]
 

Referenced by NLMISC::CRefCount::CRefCount().

CPtrInfo* NLMISC::CRefCount::pinfo [mutable, inherited]
 

Definition at line 80 of file smart_ptr.h.

Referenced by NLMISC::CRefCount::CRefCount(), and NLMISC::CRefCount::~CRefCount().


The documentation for this class was generated from the following file:
Generated on Tue Mar 16 08:39:08 2004 for NeL by doxygen 1.3.6