Castor3D  ..
Fonctions membres publiques | Types protégés | Fonctions membres protégées | 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

C3D_API Subdivider ()
 Constructeur par défaut. Plus de détails...
 
virtual C3D_API ~Subdivider ()
 Destructeur. Plus de détails...
 
virtual C3D_API void Subdivide (SubmeshSPtr p_submesh, int p_occurences, bool p_generateBuffers=true, bool p_threaded=false)
 Fonction de subdivision. Plus de détails...
 
virtual C3D_API void Cleanup ()
 Nettoie tous les membres. Plus de détails...
 
C3D_API BufferElementGroupSPtr AddPoint (real x, real y, real z)
 Crée et ajoute un sommet à la liste. Plus de détails...
 
C3D_API BufferElementGroupSPtr AddPoint (Castor::Point3r const &p_v)
 Crée et ajoute un sommet à la liste. Plus de détails...
 
C3D_API BufferElementGroupSPtr AddPoint (real *p_v)
 Crée et ajoute un sommet à la liste. Plus de détails...
 
virtual C3D_API Face AddFace (uint32_t a, uint32_t b, uint32_t c)
 Crée et ajoute une face. Plus de détails...
 
virtual C3D_API int IsInMyPoints (Castor::Point3r const &p_vertex, double p_precision)
 Teste si le point donné fait partie de ceux de ce submesh. Plus de détails...
 
C3D_API uint32_t GetPointsCount () const
 Récupère le nombre de points. Plus de détails...
 
C3D_API BufferElementGroupSPtr GetPoint (uint32_t i) const
 Récupère le point voulu. Plus de détails...
 
C3D_API VertexPtrArray const & GetPoints () const
 
void SetSubdivisionEndCallback (SubdivisionEndFunction p_pfnSubdivisionEnd)
 Définit une fonction qui sera appelée lors de la fin de la subdivision. Plus de détails...
 

Types protégés

typedef std::function< void(Subdivider &) > SubdivisionEndFunction
 

Fonctions membres protégées

C3D_API uint32_t DoSubdivideThreaded ()
 Fonction de subdivision du thread. Plus de détails...
 
C3D_API Castor3D::BufferElementGroupSPtr DoTryAddPoint (Castor::Point3r const &p_point)
 Vérifie si le point donnée est déjà dans la liste, et sinon le crée et l'ajoute. Plus de détails...
 
virtual C3D_API void DoSubdivide (SubmeshSPtr p_submesh, bool p_generateBuffers, bool p_threaded)
 Fonction de subdivision. Plus de détails...
 
virtual C3D_API void DoInitialise ()
 Fonction d'initialisation. Plus de détails...
 
C3D_API void DoSwapBuffers ()
 Echange les faces internes avec celles du sous-maillage. Plus de détails...
 
virtual C3D_API void DoSubdivide ()=0
 Subdivise le sous-maillage. Plus de détails...
 
C3D_API void DoSetTextCoords (BufferElementGroup const &p_a, BufferElementGroup const &p_b, BufferElementGroup const &p_c, BufferElementGroup &p_d, BufferElementGroup &p_e, BufferElementGroup &p_f)
 Calcule les coordonnées de texture des sommets donnés, crée les faces. Plus de détails...
 
C3D_API void DoSetTextCoords (BufferElementGroup const &p_a, BufferElementGroup const &p_b, BufferElementGroup const &p_c, BufferElementGroup &p_p)
 Calcule les coordonnées de texture du nouveau sommet, crée les faces. Plus de détails...
 

Attributs protégés

SubmeshSPtr m_submesh
 Le sous-maillage à diviser. Plus de détails...
 
FaceArray m_arrayFaces
 Les faces. Plus de détails...
 
bool m_bGenerateBuffers
 Dit si les tampons doivent être générés. Plus de détails...
 
SubdivisionEndFunction m_pfnSubdivisionEnd
 Le callback de fin de subdivision. Plus de détails...
 
std::shared_ptr< std::thread > m_pThread
 Le thread de subdivision. Plus de détails...
 
bool m_bThreaded
 Dit si la subdivision est threadée. Plus de détails...
 
std::recursive_mutex m_mutex
 Le mutex du thread de subdivision. Plus de détails...
 

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 std::function< void( Subdivider & ) > Castor3D::Subdivider::SubdivisionEndFunction
protected

Documentation des constructeurs et destructeur

C3D_API Castor3D::Subdivider::Subdivider ( )

Constructeur par défaut.

virtual C3D_API Castor3D::Subdivider::~Subdivider ( )
virtual

Destructeur.

Documentation des fonctions membres

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

Crée et ajoute une face.

Paramètres
[in]aL'indice du premier sommet de la face
[in]bL'indice du second sommet de la face
[in]cL'indice du troisième sommet de la face
Renvoie
La face créée
C3D_API BufferElementGroupSPtr Castor3D::Subdivider::AddPoint ( real  x,
real  y,
real  z 
)

Crée et ajoute un sommet à la liste.

Paramètres
[in]x,y,zLes coordonnées de la position du sommet
Renvoie
Le sommet créé
C3D_API BufferElementGroupSPtr Castor3D::Subdivider::AddPoint ( Castor::Point3r const &  p_v)

Crée et ajoute un sommet à la liste.

Paramètres
[in]p_vLa position du sommet à ajouter
Renvoie
Le sommet créé
C3D_API BufferElementGroupSPtr Castor3D::Subdivider::AddPoint ( real *  p_v)

Crée et ajoute un sommet à la liste.

Paramètres
[in]p_vLes coordonnées de la position du sommet à ajouter
Renvoie
Le sommet créé
virtual C3D_API void Castor3D::Subdivider::Cleanup ( )
virtual

Nettoie tous les membres.

virtual C3D_API void Castor3D::Subdivider::DoInitialise ( )
protectedvirtual

Fonction d'initialisation.

Référencé par SetSubdivisionEndCallback().

+ Voici le graphe des appelants de cette fonction :

C3D_API void Castor3D::Subdivider::DoSetTextCoords ( BufferElementGroup const &  p_a,
BufferElementGroup const &  p_b,
BufferElementGroup const &  p_c,
BufferElementGroup p_d,
BufferElementGroup p_e,
BufferElementGroup p_f 
)
protected

Calcule les coordonnées de texture des sommets donnés, crée les faces.

Paramètres
[in]p_a,p_b,p_cLes sommets source
[in]p_d,p_e,p_fLes nouveaux sommets

Référencé par SetSubdivisionEndCallback().

+ Voici le graphe des appelants de cette fonction :

C3D_API void Castor3D::Subdivider::DoSetTextCoords ( BufferElementGroup const &  p_a,
BufferElementGroup const &  p_b,
BufferElementGroup const &  p_c,
BufferElementGroup p_p 
)
protected

Calcule les coordonnées de texture du nouveau sommet, crée les faces.

Paramètres
[in]p_a,p_b,p_cLes sommets sources
[in]p_pLe nouveau sommet
virtual C3D_API void Castor3D::Subdivider::DoSubdivide ( SubmeshSPtr  p_submesh,
bool  p_generateBuffers,
bool  p_threaded 
)
protectedvirtual

Fonction de subdivision.

Paramètres
[in]p_submeshLe sous maillage à subdiviser
[in]p_generateBuffersDit si les tampons doivent être générés
[in]p_threadedDit si la subdivision doit être threadée
virtual C3D_API void Castor3D::Subdivider::DoSubdivide ( )
protectedpure virtual

Subdivise le sous-maillage.

Référencé par SetSubdivisionEndCallback().

+ Voici le graphe des appelants de cette fonction :

C3D_API uint32_t Castor3D::Subdivider::DoSubdivideThreaded ( )
protected

Fonction de subdivision du thread.

Référencé par SetSubdivisionEndCallback().

+ Voici le graphe des appelants de cette fonction :

C3D_API void Castor3D::Subdivider::DoSwapBuffers ( )
protected

Echange les faces internes avec celles du sous-maillage.

Référencé par SetSubdivisionEndCallback().

+ Voici le graphe des appelants de cette fonction :

C3D_API Castor3D::BufferElementGroupSPtr Castor3D::Subdivider::DoTryAddPoint ( Castor::Point3r const &  p_point)
protected

Vérifie si le point donnée est déjà dans la liste, et sinon le crée et l'ajoute.

Paramètres
[in]p_pointLes coordonnées de la position du sommet à ajouter
Renvoie
Le sommet créé

Référencé par SetSubdivisionEndCallback().

+ Voici le graphe des appelants de cette fonction :

C3D_API BufferElementGroupSPtr Castor3D::Subdivider::GetPoint ( uint32_t  i) const

Récupère le point voulu.

Paramètres
[in]iL'indice du point
Renvoie
La valeur
C3D_API VertexPtrArray const& Castor3D::Subdivider::GetPoints ( ) const
Renvoie
Récupère le tableau de points
C3D_API uint32_t Castor3D::Subdivider::GetPointsCount ( ) const

Récupère le nombre de points.

Renvoie
La valeur
virtual C3D_API int Castor3D::Subdivider::IsInMyPoints ( Castor::Point3r const &  p_vertex,
double  p_precision 
)
virtual

Teste si le point donné fait partie de ceux de ce submesh.

Paramètres
[in]p_vertexLe point à tester
[in]p_precisionLa précision de comparaison
Renvoie
L'index du point s'il a été trouvé, -1 sinon
void Castor3D::Subdivider::SetSubdivisionEndCallback ( SubdivisionEndFunction  p_pfnSubdivisionEnd)
inline

Définit une fonction qui sera appelée lors de la fin de la subdivision.

Remarques
Cette fonction NE DOIT PAS détruire le thread NI le subdiviseur
Paramètres
[in]p_pfnSubdivisionEndPointeur de la fonction à exécuter

Références DoInitialise(), DoSetTextCoords(), DoSubdivide(), DoSubdivideThreaded(), DoSwapBuffers(), DoTryAddPoint(), et m_pfnSubdivisionEnd.

+ Voici le graphe d'appel pour cette fonction :

virtual C3D_API void Castor3D::Subdivider::Subdivide ( SubmeshSPtr  p_submesh,
int  p_occurences,
bool  p_generateBuffers = true,
bool  p_threaded = false 
)
virtual

Fonction de subdivision.

Paramètres
[in]p_submeshLe sous maillage à subdiviser
[in]p_occurencesLe nombre de subdivisions à effectuer
[in]p_generateBuffersDit si les tampons doivent être générés
[in]p_threadedDit si la subdivision doit être threadée

Documentation des données membres

FaceArray Castor3D::Subdivider::m_arrayFaces
protected

Les faces.

bool Castor3D::Subdivider::m_bGenerateBuffers
protected

Dit si les tampons doivent être générés.

bool Castor3D::Subdivider::m_bThreaded
protected

Dit si la subdivision est threadée.

std::recursive_mutex Castor3D::Subdivider::m_mutex
protected

Le mutex du thread de subdivision.

SubdivisionEndFunction Castor3D::Subdivider::m_pfnSubdivisionEnd
protected

Le callback de fin de subdivision.

Référencé par SetSubdivisionEndCallback().

std::shared_ptr< std::thread > Castor3D::Subdivider::m_pThread
protected

Le thread de subdivision.

SubmeshSPtr Castor3D::Subdivider::m_submesh
protected

Le sous-maillage à diviser.


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