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...
 
virtual C3D_API void doAddGeneratedFaces ()=0
 Ajoute les faces générées à celles du sous-maillage. 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

◆ SubdivisionEndFunction

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

Documentation des constructeurs et destructeur

◆ Subdivider()

C3D_API castor3d::Subdivider::Subdivider ( )

Constructeur par défaut.

◆ ~Subdivider()

virtual C3D_API castor3d::Subdivider::~Subdivider ( )
virtual

Destructeur.

Documentation des fonctions membres

◆ addFace()

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

◆ addPoint() [1/3]

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éé

◆ addPoint() [2/3]

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éé

◆ addPoint() [3/3]

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éé

◆ cleanup()

virtual C3D_API void castor3d::Subdivider::cleanup ( )
virtual

Nettoie tous les membres.

◆ doAddGeneratedFaces()

virtual C3D_API void castor3d::Subdivider::doAddGeneratedFaces ( )
protectedpure virtual

Ajoute les faces générées à celles du sous-maillage.

Référencé par setSubdivisionEndCallback().

+ Voici le graphe des appelants de cette fonction :

◆ doInitialise()

virtual C3D_API void castor3d::Subdivider::doInitialise ( )
protectedvirtual

Fonction d'initialisation.

Référencé par setSubdivisionEndCallback().

+ Voici le graphe des appelants de cette fonction :

◆ doSetTextCoords() [1/2]

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 :

◆ doSetTextCoords() [2/2]

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

◆ doSubdivide() [1/2]

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

◆ doSubdivide() [2/2]

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 :

◆ doSubdivideThreaded()

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 :

◆ doSwapBuffers()

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 :

◆ doTryAddPoint()

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 :

◆ getPoint()

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

◆ getPoints()

C3D_API VertexPtrArray const& castor3d::Subdivider::getPoints ( ) const
Renvoie
Récupère le tableau de points

◆ getPointsCount()

C3D_API uint32_t castor3d::Subdivider::getPointsCount ( ) const

Récupère le nombre de points.

Renvoie
La valeur

◆ isInMyPoints()

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

◆ setSubdivisionEndCallback()

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 C3D_API, doAddGeneratedFaces(), doInitialise(), doSetTextCoords(), doSubdivide(), doSubdivideThreaded(), doSwapBuffers(), doTryAddPoint(), et m_pfnSubdivisionEnd.

+ Voici le graphe d'appel pour cette fonction :

◆ subdivide()

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

◆ m_arrayFaces

FaceArray castor3d::Subdivider::m_arrayFaces
protected

Les faces.

◆ m_bGenerateBuffers

bool castor3d::Subdivider::m_bGenerateBuffers
protected

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

◆ m_bThreaded

bool castor3d::Subdivider::m_bThreaded
protected

Dit si la subdivision est threadée.

◆ m_mutex

std::recursive_mutex castor3d::Subdivider::m_mutex
protected

Le mutex du thread de subdivision.

◆ m_pfnSubdivisionEnd

SubdivisionEndFunction castor3d::Subdivider::m_pfnSubdivisionEnd
protected

Le callback de fin de subdivision.

Référencé par setSubdivisionEndCallback().

◆ m_pThread

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

Le thread de subdivision.

◆ m_submesh

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 :