PROGRAMMATION DIRECTX 8 TUTORIAL 3 VERSION B : GEOMETRIE 3D TEXTUREE

cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008 - 15 nov. 2003 à 19:11
cs_LaPatoshe Messages postés 53 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 décembre 2009 - 16 juin 2004 à 11:40
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/17947-programmation-directx-8-tutorial-3-version-b-geometrie-3d-texturee

cs_LaPatoshe Messages postés 53 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 décembre 2009
16 juin 2004 à 11:40
Salut, une erreur automation peut provenir de plusieurs choses (fichier introuvable, texture non supportée, résolution écran non supportée, ...)
Relève le numéro de l'erreur Automation, et entre la dans l'identificateur d'erreur (outil situé dansq son SDK de DirectX), tu saura à ce moment d'où vient le problème.
Si l'erreur énoncée ne te dis rien, commence à débugger ton prog en lançant uniquement l'étape initialisation à l'étape de rendu et en enlevant toutes les méthodes de dessin située entre Begin Scene et End Scene dans le module rendu, ainsi, on saura si le problème vient de l'initialisation de ton device ou de la géométrie.
A plus
Oeil_de_taupe Messages postés 150 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 février 2009
15 juin 2004 à 19:44
moi j'ai le bug "d'automatisation".

Mais pourtant j'ai la dernière carte graphique sur le marché!!!

Je comprends pas!!!
cs_LaPatoshe Messages postés 53 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 décembre 2009
4 mars 2004 à 00:12
Salut
Eh bien, je crois que le problème que tu a soulevé remet en question l'usage de DirectX8 avec les anciennes bécanes du moins au niveau de la programmation avec Visual Basic. J'ai essayé mes tutoriaux avec un ordinateur portable P166 MMX muni d'une carte graphique à mémoire partagée, et ça plante également. Le fait d'enlever les textures m'a permis de voir une seule fois le cube de ce tutorial, mais les autres lancements ont planté. On dirait qu'avec les anciens ordinateurs, l'usage de DirectX ressemble plus à de la chimie qu'à de la logique. Come toi, Le programme de capacités du SDK m'indique que mon ordinateur peux faire plein de truc avec directX8, mais ça plante.
J'avais essayé auparavant mes tutoriaux sur un portable Toshiba P166 muni d'un chipset graphique et ça passait. Peut être cela vient il aussi de certaines cartes graphiques qui ne seraient pas compatibles avec directX8. Je ne sais pas si il n'y avait pas eu des problèmes avec les VOODOO à une époque, mais je ne sais plus exactement à quel niveau.
SI QUELQU'UN A OU A EU CE GENRE DE PROBLEME, MERCI DE NOUS INDIQUER QUELLES SONT LES EVENTUELLES SOLUTION DE DEBUGAGE
cs_rachid777 Messages postés 12 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 17 mars 2004
3 mars 2004 à 16:15
salut,
j'ai essayé uniquement avec les textures du zip (toutes) sinon, il y a aussi la fonction checktexturerequirements, est-ce que par hasard tu saurais l'utiliser?
a+
cs_LaPatoshe Messages postés 53 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 décembre 2009
2 mars 2004 à 20:32
Resalut.

Content de voir qu'il y a un peu de nouveau. J'utilise un vieux logiciel de dessin qui est photomagic 5 (un des outils de Draw 5) de Microsoft.
Cependant, je ne pense pas que le problème vienne du logiciel de dessin utilisé. Les textures que j'ai utilisé pour mes tutoriaux ont été fabriquées en chargeant dans mon logiciel de dessin une texture d'Architect3D. Puis, j'ai modifié l'image de la texture pour y mettre l'image de mon choix. Puis, j'ai sauvegardé. En faisant comme cela, la texture fonctionne sous DirectX. Si je créé une image directement à partir d'une page blanche que ce soit en 128*128, 256*256..., ça plante, et je ne sais absoluement pas pourquoi. Peut être cela vient il du canal Alpha, je ne sais pas.
Bon courage à toi

Ps : Essaies les textures que j'ai mis dans le ZIP et indique moi si ça marche avec celles là.
cs_rachid777 Messages postés 12 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 17 mars 2004
2 mars 2004 à 18:57
salut,
j'ai essayé de lancer le programme sans la texture et ça marche, le problème ne vient donc pas du paramétrage du device, j'ai ensuite essayé en utilisant la fonction createtexturefromfileex, en changeant en 64*64, 128*128, et 256*256, ça ne marche toujours pas. Mon bmp est bien sauvegardé en 16 bits, j'ai essayé aussi de le faire en noir et blanc (2 couleurs, 4 couleurs, etc...). Quel logiciel 3D tu utilises pour créer des textures? j'ai Adobe Dimension 3, mais je ne sais pas encore l'utiliser, je ne sais pas si c'est ce genre de logiciel dont tu parles. Sinon ma machine est un pentium 3, 450 mhz avec une carte graphique de 8Mo, 64 Mo de RAM.
En tout cas merci d'avoir répondu.
cs_LaPatoshe Messages postés 53 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 19 décembre 2009
20 févr. 2004 à 14:17
Salut aux dernierzs venus

En fait, ce qu'il faut savoir en DirectX8, c'est que le mode REF ou HAL est uniquement la base de la compatibilité du programme avec la machine. Ensuite viennent les autres options ( HARDWARE, MIXED ou SOFTWARE VERTEX PROCESSING,), (Mode fenêtré ou non), Format du BackBuffer, utilisation du DephBuffer et format de ce dernier. Une erreur automation ne vient pas forcément du choix trop optimiste d'un élément mais plutôt de la mésentente entre plusieurs de ces choix. Par exemple sur ma machine le mode R5G6B5 marche pour les premiers tutoriaux, mais plante lorsque j'essaie de faire des effets graphique tel que le multitexturing ou d'autres effets spéciaux. Dans ce cas , je sui sobligé d'utiliser un mode graphique plus fort (X8R8GB8)
La bonne stabilité du programme vient de l'équilibre donné aux composantS. Pour la portabilité du programme ensuite, soit on écrit des routines prévoyant les différents cas ce qui est relativement long, soit on obéi à la règle de base : Si on a une carte non accélératrice on utilise le mode REF) sinon, le mode HAL. En général, on trouve son bonheur de cette façon. Après, c'est un peu du bidouillage
cs_rachid777 Messages postés 12 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 17 mars 2004
20 févr. 2004 à 12:33
Bonjour, pour info toujours, une erreur d'automation est générée au niveau de la création du device dans le module Initialisation quelques soient les types de device et de vertex que j'utilise si je paramètre le backbufferformat avec D3DFMT_R8G8B8 (c'est-à-dire pour 24 bits) par contre si on le mets à 16 bits, ça marche uniquement pour un device de type REF. Ma configuration est un P3 450, avec une carte graphique sans accélération graphique de 8 Mo, (un peu lent tout ça mais faut vivre avec les moyens du bord). Donc si j'ai bien compris, les erreurs d'automation proviennent du fait que la machine ne supporte pas le programme?
Apparemment avec les autres programmes du tutorial qui plantent aussi sur ma machine au moment de la création du device quand j'utilise une device de type HAL ou au moment de la présentation du device (Pdirect3Ddevice.Present 0,....), en réduisant le backbufferformat à 16 bits, le device marche en REF (quelquesoit le type de vertex utilisé) et dans certain cas en HAL quand le programme n'est pas trop lourd.
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
18 nov. 2003 à 02:44
On appelle ca du correctif ! :-D
cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008
16 nov. 2003 à 18:42
Bonjour Patrice

Il faut toujours utiliser "Option Explicit"

Option Explicit

Public Sub Pinitialisation()
Dim Ppath As String
Form1.Load 'Ceci ne peut exister et "Option Explicit" le signale
Form1.Show 'Parasite qui montre une petite fenêtre inutile
Ppath = App.Path & ""

A bientôt
Maurice
cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008
16 nov. 2003 à 15:17
Bonjour Patrice
Une modification de Initialisation pour utiliser le matériel au maximum

.EnableAutoDepthStencil = 1 'rend valide le ZBUFFER
If Pdirect3d.CheckDeviceFormat(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Pdispmode.Format, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D32) = D3D_OK Then
'On essaye avec un Z-Buffer en pur 32 bits
.AutoDepthStencilFormat = D3DFMT_D32 'pure 32 bit Z-Buffer
Else
'Si pas disponible, on teste les autres modes
'Pour voir la qualité du Z-Buffer supportée
If Pdirect3d.CheckDeviceFormat(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Pdispmode.Format, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D16) = D3D_OK Then
.AutoDepthStencilFormat = D3DFMT_D16
Reste à tester les autres
A bientôt
Maurice
cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008
15 nov. 2003 à 19:11
Bonjour Patrice
Une modification qui accélère le logiciel tant au chargement qu'au déchargement.
Dans Initialisation
On Error Resume Next

Set Pdirect3d = PdirectX.Direct3DCreate() 'Création de notre objet Direct3D8

Pdirect3d.GetAdapterDisplayMode D3DADAPTER_DEFAULT, Pdispmode

With Pstructparameters 'Paramètres de la fenêtre
.BackBufferCount = 1
.BackBufferFormat = Pdispmode.Format 'format de l'arrière plan
.......
A essayer
A bientôt
Maurice
Rejoignez-nous