PROGRAMMATION DIRECTX 8 TUTORIAL 1 : INITIALISATION DE DIRECT3D 8
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDerniè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.
Bravo! Vous maitrisez bien votre sujet et savez bien l'expliquer!
dthuler
Messages postés121Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention29 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és53Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 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és64Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention22 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és12Date d'inscriptionmercredi 10 août 2005StatutMembreDernière intervention20 février 2007 16 déc. 2005 à 12:28
Merci pour ton aide, 10/10
bigbourin
Messages postés64Date d'inscriptionlundi 12 avril 2004StatutMembreDernière intervention18 août 2006 23 mai 2005 à 22:26
Parfait pour moi aussi qui debute , 10 / 10 , continue ...
Ze_Dam
Messages postés340Date d'inscriptionlundi 8 mars 2004StatutMembreDerniè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és340Date d'inscriptionlundi 8 mars 2004StatutMembreDerniè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és188Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention10 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és164Date d'inscriptionjeudi 6 mars 2003StatutMembreDerniè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és43Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention25 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és12Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention17 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és53Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 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és164Date d'inscriptionjeudi 6 mars 2003StatutMembreDerniè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és164Date d'inscriptionjeudi 6 mars 2003StatutMembreDerniè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és89Date d'inscriptionlundi 3 mars 2003StatutMembreDernière intervention28 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és89Date d'inscriptionlundi 3 mars 2003StatutMembreDernière intervention28 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 ??
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDerniè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és53Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 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és89Date d'inscriptionlundi 3 mars 2003StatutMembreDernière intervention28 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és89Date d'inscriptionlundi 3 mars 2003StatutMembreDernière intervention28 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és175Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 8 mai 2017 4 nov. 2003 à 18:14
Trés bien expliqué
Chapeau
cs_Mauricet
Messages postés89Date d'inscriptionlundi 3 mars 2003StatutMembreDernière intervention28 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és89Date d'inscriptionlundi 3 mars 2003StatutMembreDernière intervention28 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és55Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention16 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és83Date d'inscriptionmardi 30 juillet 2002StatutMembreDernière intervention13 février 2008 3 nov. 2003 à 19:35
Super bien commenté ! rien à redire !! on attend la suite avec impatience !!!! :)
cs_chouchou123
Messages postés33Date d'inscriptionmercredi 18 décembre 2002StatutMembreDerniè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és1Date d'inscriptionmercredi 19 mars 2003StatutMembreDerniè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és164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 3 nov. 2003 à 07:57
8 mars 2018 à 19:19
22 oct. 2006 à 08:18
6 janv. 2006 à 01:08
31 déc. 2005 à 05:35
16 déc. 2005 à 12:28
23 mai 2005 à 22:26
16 août 2004 à 10:10
16 août 2004 à 10:10
8 juil. 2004 à 15:55
19 févr. 2004 à 10:13
Voilà jespere que ca marchera sinon nhesite pas a demander ^^
a bientot
17 févr. 2004 à 20:48
17 févr. 2004 à 19:32
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 :-)
6 nov. 2003 à 21:12
5 nov. 2003 à 13:26
5 nov. 2003 à 13:21
5 nov. 2003 à 10:58
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
5 nov. 2003 à 10:09
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
5 nov. 2003 à 00:47
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
5 nov. 2003 à 00:30
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
4 nov. 2003 à 20:06
Je ne sais pas afficher la form en mode fenêtre
Si je mets "PstructParameters.Windowed = True"
Le tout plante
Help
4 nov. 2003 à 19:33
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
4 nov. 2003 à 18:14
Chapeau
4 nov. 2003 à 09:00
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
4 nov. 2003 à 08:52
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
4 nov. 2003 à 00:57
A+
tooffy123
3 nov. 2003 à 19:35
3 nov. 2003 à 18:51
A quand la suite LOL
3 nov. 2003 à 10:59
3 nov. 2003 à 07:57