Bonjour � tous.
Je travail actuellement sur un logiciel de calcul sur pi�ce m�canique qui inclus �galement un outils de visualisation des pi�ce m�canique en 3D.
Mon environnement de d�veloppement est Embarcadero� RAD Studio XE et tout est fait en C++.
Ces vues 3d sont faite avec OpenGL et il peut y avoir plusieurs vues ouverte en m�me temps.
J'aurais besoins, pour un nouveau module du logiciel , de cr�er un fen�tre contenant les aper�us de toutes les vue 3D ouverte. Un petit peu comme la fen�tre qui apparait sous Vista lorsqu'on fait alt+tab pour naviguer entre les fen�tres.
Pour le moment j'arrive � lister toutes les vue 3D ouvertes, �a aucun probl�me. Je r�cup�re les TForm associ�es �galement.
Ensuite, pour l'aper�u, j'ai essay� diff�rentes techniques :
- L'utilisation de la fonction GetFormImage() de la classe TForm me fait un screenshot de la TForm mais sans la vue 3D. La zone ou devrait apparaitre la vue est tout simplement vide.
-L'utilisation de la fonction glReadPixels. C'est avec cette fonction que j'ai eu les meilleurs r�sultats. Le hic c'est que je passe par un fichier temporaire pour convertir les pixel en un object Graphics::TBitmap.
Ne connaissant pas du tout le fonctionnement d'OpenGL j'ai repris les m�thode de ce site pour la lecture des pixel et l'�criture du fichier .bmp
http://neogamedev.chable.net/index.php?PageID=2018 (section "Ecrire une image Bitmap")
Et il y aussi d'autres petits soucis avec cette m�thode :
Si la fen�tre TForm contenant la vue 3D a �t� r�duite � un tr�s petit format (100x100 par exemple), le fichier .bmp temporaire cr�� est valide (selon l'aper�u windows).
Mais si ma fen�tre est agrandie le fichier .bmp cr�� n'est plus valide(selon l'aper�u windows toujours), mais je peu tout de m�me le visualiser avec paint. Et les couleurs de ma pi�ce m�canique ne correspondent plus � ma vue 3D.
Dans tous les cas j'arrive � charger l'image dans un objet Graphics::TBitmap � l'aide de la m�thode LoadFromFile. Je redimensionne mon image � une taille d'environ 150x150 pour en faire un aper�u. Et apr�s redimensionnement j'ai un autre soucis, mon image manque de nettet�.
Donc au final je souhaiterai savoir pourquoi l'utilisation de la m�thode glReadPixel et l'�criture de l'image dans un fichier �choue si ma vue 3D est "trop grande".
Et je souhaiterai �galement savoir s'il existe des techniques pour am�liorer la nettet� � l'affichage d'un objet Graphics::TBitmap (� l'aide de filtre ou autre).
Merci d'avance!!!!
Partager