Bonjour,
Contexte :
Je suis actuellement entrain de travailler sur un programme utilisant Opengl. Avec les nouvelles spécificités Opengl beaucoup de fonctions sont devenues dépréciées notamment toutes les fonctions concernant la manipulation des matrices Modelview et Projection.
Pour me faciliter la gestion mathématique de mon programme et notamment tout ce qui touche aux matrices j'utilise la librairie mathématique : OpenGL Mathematics (ou GLM, site :
http://glm.g-truc.net/). Néanmoins cette librairie ne propose pas la gestion des piles de matrices à la similitude des fonctions OpenGL glPushMatrix et glPopMatrix, fonctions dépréciées. J'ai donc par conséquent voulu reproduire ce type de fonction pour cela j'ai utilisé une classe du type :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
class pile_matrix
{
public:
//constructeur/destructeur
pile_matrix(const glm::mat4& m);
pile_matrix();
~pile_matrix();
/*
....
méthodes sur ma pile
....
*/
operator glm::mat4&() //cast qui ne va pas ou fait pas ce que je voudrai
{
return pile.back();
}
private:
std::vector<mat4> pile;
} |
Mon problème est que je voudrais utiliser de façon transparente un objet de ma class pile_matrix comme étant un objet mat4. En gros avoir un cast automatique de ma classe pile_matrix en mat4 mais ce que je n'arrive pas à obtenir. Par exemple le code suivant ne fonctionne pas :
Code:
1 2 3 4
|
pile_matrix modelview, projection;
glm::mat4 matriceA, matriceB;
buffer = matriceA + modelview * projection * matriceB; //erreur lors de la compilation sur les operateurs |
Est-il nécessaire que je redéfinisse la globalité des opérateurs entre mat4 et pile_matrix ? ou une autre solution existe notamment au niveau du cast ? je fais une erreur quelque part ?
(Je me suis permis de poster sur le forum c++ et non opengl étant donné que c'est plus un problème de langage que Opengl, néanmoins si je me trompe de forum je déplacerai mon post)