Bonjour à tous
En ce moment, j'ai besoin de récupérer l'identifiant de texture côté OpenGL d'une image ou une texture de SFML pour le lier avec un framebuffer object et ainsi afficher un cube 3D et texturé en rotation dans la couche 2D qui sert à l'interface graphique de mon jeu 3D. D'autres choses du même type auront besoin du même procédé et de plus cela permet d'utiliser les fonctionnalités de SFML (comme la simplicité d'utilisation entre autres) pour gérer les textures sans perdre l'accès à l'identifiant pour tout travail qui se fait côté OpenGL.
J'ai été surpris de constater que la méthode GetId() pour un sf::Image ou un sf::Texture n'existait pas. en me renseignant j'ai vu aussi qu'il n'est pas possible de l'ajouter par héritage car l'ID est private. Un sujet à ce propos a été écrit par quelqu'un d'autre sur l'ancien forum :
http://www.sfml-dev.org/old-forum-fr/viewtopic.php?t=1709En lisant la réponse de Laurent, je comprends que ce type d'accès soit interdit dans un sf::Image, étant donné l'existence maintenant de sf::Texture. Par contre, sf::Texture pourrait tout à fait, à mon sens, permettre cette liberté.
Je sais bien que c'est une porte ouverte à des manipulations non-sécurisées de la texture interne, mais dans le cas d'un sf::Texture, ce que j'attends de ses méthodes c'est de me simplifier la vie, pas forcément de trop restreindre mes possibilités.
Je ne suggère pas nécessairement de rendre l'ID public, mais plus tôt protected pour permettre d'ajouter des méthodes supplémentaires par héritage, non pas dans sf::Image, mais au moins dans sf::Texture. Au programmeur d'être assez rigoureux pour éviter de faire n'importe quoi et ainsi profiter de cette liberté. Se passer par exemple de l'attachement d'une texture SFML du plan 2D avec un framebuffer par exemple, c'est assez dommage, je trouve. Autrement, il faudrait recopier les pixels, ce qui est un peu plus lent et contraire au principe du FBO (oui je donne l'exemple pour mon cas).
J'espère ne pas avoir ouvert un sujet déjà traité ici, j'ai cherché avant, mais bon
Qu'en pensez-vous et qu'en penses-tu Laurent ?