PROGRAMMATION DIRECTX 8 TUTORIAL 1 : INITIALISATION DE DIRECT3D 8

vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006 - 3 nov. 2003 à 07:57
 oasisk1949 - 8 mars 2018 à 19:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17630-programmation-directx-8-tutorial-1-initialisation-de-direct3d-8

Bravo! Vous maitrisez bien votre sujet et savez bien l'expliquer!
dthuler Messages postés 121 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 29 avril 2009
22 oct. 2006 à 08:18
Super idée, très utile pour qui commence! Allez, un p'tit 10 de plus!
cs_LaPatoshe Messages postés 53 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 décembre 2009
6 janv. 2006 à 01:08
salut. Je pense que ce serait une possibilité que l'on peut étudier à présent, vu que les cartes graphiques actuelles permettent le muti sortie. En revanche, il doit falloir pour cela utiliser deux adapteurs graphiques différents (1 pour chaque Devie créé) et je ne pense pas que sous DirectX8 il y ait de solution à cela. Maintenant, si quelqu'un a une idée elle est la bienvenue.
cs_yannickt Messages postés 64 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 22 novembre 2011
31 déc. 2005 à 05:35
Disons que nous avons deux ou plusieurs écrans, serait-il possible d'établir une "surface" sur chacun d'eux, avec d'autres forms? Cela serait intéressant de pouvoir avoir une gestion multi écrans, merci.
douera game Messages postés 12 Date d'inscription mercredi 10 août 2005 Statut Membre Dernière intervention 20 février 2007
16 déc. 2005 à 12:28
Merci pour ton aide, 10/10
bigbourin Messages postés 64 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 18 août 2006
23 mai 2005 à 22:26
Parfait pour moi aussi qui debute , 10 / 10 , continue ...
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
16 août 2004 à 10:10
Parfaitement ce qu'il me faut, on comprend directement l'utilisation de directX, même si on en a jamais fait. Je met 10/10.
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
16 août 2004 à 10:10
Parfaitement ce qu'il me faut, on comprend directement l'utilisation de directX, même si on en a jamais fait. Je met 10/10.
Horfee Messages postés 188 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 10 août 2009
8 juil. 2004 à 15:55
est ce que tu sais prog direct x 8 en VB.NET ?parce que g des petits pb avec les fonctions sur les matrices...
vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006
19 févr. 2004 à 10:13
Bah comme resource sur directx, tu trouveras ce que tu veux sans doute sur le site msdn.microsoft.com/directx (pas de www) et pour ton pb, essaie de mettre Software_VertexProcessing au lieu de Hardware. Mais bon c'est pas sur que ca passe. si tas tjs un pb tu pourrais essayer de retrouver le message d'erreur via la code retourné (en général dans directx, tas une fonction qui te donne le message d'erreur en fonction du code retourné...
Voilà jespere que ca marchera sinon nhesite pas a demander ^^
a bientot
cs_gluk Messages postés 43 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 25 avril 2008
17 févr. 2004 à 20:48
super source, tres bien realisée, indispensable pour un debut de comprehension à directx, merci.
cs_rachid777 Messages postés 12 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 17 mars 2004
17 févr. 2004 à 19:32
salut,
ce tutorial est excellent pour commencer la programmation directX, je vois que t'as pratiquement pensé à tout,
enfait ce code ne marche pas chez moi, il y a une erreur d'automation au niveau de la procédure pDirect3D.Clear, 0, etc... vers la fin,
j'utilise un p3 avec une carte graphique (sans accélératrice) de 8Mo, pour info
mais je voulais savoir ou est-ce qu'on peut trouver des info sur les procédures Clear, BeginScene etc... de DirectDraw sans avoir à télécharger le DirectX SDK?
Merci encore pour ton tutorial :-)
cs_LaPatoshe Messages postés 53 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 décembre 2009
6 nov. 2003 à 21:12
J'envoie le Tutorial 2 dans 15 minutes environ. Il y aura un nota faisant un peu référence à ce que dit vr3h sur le VERETEXPROCESSING mais il s'agira vous verrez d'une question que je me pose. En ce qui concerne HEL, cela n'existe pas en directX8 pour VB, c'est le REF qui est l'utilisation du CPU pour la 3D. A plus
vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006
5 nov. 2003 à 13:26
PS : GG Mauricet, le plus sur est effectivement de reprendre les parametres d'affichages du bureau de windows. ceci assurant un max de compatibilité avec meme des anciennes CG.
vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006
5 nov. 2003 à 13:21
Petite rectif : D3DCREATE_HARDWARE_VERTEXPROCESSING indique simplement que les Vertexs seront gérés par la CG et non par le CPU, mais bcp de CG pas forcément d'entrée de gamme ne le supporte pas et donc il faut mettre le SOFTWARE_VERTEXPROCESSING. Pour utiliser le HardWare pour dessiner, on le déclare à la création du device dans : D3DDEVTYPE_HAL (je crois ke HAL = Hardware Abstraction Level : et HEL = Hardware Emulation Level ou un truc du genre - dc en fait si vous utilisez la CG pr dessiner, vous mettez HAL, sinon vous mettez HEL - Il y a aussi le REF dispo sous DX9 et pt etre DX8 qui n'est dispo que pour le Dev Runtime de DirectX, il permet de débugger et verifier l'application que lon programme, ainsi, on peut faire du PixelShader 2.0 sans forcément avoir une CG le comprenant, mais il faut savoir que le REF n'est pas utilisable par qqn qui n'a pas le Dev Runtime ne pourra pas l'utiliser)
cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008
5 nov. 2003 à 10:58
J'ai mon mode fenêtré avec
Réponse = MsgBox("Affichage en plein écran ? ", vbYesNoCancel, "Etude DirectX8")
If Réponse = vbYes Then
Set PDirect3Ddevice8 = Pdirect3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, PstructParameters)
Else
If Réponse = vbCancel Then End
End If

J'attends la suite avec impatience
cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008
5 nov. 2003 à 10:09
On progresse
J'ai modifié le code comme dit dans le Nota et le système est devenu stable. (Avant, destruction de l'environnement de programmation)

Option Explicit
Dim PDirectX As New DirectX8 'Déclaration et initialisation de l'Objet DirectX
Dim Pdirect3D As Direct3D8 'création de sous composants graphiques
Dim PDirect3Ddevice8 As Direct3DDevice8 ' Reproduire les graphismes à l'écran
Dim PstructParameters As D3DPRESENT_PARAMETERS
Dim Pdispmode As D3DDISPLAYMODE

Private Sub Form_Load()

Set Pdirect3D = ....
'
'
PstructParameters.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC

'Résolution actuelle de la machine (D3DADAPTER_DEFAULT est la carte graphique)
Pdirect3D.GetAdapterDisplayMode D3DADAPTER_DEFAULT, Pdispmode

PstructParameters.Windowed = False 'Indique que nous travaillerons en plein ecran. Si on avait mis True, on aurait un mode fenêtré
'Fonctionne pas ??

PstructParameters.BackBufferFormat = Pdispmode.Format
PstructParameters.BackBufferHeight = Pdispmode.Height
PstructParameters.BackBufferWidth = Pdispmode.Width
A bientôt
vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006
5 nov. 2003 à 00:47
Coucou,
bon alors pour complèter un peu tout ca, le D3DSWAPEFFECT_COPY_VSYNC est source d'erreur automation chez moi (flip passe impec), et le mode 32 bits pour le back buffer est source d'erreur si la CG ne le supporte pas, il faut donc lui préférer un mode 16 bits style R5G6B5 (format accepte même sur les CG d'entrée de gamme).
voilà j'espere que cela vous permettra d'avancer et je vous dis a bientot
cs_LaPatoshe Messages postés 53 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 décembre 2009
5 nov. 2003 à 00:30
Merci à tous qui avez apparement aimé ce tutorial. J'ai commencé la suite qui normalement devrait être diffusée sur ce site dans la semaine.
Pour Mauricet et éventuellement les autres qui n'arrivent pas à utiliser le mode fenêtré, sachez qu'en général, lorsque je programme en DirectX, je place tout mon code dans un module indépendant de la feuille form1 excepté pour les évènements permettant la sortie du programme. C'est ce module qui débute mon programme par la fonction Main et je l'indique à Visual Basic dans les options du Projet. Dans ce module, je commence par charger la feuille par Load Form1, et je la fait apparaitre Form1.show. Ensuite, j'y place tous le code qui pour ce tutorial est placé dans Form_Load. Si vous programmez DirectX de cette façon, vous verrez que le mode fenêtré windowed =True fonctionne. J'ai écrit ce premier tutorial dans la Procédure Form_Load de la feuille pour plus de confort car je ne désirait pas le zipper. Attention , si comme moi vous utilisez Visual Basic 5, sauvegardez le programme si vous utilisez un module, car le tout premier lancement plante à chaque fois (et je ne sais absoluement pas pourquoi. On dirait que Visual Basic n'accepte pas que l'on passe du module à la feuille ou je ne sais pas).
Pour ce qui est du prochain tutorial il sera basé sur les capacités des adaptateurs graphiques (Résolution, Accélération matérielle ...)

PS : Le rectificatif qui a été fait par Mauricet et je l'en remercie ne fonctionne pas sur mon visual Basic 5. Je présume que ce rectificatif s'adresse au x possesseurs de Visual Basic 6. Si des types d'erreur Automation apparaissent et que lors du débuggage la déclaration du Device est surlignée, cela veut souvent dire que la carte graphique ne supporte pas un des modes employé (souvent c'est le format des couleurs ou l'accélération matérielle HAL)

A Bientôt et encore merci pour vos messages
cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008
4 nov. 2003 à 20:06
Je continue
Je ne sais pas afficher la form en mode fenêtre
Si je mets "PstructParameters.Windowed = True"
Le tout plante
Help
cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008
4 nov. 2003 à 19:33
J'ai rectifié ce qui n'allait pas
Set PDirect3Ddevice8 = Pdirect3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, PstructParameters)
et j'obtiens un écran blanc en 640 x 480

J'attends la suite avec impatience
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
4 nov. 2003 à 18:14
Trés bien expliqué
Chapeau
cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008
4 nov. 2003 à 09:00
Une rectification
J'ai bien fait référence à DirectX 8
Avec "DirectX 8 for Visual Basic Type Library"
Soit "dx8vb.dll" et non d3vb8
Mais j'ai toujours "Erreur automation"
Merci
cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008
4 nov. 2003 à 08:52
Cela me semble très bon
Mais, j'essaye et j'ai tout de suite "Erreur automation"
Et comme je débute avec DirectX, je ne sais quoi faire
J'ai bien fait référence à DirectX (d3vb8)
Peux-tu m'aider ?
Merci
tooffy123 Messages postés 55 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 mars 2009
4 nov. 2003 à 00:57
Excellent ! Je voulais justement me mettre a directx, mais pourait-on disposer d'une source exemple ?
A+
tooffy123
cs_Antony Messages postés 83 Date d'inscription mardi 30 juillet 2002 Statut Membre Dernière intervention 13 février 2008
3 nov. 2003 à 19:35
Super bien commenté ! rien à redire !! on attend la suite avec impatience !!!! :)
cs_chouchou123 Messages postés 33 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 6 avril 2006
3 nov. 2003 à 18:51
C vraiment trop de la balle, Merci LaPotoshe !!!!
A quand la suite LOL
lapinblanc260780 Messages postés 1 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 3 novembre 2003
3 nov. 2003 à 10:59
Vraiment très bien commenté. C'est agréable pour ceux qui n'ont jamais touché au directx. Merci
vr3h Messages postés 164 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 9 octobre 2006
3 nov. 2003 à 07:57
C'est sympa, et bien commenté.
Rejoignez-nous