Castor3D  0.11.0
Multiplatform 3D engine
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::MeshSubdividerabstract
Graphe de collaboration de castor3d::MeshSubdivider:
Collaboration graph
[légende]

Fonctions membres publiques

C3D_API MeshSubdivider ()
 Constructeur par défaut. Plus de détails...
 
virtual C3D_API ~MeshSubdivider ()
 Destructeur. Plus de détails...
 
virtual C3D_API void subdivide (SubmeshSPtr submesh, int occurences, bool generateBuffers=true, bool threaded=false)
 Fonction de subdivision. Plus de détails...
 
virtual C3D_API void cleanup ()
 Nettoie tous les membres. Plus de détails...
 
C3D_API SubmeshVertexaddPoint (float x, float y, float z)
 Crée et ajoute un sommet à la liste. Plus de détails...
 
C3D_API SubmeshVertexaddPoint (castor::Point3f const &position)
 Crée et ajoute un sommet à la liste. Plus de détails...
 
C3D_API SubmeshVertexaddPoint (float *position)
 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::Point3f const &vertex, double precision)
 Teste si le position 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 SubmeshVertexgetPoint (uint32_t i) const
 Récupère le position voulu. Plus de détails...
 
C3D_API InterleavedVertexArray const & getPoints () const
 
void setSubdivisionEndCallback (MeshSubdivisionEndFunction subdivisionEndFunc)
 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(MeshSubdivider &) > MeshSubdivisionEndFunction
 

Fonctions membres protégées

C3D_API uint32_t doSubdivideThreaded ()
 Fonction de subdivision du thread. Plus de détails...
 
C3D_API SubmeshVertexdoTryAddPoint (castor::Point3f const &position)
 Vérifie si le position 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 submesh, bool generateBuffers, bool 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 (SubmeshVertex const &a, SubmeshVertex const &b, SubmeshVertex const &c, SubmeshVertex &d, SubmeshVertex &e, SubmeshVertex &f)
 Calcule les coordonnées de texture des sommets donnés, crée les faces. Plus de détails...
 
C3D_API void doSetTextCoords (SubmeshVertex const &a, SubmeshVertex const &b, SubmeshVertex const &c, SubmeshVertex &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
 
std::vector< std::unique_ptr< SubmeshVertex > > m_points
 
FaceArray m_arrayFaces
 
bool m_generateBuffers
 
MeshSubdivisionEndFunction m_onSubdivisionEnd
 
std::shared_ptr< std::thread > m_thread
 
bool m_threaded
 
std::recursive_mutex m_mutex
 

Documentation des définitions de type membres

◆ MeshSubdivisionEndFunction

typedef std::function< void( MeshSubdivider & ) > castor3d::MeshSubdivider::MeshSubdivisionEndFunction
protected

Documentation des constructeurs et destructeur

◆ MeshSubdivider()

C3D_API castor3d::MeshSubdivider::MeshSubdivider ( )

Constructeur par défaut.

◆ ~MeshSubdivider()

virtual C3D_API castor3d::MeshSubdivider::~MeshSubdivider ( )
virtual

Destructeur.

Documentation des fonctions membres

◆ addFace()

virtual C3D_API Face castor3d::MeshSubdivider::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 SubmeshVertex& castor3d::MeshSubdivider::addPoint ( float  x,
float  y,
float  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 SubmeshVertex& castor3d::MeshSubdivider::addPoint ( castor::Point3f const &  position)

Crée et ajoute un sommet à la liste.

Paramètres
[in]positionLa position du sommet à ajouter
Renvoie
Le sommet créé

◆ addPoint() [3/3]

C3D_API SubmeshVertex& castor3d::MeshSubdivider::addPoint ( float *  position)

Crée et ajoute un sommet à la liste.

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

◆ cleanup()

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

Nettoie tous les membres.

◆ doAddGeneratedFaces()

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

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

◆ doInitialise()

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

Fonction d'initialisation.

◆ doSetTextCoords() [1/2]

C3D_API void castor3d::MeshSubdivider::doSetTextCoords ( SubmeshVertex const &  a,
SubmeshVertex const &  b,
SubmeshVertex const &  c,
SubmeshVertex d,
SubmeshVertex e,
SubmeshVertex f 
)
protected

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

Paramètres
[in]a,b,cLes sommets source
[out]d,e,fLes nouveaux sommets

◆ doSetTextCoords() [2/2]

C3D_API void castor3d::MeshSubdivider::doSetTextCoords ( SubmeshVertex const &  a,
SubmeshVertex const &  b,
SubmeshVertex const &  c,
SubmeshVertex p 
)
protected

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

Paramètres
[in]a,b,cLes sommets sources
[out]pLe nouveau sommet

◆ doSubdivide() [1/2]

virtual C3D_API void castor3d::MeshSubdivider::doSubdivide ( SubmeshSPtr  submesh,
bool  generateBuffers,
bool  threaded 
)
protectedvirtual

Fonction de subdivision.

Paramètres
[in]submeshLe sous maillage à subdiviser
[in]generateBuffersDit si les tampons doivent être générés
[in]threadedDit si la subdivision doit être threadée

◆ doSubdivide() [2/2]

virtual C3D_API void castor3d::MeshSubdivider::doSubdivide ( )
protectedpure virtual

Subdivise le sous-maillage.

◆ doSubdivideThreaded()

C3D_API uint32_t castor3d::MeshSubdivider::doSubdivideThreaded ( )
protected

Fonction de subdivision du thread.

◆ doSwapBuffers()

C3D_API void castor3d::MeshSubdivider::doSwapBuffers ( )
protected

Echange les faces internes avec celles du sous-maillage.

◆ doTryAddPoint()

C3D_API SubmeshVertex& castor3d::MeshSubdivider::doTryAddPoint ( castor::Point3f const &  position)
protected

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

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

◆ getPoint()

C3D_API SubmeshVertex& castor3d::MeshSubdivider::getPoint ( uint32_t  i) const

Récupère le position voulu.

Paramètres
[in]iL'indice du position
Renvoie
La valeur

◆ getPoints()

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

◆ getPointsCount()

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

Récupère le nombre de points.

Renvoie
La valeur

◆ isInMyPoints()

virtual C3D_API int castor3d::MeshSubdivider::isInMyPoints ( castor::Point3f const &  vertex,
double  precision 
)
virtual

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

Paramètres
[in]vertexLe position à tester
[in]precisionLa précision de comparaison
Renvoie
L'index du position s'il a été trouvé, -1 sinon

◆ setSubdivisionEndCallback()

void castor3d::MeshSubdivider::setSubdivisionEndCallback ( MeshSubdivisionEndFunction  subdivisionEndFunc)
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]subdivisionEndFuncPointeur de la fonction à exécuter

Références m_onSubdivisionEnd.

◆ subdivide()

virtual C3D_API void castor3d::MeshSubdivider::subdivide ( SubmeshSPtr  submesh,
int  occurences,
bool  generateBuffers = true,
bool  threaded = false 
)
virtual

Fonction de subdivision.

Paramètres
[in]submeshLe sous maillage à subdiviser
[in]occurencesLe nombre de subdivisions à effectuer
[in]generateBuffersDit si les tampons doivent être générés
[in]threadedDit si la subdivision doit être threadée

Documentation des données membres

◆ m_arrayFaces

FaceArray castor3d::MeshSubdivider::m_arrayFaces
protected

◆ m_generateBuffers

bool castor3d::MeshSubdivider::m_generateBuffers
protected

◆ m_mutex

std::recursive_mutex castor3d::MeshSubdivider::m_mutex
protected

◆ m_onSubdivisionEnd

MeshSubdivisionEndFunction castor3d::MeshSubdivider::m_onSubdivisionEnd
protected

Référencé par setSubdivisionEndCallback().

◆ m_points

std::vector< std::unique_ptr< SubmeshVertex > > castor3d::MeshSubdivider::m_points
protected

◆ m_submesh

SubmeshSPtr castor3d::MeshSubdivider::m_submesh
protected

◆ m_thread

std::shared_ptr< std::thread > castor3d::MeshSubdivider::m_thread
protected

◆ m_threaded

bool castor3d::MeshSubdivider::m_threaded
protected

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