begin process at 2010 02 10 13:32:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

DirectX

 > APPRENTISSAGE DE DIRECTX 02

APPRENTISSAGE DE DIRECTX 02


 Information sur la source

Note :
8,6 / 10 - par 5 personnes
8,60 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :DirectX Classé sous :apprentissage, directx, animation, cube, colorisé Niveau :Débutant Date de création :25/06/2006 Vu / téléchargé :4 855 / 526

Auteur : seb2086

Ecrire un message privé
Site perso
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Cette fois ci dans cette application c'est vous qui pourrez faire tourner le cube dans le sens que vous voulez (avec les touches directionnelles) et vous pourrez également augmenter ou diminuer la viresse de rotation. Ce programme contient aussi la gestion des FPS, et vous pourrez changer la couleur du cube et la couleur du fond.

Voila en espérant aider certaines personnes qui en aurait besoin.
Merci ++



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture APPRENTISSAGE N°3 DE DIRECTX
Source avec Zip Source avec une capture TEST D'APPRENTISSAGE DE DIRECTX

 Sources de la même categorie

Source avec Zip Source avec une capture MP3 DX9 JOUER par f_l_a_s_h_b_a_c_k
Source avec Zip Source avec une capture EQUINOX VISUAL SON METER par f_l_a_s_h_b_a_c_k
Source avec Zip Source avec une capture FLEUR EN DELIRE! par f_l_a_s_h_b_a_c_k
Source avec Zip Source avec une capture DIREXCT X 9 D3D par f_l_a_s_h_b_a_c_k
Source avec Zip BLOP DIRECT X par f_l_a_s_h_b_a_c_k

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture JEU DE LA VIE 3D OPENGL AVEC GESTION SOURIS par fratleym
Source avec Zip VIRTOPROFESSOR: MRCARDO, UN APPRENTISSAGE RAPIDE DE VOS LEÇO... par soso62fr
Source avec Zip PACMAN_DESKTOP par snpier wolf
Source avec Zip Source avec une capture APPRENTISSAGE N°3 DE DIRECTX par seb2086
Source avec Zip Source avec une capture TEST D'APPRENTISSAGE DE DIRECTX par seb2086

Commentaires et avis

Commentaire de jmhC le 25/06/2006 10:50:36

Bonne initiative pour les débutants.

Commentaire de seb2086 le 25/06/2006 10:52:11

Merci je suis moi même débutant avec directx c'est pour ca que je pense que cette source s'adresse plus particulièrement aux débutants.

Merci de tes encouragements

Commentaire de Galmiza le 25/06/2006 11:42:26

Salut,

Combien de normales a ton cube ? 8 apparement à cause des ombres.
Pour chaque un pixel, la carte calcule la normale à ce pixel (interpolation linéaire des normales des vertex de la face) et déduit du produit scalaire de cette normale avec la direction de la lumière, l'intensité de l'ombre.
Si les normales des vertex de chaque face ne sont pas dans la même direction, tu ne pourras pas avoir d'ombre uniforme.

Il faut que tu portes le nombre de vertex à 24 (8 actuels * 3 normales par sommet) si tu veux des ombres plus réalistes.

Bonne continuation

Commentaire de seb2086 le 25/06/2006 11:44:12

Ok merci en fait je me suis pas soucié de ca pour le moment j'ai juste mis une lampe pour les colorisation et donc je n'ai pas du tout pris en compte l'ombre.

Merci de ton commentaire

Commentaire de SAKingdom le 25/06/2006 15:59:48

Très bien mais il serais intéressent de documenter encore plus la création du buffer image comme par exemple:

// Si l'application est en mode Windows ou Plein écran
d3dpp.Windowed = TRUE;
// Mode d'échange entre le FontBuffer et le BackBuffer
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
// Format du pixel du BackBuffer
d3dpp.BackBufferFormat = d3ddm.Format;
// Activation du Depth et Stencil Buffer
d3dpp.EnableAutoDepthStencil = TRUE;
// Format du Depth et Stencil
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
// Type de synchonisation de l'échange des Buffers
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;

Commentaire de seb2086 le 25/06/2006 19:51:10

Ok je vais donc détailler encore plus .Merci

Commentaire de cali70 le 26/06/2006 13:46:53

Salut! Je vais apporter quelques précisions à tout ca...
Déjà sur ce que demande SAKingdom.
d3dpp est ce k'on appelle le D3DPRESENT_PARAMETERS, c'est une structure définit comme ca:

typdef struct D3DPRESENT_PARAMETERS {
UINT      BackBufferWidth;
UINT      BackBufferHeight;
D3DFORMAT BackBufferFormat;
UINT      BackBufferCount;
D3DMULTISAMPLE_TYPE MultiSampleType;
DWORD     MultiSampleQuality;
D3DSWAPEFFECT SwapEffect;
HWND      hDeviceWindow;
BOOL      Windowed;
BOOL      EnableAutoDepthStencil;
D3DFORMAT AutoDepthStencilFormat;
DWORD     Flags;
UINT      FullScreen_RefreshRateInHz;
UINT      PresentationInterval;
}D3DPRESENT_PARAMETERS;

Cette strcuture spécifie les caractéristiques du device que l'on veux créer...
Les 2 premiers membres correspondent aux dimensions du backbuffer, je crois que tout le monde l'avait deviné. Ensuite, le BackBufferFormat, c le format de pixels utilisé par le device comme par exemple D3DFMT_A8R8G8B8 qui siginifie que l'ont a 8 bit pour l'alpha, 8 pour la composante rouge....

Le BackBufferCount c'est le nombre de Backbuffer, en général il n'y en a q'un seul mais on peut en trouver parfois 2, c'est le cas lorsque l'on implémente ce que l'on appelle le triple buffering. Le device peut supporter jusqu'à 4 back buffer.

Le MultiSampleType on peut le décrire brièvement comme l'antialiasing et la MultiSampleQuality ben ca définit la qualité... vous avez surement déjà vu dans les options des jeux des trucs du genre antialiasing 2X ou 4X, 6X.....et ben c'est ca et + la qulité est élevée + ca mange des ressources.

Le SwapEffect... il y'a 3 valeures possibles :
D3DSWAPEFFECT_FLIP : celà indique que lorsque l'on présente le back buffer au front buffer pouréffectué le rendu et bien les pointeurs des 2 buffers sont échangé l'un avec l'autre, c'est à dire que le pointeur du frontbuffer pointe sur le back buffer et inversement, c'est le mode le + rapide en full screen et à éviter en mode fenêtré car le hardware ne peut pas éffectuer cette manipulation et elle est donc émulée (donc ca bouffe + de mémoire et c'est + lent).

D3DSWAPEFFECT_COPY : Ici le contenu du back buffer est copié dans le front buffer, c'est la technique à utiliser en mode fenêtré pour les raisons que j'ai énnoncé + haut. Attention lorsque l'on éffectue une copie, le contenu du backbuffer n'est pas alteré et donc on peut avoir accès à son contenu même après avoir présenté le front buffer au back buffer (utile dans certains cas).

D3DSWAPEFFECT_DISCARD : C'est ce que tu as utilisé dans ta source et je dirais que c'est un bon choix car avec ce flag le device choisi tout seul quelle méthode utiliser (cad la meilleure par rapport à tes paramettres).

La hDeviceWindow: C'est la fenêtre liée au device en ce qui concerne  le focus, si on laisse NULL le device serra attaché à la fenêtre employée lors de l'appelle à la fonction createdevice, c'est toujours le cas en mode fenêtré mais on peut très bien lui attacher une autre fenêtre en mode full screen, je ne vais pas trop m'éttendre sur ce sujet...

Le membre booléen Windowed sert à dire au device si l'affichage s'éffectue en mode fenêtré ou non... rien de particulier ici.

Le EnableAutoDepthStencil : Si on met true le device céera un z-buffer et un stencil buffer qui lui serront attaché automatiquement. Je pense que vous voyez un peu ce qu'est le z-buffer et sinon le stencil buffer est un buffer comme le z-buffer mais on peut l'utiliser pour éffectuer le rendu sur certaines parties uniquement du back buffer... et sert également pour certains effets comme les ombres, la réfléction sur une surface... là aussi je vais pas détailler les techniques c'est pas le sujet et c'est pas vraiment pour débutant.

Le AutoDepthStencilFormat : Si le membre précédent est vrai ceci contient le format de données des pixels du z et stencil buffers. C'est à dire le nombre de bit allouées a chaques pixels du z et stencil buffer. Par exemple : D3DFMT_D24S8 indique 24 bit pour le z buffer et 8 pour le stencil buffer.

Les Flags : Indiquent comment doivent être traiter le back buffer et le z buffer.

D3DPRESENTFLAG_LOCKABLE_BACKBUFFER : dans ce cas le device crée un backbuffer dont on peut modifier ou rapatier des données en y accèdant directement par la fonction Lock().

D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL : Ce flag donne les meilleures preformances lorsque l'on a crée un z buffer. Le contenu du z buffer n'est plus accessible après le rendu.

FullScreen_RefreshRateInHz : indique le taux de raffraichissement du device en hertz, 60....
pour utiliser le taux de rafraichissement par défaut du moniteur il suffit de mettre 0. En mettant D3DPRESENT_RATE_DEFAULT le device choisit tout seul.

Le PresentationInterval : Là c'est un peu plus délicat à expliquer mais je vais éssayer.
Lorsque le moniteur éffectue le rendu le canon à électron à l'intérieur balaie l'écran de haut en bas et de gauche à droite. Une fois qu'il est arrivé en bas il revient à sa position de départ en suivant une trajectoire diagonale du coin en bas à droite au coin en haut à gauche. Ce court laps de temps est appellé la vertical retrace periode. Maintenant... Imaginons que l'on éffectue le rendu pendant que le canon éffectue un rendu (une frame) et qu'il n'a pas finit de parcourir l'écran. Si on présente le back buffer au front buffer immédiatement et bien la partie de l'écran au dessus du canon affichera l'ancienne image (la précédente frame) et le canon commencera à afficher le contenu de la nouvelle image sur le reste de l'écran donc sur le même écran on aura une partie de l'ancienne image et une partie de la nouvelle. ce phénomene n'est pas visible à 60 images par secondes mais on peut distinguer facilement des artéfacts (des genres de lignes qui traversent l'écran quand vous bouger la camera, je suis sur que vous voyez de quoi je parle. Voilà, donc en mettant D3DPRESENT_INTERVAL_IMMEDIATE c'est ce qui ce produit.
Y'a t'il moyen d'éliminer ces artéfacts ? et bien oui, pour ca il suffit d'attendre la vertical retrace période, là où le canon n'éffectue aucun rendu pour présenter le back buffer au front buffer ainsi lorsque le canon commencera de nouveau à balayer l'écran il n'affichera plus que la nouvelle image qui est déjà présenté au front buffer et qui n'attend plus qu'à être rendu. Pour attendre la vertical retrace periode il faut mettre ce flag : D3DPRESENT_INTERVAL_ONE. Mais on peut aussi décider d'attendre une 2ieme perdiode de retrace pour éffectuer le rendu en mettant D3DPRESENT_INTERVAL_TWO.... on peut aussi attentre 3 ou 4 périodes en mettant three et four à la place. Plus on laisse passer de retraces periodes entre 2 frames plus le nombre d'images par secondes serra bas. Donc pour un rendu de qualité optimale il faut mettre ONE, à condition que la puissance de la becane le permette. Dans les jeux cette technique qui élimine les artéfacts est appellée Synchronisation verticale, ca doit vous dire quelque chose ;). Pour finir si on met D3DPRESENT_INTERVAL_DEFAULT, le device choisi tout seul la méthode à employer (je le déconseil).

Je sais c'était long et peu être chiant à lire pour certains mais j'espere que cette déscription aidera quelques-uns à mieux comprendre le fonctionnement du device de directX 9.
Si vous avez remarqué des erreurs dans mes explication n'hésitez pas à me le faire savoir, je ne suis pas infaillible. Et pour ceux qui aurait des questions sur DirectX.... on peut me joindre sur msn (cali7-0@hotmail.fr).

Commentaire de seb2086 le 26/06/2006 16:52:08

Merci Cali70 pour ces précisions que je n'aurais jamais pu fournir aux personnes désirant une description détaillée de cette partie

Commentaire de wxccxw le 26/06/2006 20:46:32

Direct X 02 ?? arf, meme mon grand pere ne l'utilisait pas ^^
sinon sa a l'air interessant, je regarde.

Commentaire de SAKingdom le 26/06/2006 23:04:01

Mais non. C'est le "tuto" qui est le second. Il doit rouler sous Direct X 9.0c

Commentaire de wxccxw le 26/06/2006 23:33:12

a ok, je me disait, le mec sort du cimetiere.

Commentaire de cali70 le 27/06/2006 00:04:18

LOL, je croyais que c'était ironique la remarque au début ;)

Commentaire de seb2086 le 27/06/2006 08:14:16

Ouais désolé en fait c'est sous directx 9.0c et c'est la suite d'une autre source .

Commentaire de cali70 le 27/06/2006 12:35:59

J'ai installé le dernier sdk récemment et ta source ne compile pas car le compilo ne trouve pas une certaine librairie... j'imagine que c'est parce que tu n'as pas utilisé la derniere version (il y'a eu quelques petits changements entre la précédente version et la version actuelle). Dis moi ce qu'il en est si le probleme ne vient pas de ca j'en chercherai la cause.

Commentaire de seb2086 le 28/06/2006 10:08:07

Exact moi j'ai la version de décembre 2004 et un copain m'a dit qu'il y a eu une version en juin 2006 donc je pense que le problème vient de la

Commentaire de gbourgeois0019 le 02/07/2006 04:18:54

Salut,

J'ai la derniere version de directx sdk et je n'ai pas d3dx9dt.lib et donc le prog ne compile pas ... c'est normal que je ne trouve pas cette librairie ??

Commentaire de jmhC le 02/07/2006 11:04:00

Tu peux compiler en Release. Pour le Debug, il te faut cette lib.

Commentaire de seb2086 le 02/07/2006 11:12:05

Oui excusez moi tous j'ai dû faire une mauvaise manipulation mais ce n'est pas d3dx9dt.lib mais d3dx9.lib voila et la ca devrait fonctionner.

Commentaire de cubinou le 21/09/2006 23:27:54

juste pour signaler que dans le programme il y a une faute de frappe, tu parle du fond d'ecran et non pas du font ;) je commencais a me perdre dans les lignes ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Animation avec un .X file (DirectX 9) [ par Hankmoon ] Bonjour à tous,je travail actuellement sur un projet scolaire qui consiste à faire les bases d'un moteur 3D à l'aide de l'API de directX 9.Je suis arr Animation sacadée [ par liquif ] slt tt le monde,j'essaye de programmer sous VC++ un p'tit jeux en opengl; quand l'utilisateur appuis sur avancer , un cube est censé avancer animation sur directx [ par heidi79 ] quelqu'un saurait-il comment lancer une animation contenue dans un fichier .3ds?Je sais convertir en .xJe sais afficher l'objet 3d.Apres plusieurs rec aidez moi par ou commencer mon apprentissage du cpp et de directX ? [ par ksir ] je souhaite reliser un jeu en 3d pour cela je pense devoir utliser le c++ et directX seulement je 'y connait rien .par ou commencer mon apprentissage aidez moi !par ou commencer mon apprentissage du cpp et de directX ? [ par ksir ] je souhaite reliser un jeu en 3d pour cela je pense devoir utliser le c++ et directX seulement je 'y connait rien .par ou commencer mon apprentissage animation 3ds en directx [ par heidi79 ] Je cherche à lancer une animation inclue dans un fichier .x (converti à partir d'un fichier .3ds) grâce à directx.J'ai cru voir sur différents sites q coté visible d'une face d'un cube [ par nicotwo ] Bonjour, Je suis actuellement en train d'apprendre à faire de la 3D avec directX 10 à l'aide des tutoriels du SDK. Étant au tutoriel 4, j'ai fait une buffer directx [ par mana ] bonjour, je travail avec des image dont l'adresse est un pointeur directx(dans la ram du pc , pas cette de la carte vidéo), mais l'accès a la mémoire Application 2D [ par Tom59247 ] Bonjour, dans le cadre d'un projet d'étude, je dois effectuer une animation 2d d'un automate.Pour l'instant le projet est légèrement flou [^^mad5].Je Comment utiliser DirectX avec Boralnd C++Builder [ par Fuckly94 ] J'ai tout éssayé,mais je ne comprend rien!!je voudré juste quelque conseils,des exemples créés avec C++ Builder si possible,et un site qui pourrai mex


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,373 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales