Test d'une couleur en direct3d [Résolu]

Signaler
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018
-
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018
-
Bonjour à tous,
Le problème a été posé très souvent mais je n'ai pas trouvé une seule réponse à celui-ci à savoir:
Sous Direct 3D et VB6 je voudrais tester la couleur d'un pixel à l'aide des coordonnées de la souris.
L'API Getpixel ne donne pas de résultat satisfaisant,l'affichage de la valeur de la couleur dans la sub de rendu ne correspond pas à la réalité(sauf pour les couleurs franches rouge,bleu,jaune,vert,blanc et noir).
Alors quelqu'un a t-il été confronté à ce casse tète et si oui , comment peut on s'en sortir.
Je suppose qu'en D3D il doit exister soit une fonction , soit une instruction ou manipulation quelconque pour me sortir de cette impasse.
Un petit exemple sous paint j'ai une couleur qui vaut :FF 80 00 et dans mon programme sous D3D elle devient:FF 82 00
Merci à tous

6 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
essare d'utiliser en plus la fonction TranslateColor de la librairie olepro32.dll de l'Api de Windows


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018

Merci je vais tester , mais je doute que cette fonction règle mon problème en D3d car d'après ce que j'ai vu et si c'est exact , c'est une fonction qui ne fait que transformer le format d'affichage.
a suivre.......
Encore merci
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018

En consultant le site Microsoft consacré à Windows et D3d j'ai trouvé la solution à mon problème à savoir:
Il y avait dans mon programme une incompatibilité entre le nombre de bits pour la couleur dans les propriétés de ma carte graphique (32) et le format du Backbuffer.
Pour pouvoir tester la couleur sous le curseur de la souris et avec Getpixel il faut mettre la ligne suivante:
BackbufferFormat=D3DFMT_X8R8G8B8
(A8R8G8B8 21 A 32-bit ARGB pixel format, with alpha, that uses 8 bits per channel )
On se demande pourquoi les gens qui ont codé ces paramètres l'ont fait si compliqué.
Cordialement
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018

Merci pour ta réponse mais peut tu m'expliquer sommairement que fait cette fonction et surtout si tu connais la syntaxe exacte pour coder celle-ci.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
peut tu m'expliquer sommairement que fait cette fonction et surtout si tu connais la syntaxe exacte pour coder celle-ci

Réflexe ===>
Tapez le texte de l'url ici.
Et ne ne saurais ni t'en dire plus (explications claires), ni t'en donner un code/exemple plus complet que celui que tu y trouves en exemple !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
c'est une fonction qui ne fait que transformer le format d'affichage

Oui ? C'est ta traduction de :
Converts an OLE_COLOR type to an RGB color
.
?
Nous ne traduisons pas de la même manière.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ