Bonjour,
Je suis débutant sur l'utilisation de DirectX et je suis actuellement en train de travailler sur un moteur en C++ qui affiche actuellement des petites animations 3D (DirectX 8) dans des fenêtres standards de windows. La création des fenêtre se fait donc de la manière la plus classique (CreateWindowEx, ShowWindow...). J'aimerais à présent pouvoir supprimer la fenêtre et le fond afin que l'animation s'affiche directement par dessus le bureau, de la même manière que les animations des compagnons d'office par exemple, mais avec des animations direct3D.
J'ai vu sur des forums qu'il était possible de spécifier une couleur transparente, pour par exemple faire des fenêtres qui ne sont pas carrées, en créant une fenêtre de type WS_EX_LAYERED et en spécifiant une couleur et une transparence avec SetLayeredWindowAttributes. Problème, cette méthode ne semble pas fonctionner avec des animations 3D, car en plus de laisser la couleur du fond, j'ai une occupation processeur à 100% et un affichage qui fait des bandelettes noires, comme un écran qui a du mal à se synchroniser...
J'ai poussé la recherche un peu plus loin, et en regardant les exemples fournis avec visual studio, il y a une petite application DirectX (mosquito) qui affiche des bitmaps successifs sur le bureau d'un moustique. Ce n'est pas une animation 3D, mais cet exemple m'a interpelé car il utilise une autre méthode, qui ne fait appel qu'à DirectX semble-t-il, et qui pourrait donc peut être être compatible avec mon animation 3D. L'idée semble de créer une fenêtre overlay qui prend en charge la transparence, mais n'ayant aucune connaissance dans le domaine, je ne sais pas si c'est la bonne méthode et encore moins s'il est réellement possible d'atteindre mon objectif, ni même comment...
Je voulais donc savoir si qqun avait déjà planché sur le problème et avait des directions à me donner ou bien des exemples pour intégrer une animation 3D en transparence dans windows ?
merci pour votre aide !
Partager