Castor3D  ..
Fonctions membres publiques | Types protégés | Fonctions membres protégées | Fonctions membres protégées statiques | Attributs protégés | Liste de tous les membres
Référence de la classe Castor3D::Subdividerabstract

Classe de base (abstraite) pour les subdiviseurs. Plus de détails...

Fonctions membres publiques

 Subdivider ()
 
virtual ~Subdivider ()
 
void Subdivide (SubmeshSPtr p_pSubmesh, Castor::Point3r *p_pCenter, bool p_bGenerateBuffers=true, bool p_bThreaded=false)
 
void SetThreadEndFunction (PSubdivisionEndFunction p_pfnSubdivisionEnd, void *p_pArg=nullptr)
 
virtual void Cleanup ()
 
BufferElementGroupSPtr AddPoint (real x, real y, real z)
 
BufferElementGroupSPtr AddPoint (Castor::Point3r const &p_v)
 
BufferElementGroupSPtr AddPoint (real *p_v)
 
virtual FaceSPtr AddFace (uint32_t a, uint32_t b, uint32_t c)
 
virtual int IsInMyPoints (Castor::Point3r const &p_vertex)
 
uint32_t GetNbPoints () const
 
BufferElementGroupSPtr GetPoint (uint32_t i) const
 

Types protégés

typedef void SubdivisionEndFunction (void *, Subdivider *)
 
typedef SubdivisionEndFunctionPSubdivisionEndFunction
 

Fonctions membres protégées

virtual void DoInitialise ()
 
void DoSwapBuffers ()
 
virtual void DoSubdivide ()=0
 
void DoSetTextCoords (FaceSPtr p_face, BufferElementGroup const &p_a, BufferElementGroup const &p_b, BufferElementGroup const &p_c, BufferElementGroup &p_d, BufferElementGroup &p_e, BufferElementGroup &p_f)
 
void DoComputeCenterFrom (Castor::Point3r const &p_a, Castor::Point3r const &p_b, Castor::Point3r const &p_ptANormal, Castor::Point3r const &p_ptBNormal, Castor::Point3r &p_ptResult)
 
void DoComputeCenterFrom (Castor::Point3r const &p_a, Castor::Point3r const &p_b, Castor::Point3r const &p_c, Castor::Point3r const &p_ptANormal, Castor::Point3r const &p_ptBNormal, Castor::Point3r const &p_ptCNormal, Castor::Point3r &p_ptResult)
 

Fonctions membres protégées statiques

static uint32_t DoSubdivideThreaded (Subdivider *p_pThis)
 

Attributs protégés

SubmeshSPtr m_submesh
 The submesh being subdivided. Plus de détails...
 
FacePtrArray m_arrayFaces
 
Castor::Point3r m_ptDivisionCenter
 
std::shared_ptr< std::thread > m_pThread
 
bool m_bGenerateBuffers
 
PSubdivisionEndFunction m_pfnSubdivisionEnd
 
void * m_pArg
 
bool m_bThreaded
 
std::recursive_mutex m_mutex
 

Description détaillée

Classe de base (abstraite) pour les subdiviseurs.

Auteur
Sylvain DOREMUS
Date
12/03/2010
Remarques
Contient l'interface commune aux subdiviseurs

Documentation des définitions de type membres

typedef void Castor3D::Subdivider::SubdivisionEndFunction(void *, Subdivider *)
protected

Documentation des constructeurs et destructeur

Castor3D::Subdivider::Subdivider ( )

Constructor

Paramètres
[in]p_submeshThe submesh to subdivide
virtual Castor3D::Subdivider::~Subdivider ( )
virtual

Destructor

Documentation des fonctions membres

virtual FaceSPtr Castor3D::Subdivider::AddFace ( uint32_t  a,
uint32_t  b,
uint32_t  c 
)
virtual

Creates and adds a face to the wanted smoothgroup

Paramètres
[in]aThe first face's vertex index
[in]bThe second face's vertex index
[in]cThe third face's vertex index
[in]p_sgIndexThe wanted smoothing group index
Renvoie
The created face
BufferElementGroupSPtr Castor3D::Subdivider::AddPoint ( real  x,
real  y,
real  z 
)

Creates and adds a vertex to my list

Paramètres
[in]xThe vertex X coordinate
[in]yThe vertex Y coordinate
[in]zThe vertex Z coordinate
Renvoie
The created vertex
BufferElementGroupSPtr Castor3D::Subdivider::AddPoint ( Castor::Point3r const &  p_v)

Adds a vertex to my list

Paramètres
[in]p_vThe vertex to add
Renvoie
The vertex
BufferElementGroupSPtr Castor3D::Subdivider::AddPoint ( real *  p_v)

Creates and adds a vertex to my list

Paramètres
[in]p_vThe vertex coordinates
Renvoie
The created vertex
virtual void Castor3D::Subdivider::Cleanup ( )
virtual

Cleans all member variables, making this divider dummy

void Castor3D::Subdivider::DoComputeCenterFrom ( Castor::Point3r const &  p_a,
Castor::Point3r const &  p_b,
Castor::Point3r const &  p_ptANormal,
Castor::Point3r const &  p_ptBNormal,
Castor::Point3r &  p_ptResult 
)
protected
void Castor3D::Subdivider::DoComputeCenterFrom ( Castor::Point3r const &  p_a,
Castor::Point3r const &  p_b,
Castor::Point3r const &  p_c,
Castor::Point3r const &  p_ptANormal,
Castor::Point3r const &  p_ptBNormal,
Castor::Point3r const &  p_ptCNormal,
Castor::Point3r &  p_ptResult 
)
protected
virtual void Castor3D::Subdivider::DoInitialise ( )
protectedvirtual

Initialisation function

void Castor3D::Subdivider::DoSetTextCoords ( FaceSPtr  p_face,
BufferElementGroup const &  p_a,
BufferElementGroup const &  p_b,
BufferElementGroup const &  p_c,
BufferElementGroup p_d,
BufferElementGroup p_e,
BufferElementGroup p_f 
)
protected
virtual void Castor3D::Subdivider::DoSubdivide ( )
protectedpure virtual
static uint32_t Castor3D::Subdivider::DoSubdivideThreaded ( Subdivider p_pThis)
staticprotected
void Castor3D::Subdivider::DoSwapBuffers ( )
protected
uint32_t Castor3D::Subdivider::GetNbPoints ( ) const
BufferElementGroupSPtr Castor3D::Subdivider::GetPoint ( uint32_t  i) const
virtual int Castor3D::Subdivider::IsInMyPoints ( Castor::Point3r const &  p_vertex)
virtual

Tests if the given Point3r is in mine

Paramètres
[in]p_vertexThe vertex to test
Renvoie
The index of the vertex equal to parameter, -1 if not found
void Castor3D::Subdivider::SetThreadEndFunction ( PSubdivisionEndFunction  p_pfnSubdivisionEnd,
void *  p_pArg = nullptr 
)
inline

Defines a function to execute when the threaded subdivision ends That function MUST NEITHER destroy the thread NOR the subdivider

Paramètres
[in]p_pfnSubdivisionEndPointer over the function to execute
[in]p_pArgOptional parameter for the function
void Castor3D::Subdivider::Subdivide ( SubmeshSPtr  p_pSubmesh,
Castor::Point3r *  p_pCenter,
bool  p_bGenerateBuffers = true,
bool  p_bThreaded = false 
)

Main subdivision function, must be implemented by children classes

Paramètres
[in]p_pCenterThe point used as center to compute new points

Documentation des données membres

FacePtrArray Castor3D::Subdivider::m_arrayFaces
protected
bool Castor3D::Subdivider::m_bGenerateBuffers
protected
bool Castor3D::Subdivider::m_bThreaded
protected
std::recursive_mutex Castor3D::Subdivider::m_mutex
protected
void* Castor3D::Subdivider::m_pArg
protected
PSubdivisionEndFunction Castor3D::Subdivider::m_pfnSubdivisionEnd
protected
Castor::Point3r Castor3D::Subdivider::m_ptDivisionCenter
protected
std::shared_ptr< std::thread > Castor3D::Subdivider::m_pThread
protected
SubmeshSPtr Castor3D::Subdivider::m_submesh
protected

The submesh being subdivided.


La documentation de cette classe a été générée à partir du fichier suivant :