Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1733 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++/Direct X] Comment afficher une image ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++/Direct X] Comment afficher une image ?

n°138285
NerOcrO
PrOut
Posté le 13-05-2002 à 17:09:39  profilanswer
 

Je débute en Direct X et c'est un peu chaud à comprendre.
Avez vous des liens ou sources à me filer ?


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
mood
Publicité
Posté le 13-05-2002 à 17:09:39  profilanswer
 

n°138287
El_gringo
Posté le 13-05-2002 à 17:11:41  profilanswer
 

NerOcrO a écrit a écrit :

Je débute en Direct X et c'est un peu chaud à comprendre.
Avez vous des liens ou sources à me filer ?  




 
http://nexe.gamedev.net

n°138303
NerOcrO
PrOut
Posté le 13-05-2002 à 17:22:55  profilanswer
 

Merci mais c'est en anglais alors c'est pas tres efficace pour moi.


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
n°138319
El_gringo
Posté le 13-05-2002 à 17:47:14  profilanswer
 

NerOcrO a écrit a écrit :

Merci mais c'est en anglais alors c'est pas tres efficace pour moi.  




 
Si tu veux faire de l'info, 'va falloir que t'apprennes à lire de l'anglais mon garçon.

n°138379
NerOcrO
PrOut
Posté le 13-05-2002 à 20:42:44  profilanswer
 

SVPPPPPPPPPPPPP


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
n°138721
ThValHalla
Valkyrie choisiera le meilleur
Posté le 14-05-2002 à 16:07:03  profilanswer
 

Alors pour les noobs comme toi et moi :) vla un ptit site pour commencer en directx et autres languauges.
 
http://www.programmationworld.com

n°138723
El_gringo
Posté le 14-05-2002 à 16:09:21  profilanswer
 

ThValhalla a écrit a écrit :

Alors pour les noobs comme toi et moi :) vla un ptit site pour commencer en directx et autres languauges.
 
http://www.programmationworld.com  




 
Ouais, mais alors vraiement pour commencer...

n°138843
Willyzekid
Posté le 14-05-2002 à 19:46:42  profilanswer
 

Arff je vais essayer de t'aider pour l'affichage les images (au passage, ca te donnera des notions sur Dx). Cela dit, mes connaissances sont plutôt limitées (suis jamais allé au fond du prb) et peut-être dépassées!
 
Déjà, il n'y a pas de fonction de haut niveau en 2D qui gère l'affichage (mes souvenirs!). Ca veut dire qu'il faut les créer.
 
Alors déjà comme pour toutes les librairies tu dessine sur une surface qui est censé représenter l'écran (celle de Direct3D ressemble bcp au GDI sans les abstractions :) ).
Cette surface c'est une longue suite de pixels. Si les pixels sont codés sur 32 bits en RGB(A), de 0 à 7 bits, tu as la couleur rouge du pixel en haut a gauche. De 8 à 15, tu as la couleur verte, etc.
 
En fait, dans ton ordi (et donc dans DirectX ou n'importe quelle librairie), tu as plusieurs de ces surfaces. Tu as notamment au moins un buffer qui te permet de dessiner même quand tu attends que ton moniteur et ta carte soient prèt (cf. Vsync).
 
Donc dans l'ordre, tu dois:
 
- Effacer le buffer (en anglais "back buffer) parce que si tu ne l'efface pas tu vas redessiner sur l'image présédente. Utilise la fonction IDirect3DDevice8::Clear()
- Obtenir un pointer sur le back buffer pour pouvoir jouer avec. IDirect3DDevice8::GetBackBuffer()
- Locker le back buffer pour être sur que seul toi accéde à ce buffer (sinon avec le multitache, t'as plusieurs appli qui peuvent toucher a ce backbuffer en même temps -> prb). IDirect3DDevice8::LockRect()
- Dessiner dans le back buffer (en mémoire)
- Delocker le back buffer. IDirect3DDevice8::UnlockRect()
- Deleter le pointer. IDirect3DDevice8::Release
- Copier le back buffer dans la surface representant l'ecran ("primary surface" ). Ca DirectX s'en occupe très bien. IDirect3DDevice8::Present()
 
Voilà maintenant que mettre dans l'étape "Dessiner dans le back buffer"...??
Ben j'en sais rien :D
 
A priori, en cherchant un peu j'ai pas trouvé de fonction pour loader de bmp!! J'utiliserais donc le GDI de win pour loader l'image et obtenir les info dessus! Tu delete le BMP de la mémoire! Puis tu crée une nouvelle surface D3D (notons la NewSurf) en utilisant les info obtenu précédement. Tu charge l'image (D3DXLoadSurfaceFromFile() ). Tu copies (avec D3D!!! le GDI de win est trop lent!!!) la NewSurf dans le back buffer....(avec CopyRects)
 
Et tu copies le back buffer dans la primary surface...
 
Bon maintenant loader 2 fois une image c'est de la perte de temps, il doit y avoir une autre méthode!!! Les pros, une idée?
Je cherche de mon coté :)
 
Edit: Me suis aidé de GameGuru pour les fonctions

 

[jfdsdjhfuetppo]--Message édité par Willyzekid le 14-05-2002 à 19:48:40--[/jfdsdjhfuetppo]

n°138858
NerOcrO
PrOut
Posté le 14-05-2002 à 20:07:27  profilanswer
 

Merci bien pour vos réponses les gars.


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
n°138912
ThValHalla
Valkyrie choisiera le meilleur
Posté le 14-05-2002 à 21:45:41  profilanswer
 

Bah c pas dur tu vas sur le site que j'ai marquer plus haut et tu matte les premiers cours de DIRECTX dans LANGUAGE>>Programmation avancée>>Cours sur directX.
Et dans les premiers cours il t'explique comment afficher une image et c'est bcp plus simple que ce qu'a mis willyzekid...:)

mood
Publicité
Posté le 14-05-2002 à 21:45:41  profilanswer
 

n°138915
Willyzekid
Posté le 14-05-2002 à 21:54:22  profilanswer
 

ThValhalla a écrit a écrit :

Bah c pas dur tu vas sur le site que j'ai marquer plus haut et tu matte les premiers cours de DIRECTX dans LANGUAGE>>Programmation avancée>>Cours sur directX.
Et dans les premiers cours il t'explique comment afficher une image et c'est bcp plus simple que ce qu'a mis willyzekid...:)  




 
Arff je me disais aussi!! Je fais vieux papi :)
Bon je vais aller m'éduquer moi...:)

n°138917
Willyzekid
Posté le 14-05-2002 à 22:02:46  profilanswer
 

ThValhalla a écrit a écrit :

Bah c pas dur tu vas sur le site que j'ai marquer plus haut et tu matte les premiers cours de DIRECTX dans LANGUAGE>>Programmation avancée>>Cours sur directX.
Et dans les premiers cours il t'explique comment afficher une image et c'est bcp plus simple que ce qu'a mis willyzekid...:)  




 
Ouais non mais leur site il est pas à jour!! Il parle de DirectDraw là donc de DirectX7...
Or depuis DirectX8, DirectDraw a disparu et l'ensemble des fonctions 2D on été intégré dans Direct3D...ou plutôt elles ont disparu!!
 
Ah si, ils parlent de DirectX8...Ils disent d'utiliser D3DXCreateTextureFromFileEx (qui évite apparement de loader 2 fois l'image :D). A part ca, la routine d'affichage est la même :)
Pas trop rouillé papi!! :)
 
En plus ils utilisent la librairie X, c'est vraiment des petits joueurs :D

 

[jfdsdjhfuetppo]--Message édité par Willyzekid le 14-05-2002 à 22:05:54--[/jfdsdjhfuetppo]

n°138998
El_gringo
Posté le 15-05-2002 à 08:49:22  profilanswer
 

Willyzekid a écrit a écrit :

 
 
Ouais non mais leur site il est pas à jour!! Il parle de DirectDraw là donc de DirectX7...
Or depuis DirectX8, DirectDraw a disparu et l'ensemble des fonctions 2D on été intégré dans Direct3D...ou plutôt elles ont disparu!!
 
Ah si, ils parlent de DirectX8...Ils disent d'utiliser D3DXCreateTextureFromFileEx (qui évite apparement de loader 2 fois l'image :D). A part ca, la routine d'affichage est la même :)
Pas trop rouillé papi!! :)
 
En plus ils utilisent la librairie X, c'est vraiment des petits joueurs :D  




 
C pour ça que je dis que le p'tit bonhome va devoir se mettre à l'anglais s'il veut apprendre DirectX. à moi qu'il soit interresser pour apprendre à se servir des versions périmées de DirectX. En fait, en général, le temps qu'un français traduise ou ponde un truc sur directX, Microsoft est déja passé à la version suivante. Hé oui... dur dur d'être français !:D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++/Direct X] Comment afficher une image ?

 

Sujets relatifs
[ HTML ou JAVASCRIPT... ] Afficher un champ...Qui peut me dire comment inserer une image dans le forum ?
[asm 386] afficher un chiffre a l'ecran ?[java] afficher une page html à l'intérieur d'une applet
[ PHP - MySQL ] Afficher les entrées sur plusieurs colonnes ?ASM : Afficher une variable a l'ecran
Comment mettre du texte sur une image en HTML ????[Css] agrandir une image sous forme d'animation dans un calque ?
afficher le contenu d'une variable sous DOSComment imprimer une image à partir d'un code javascript?
Plus de sujets relatifs à : [C++/Direct X] Comment afficher une image ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR