Message #2281
Sujet: Changement de résolution a la volée.
| Type | Date | Auteur | Contenu |
|---|---|---|---|
| Dernière modification | 15-05-2007 22:50:30 | Ravine |
Je me réponds a moi meme apres recherches et tests.
Donc, je résume : j'ai mon irrlicht dans un control winform (ici dans un panel, dont on peut récuperer aisément les width et height). Quand je resize mon winform, je veux garder le ratio. Toute la subtilité est dans la caméra (et non pas dans le device, qui est bien ou il est). C'est d'une telle simplicité que j'en suis presque vexé d'avoir passé autant de temps dessus (bon j'ai surtout perdu du temps sur un détail, dont je vous ferai mention un peu plus loin). J'ai mon device de créé, un sceneManager et une camera d'attaché. Pour des besoins de tests, je mets donc un cube. Le tout est donc de remettre a jour l'aspect ratio de la camera vala. C'est tout con, c'est juste ça. La subtilité (qui m'a fait perdre 2 /3 bonnes heures) c'est le choix de l'event qui doit appeler cette méthode. Comme dans ma tete c'etait "en resizant, je mets a jour", j'avais calé ça sur l'event "ResizeEnd" du winform. Ok, ça marche quand on resize a la main, mais quand on passe en Fullscreen, cet event n'est jamais appelé (on a pas resize, on est passé en fullscreen, détail non négligeable). Donc on se dit "raaah ça marche pas c'est nul !" et on cherche des heures sur des histoires de fov ou de merdouilles du genre alors qu'en faisant : tout marche au poil. Vous noterez le cast en float sur le width et height du panel. En effet, si on cast le float dans UpdateAspectRatio, sur le résultat de x/y (c.a.d float aspect = (float) x/y; ) on cast sur la partie entiere de cette division (les valeurs width et height des controles winform etant en int), et donc on recup soit 1, soit 2 (ou 0, ce qui est vachement moins fun) EDIT : ahaha comme quoi, rien ne marche jamais comme il faut. Du coup j'appelle ça sur le Panel_SizeChanged, parce que quand je m'amuse a bouger les splitter, forcément, je ne touche pas au winform... grmlmlml... comme c'est parti, dans 1h je re-édite parce que je viens de tilter que je me suis encore planté quelque part |
| Création du message | 15-05-2007 22:32:00 | Ravine |
Je me réponds a moi meme apres recherches et tests.
Donc, je résume : j'ai mon irrlicht dans un control winform (ici dans un panel, dont on peut récuperer aisément les width et height). Quand je resize mon winform, je veux garder le ratio. Toute la subtilité est dans la caméra (et non pas dans le device, qui est bien ou il est). C'est d'une telle simplicité que j'en suis presque vexé d'avoir passé autant de temps dessus (bon j'ai surtout perdu du temps sur un détail, dont je vous ferai mention un peu plus loin). J'ai mon device de créé, un sceneManager et une camera d'attaché. Pour des besoins de tests, je mets donc un cube. Le tout est donc de remettre a jour l'aspect ratio de la camera vala. C'est tout con, c'est juste ça. La subtilité (qui m'a fait perdre 2 /3 bonnes heures) c'est le choix de l'event qui doit appeler cette méthode. Comme dans ma tete c'etait "en resizant, je mets a jour", j'avais calé ça sur l'event "ResizeEnd" du winform. Ok, ça marche quand on resize a la main, mais quand on passe en Fullscreen, cet event n'est jamais appelé (on a pas resize, on est passé en fullscreen, détail non négligeable). Donc on se dit "raaah ça marche pas c'est nul !" et on cherche des heures sur des histoires de fov ou de merdouilles du genre alors qu'en faisant : tout marche au poil. Vous noterez le cast en float sur le width et height du panel. En effet, si on cast le float dans UpdateAspectRatio, sur le résultat de x/y (c.a.d float aspect = (float) x/y; ) on cast sur la partie entiere de cette division (les valeurs width et height des controles winform etant en int), et donc on recup soit 1, soit 2 (ou 0, ce qui est vachement moins fun) EDIT : ahaha comme quoi, rien ne marche jamais comme il faut. Du coup j'appelle ça sur le Panel_SizeChanged, parce que quand je m'amuse a bouger les splitter, forcément, je ne touche pas au winform... grmlmlml... comme c'est parti, dans 1h je re-édite parce que je viens de tilter que je me suis encore planté quelque part |
| Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
|---|---|---|---|---|
|
Préférences cookies Corrections |
![]() ![]() ![]() ![]() |
Propulsé par Django xhtml 1.0 css 2.1 |
884 membres 1440 sujets 11337 messages |
Dernier membre inscrit: Saidov17 129 invités en ligne membre en ligne: - RSS Feed |