Castor3D
..
|
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... | |
Classe de base (abstraite) pour les subdiviseurs.
|
protected |
C3D_API Castor3D::Subdivider::Subdivider | ( | ) |
Constructeur par défaut.
|
virtual |
Destructeur.
|
virtual |
Crée et ajoute une face.
[in] | a | L'indice du premier sommet de la face |
[in] | b | L'indice du second sommet de la face |
[in] | c | L'indice du troisième sommet de la face |
C3D_API BufferElementGroupSPtr Castor3D::Subdivider::AddPoint | ( | real | x, |
real | y, | ||
real | z | ||
) |
Crée et ajoute un sommet à la liste.
[in] | x,y,z | Les coordonnées de la position du sommet |
C3D_API BufferElementGroupSPtr Castor3D::Subdivider::AddPoint | ( | Castor::Point3r const & | p_v | ) |
Crée et ajoute un sommet à la liste.
[in] | p_v | La position du sommet à ajouter |
C3D_API BufferElementGroupSPtr Castor3D::Subdivider::AddPoint | ( | real * | p_v | ) |
Crée et ajoute un sommet à la liste.
[in] | p_v | Les coordonnées de la position du sommet à ajouter |
|
virtual |
Nettoie tous les membres.
|
protectedvirtual |
Fonction d'initialisation.
Référencé par SetSubdivisionEndCallback().
|
protected |
Calcule les coordonnées de texture des sommets donnés, crée les faces.
[in] | p_a,p_b,p_c | Les sommets source |
[in] | p_d,p_e,p_f | Les nouveaux sommets |
Référencé par SetSubdivisionEndCallback().
|
protected |
Calcule les coordonnées de texture du nouveau sommet, crée les faces.
[in] | p_a,p_b,p_c | Les sommets sources |
[in] | p_p | Le nouveau sommet |
|
protectedvirtual |
Fonction de subdivision.
[in] | p_submesh | Le sous maillage à subdiviser |
[in] | p_generateBuffers | Dit si les tampons doivent être générés |
[in] | p_threaded | Dit si la subdivision doit être threadée |
|
protectedpure virtual |
Subdivise le sous-maillage.
Référencé par SetSubdivisionEndCallback().
|
protected |
Fonction de subdivision du thread.
Référencé par SetSubdivisionEndCallback().
|
protected |
Echange les faces internes avec celles du sous-maillage.
Référencé par SetSubdivisionEndCallback().
|
protected |
Vérifie si le point donnée est déjà dans la liste, et sinon le crée et l'ajoute.
[in] | p_point | Les coordonnées de la position du sommet à ajouter |
Référencé par SetSubdivisionEndCallback().
C3D_API BufferElementGroupSPtr Castor3D::Subdivider::GetPoint | ( | uint32_t | i | ) | const |
Récupère le point voulu.
[in] | i | L'indice du point |
C3D_API VertexPtrArray const& Castor3D::Subdivider::GetPoints | ( | ) | const |
C3D_API uint32_t Castor3D::Subdivider::GetPointsCount | ( | ) | const |
Récupère le nombre de points.
|
virtual |
Teste si le point donné fait partie de ceux de ce submesh.
[in] | p_vertex | Le point à tester |
[in] | p_precision | La précision de comparaison |
|
inline |
Définit une fonction qui sera appelée lors de la fin de la subdivision.
[in] | p_pfnSubdivisionEnd | Pointeur de la fonction à exécuter |
Références DoInitialise(), DoSetTextCoords(), DoSubdivide(), DoSubdivideThreaded(), DoSwapBuffers(), DoTryAddPoint(), et m_pfnSubdivisionEnd.
|
virtual |
Fonction de subdivision.
[in] | p_submesh | Le sous maillage à subdiviser |
[in] | p_occurences | Le nombre de subdivisions à effectuer |
[in] | p_generateBuffers | Dit si les tampons doivent être générés |
[in] | p_threaded | Dit si la subdivision doit être threadée |
|
protected |
Les faces.
|
protected |
Dit si les tampons doivent être générés.
|
protected |
Dit si la subdivision est threadée.
|
protected |
Le mutex du thread de subdivision.
|
protected |
Le callback de fin de subdivision.
Référencé par SetSubdivisionEndCallback().
|
protected |
Le thread de subdivision.
|
protected |
Le sous-maillage à diviser.