2D HARDWARE AVEC DIRECTX 9

gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007 - 1 janv. 2005 à 17:14
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 - 22 juil. 2006 à 14:23
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/28545-2d-hardware-avec-directx-9

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
22 juil. 2006 à 14:23
Hop une autre MAJ.
Le code n'est plus réduit au minimum mais vous pouvez facilement utiliser les classes dans vos projets.
N'hésitez pas à proposer des améliorations !
DevMod Messages postés 3 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 22 juillet 2006
22 juil. 2006 à 10:26
Bon ça va j'ai à peu près la même chose.
Pour les matrices, le plus simple est d'utiliser D3DXMATRIX2dTransformation (un truc de ce genre, ce ne sera pas dur à trouver dans la doc) qui permet de modifier à la main les paramètres de la matrice.
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
21 juil. 2006 à 21:31
La source est assez pourrie actuellement.
Je vais la refaire pour demain.
Création d'un classe CEngine2D avec gestion de ressources comme Sprites et Texture.
DevMod Messages postés 3 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 22 juillet 2006
21 juil. 2006 à 09:27
Ah merci :p

Je viens juste de réussir à utiliser les sprites, je vais regarder ta source de très près histoire de voir les idioties que j'ai pu faire en codant ^^
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
21 juil. 2006 à 00:31
Voila, voila, la source peut être compilée avec DX9 version avril 2006.
Merci j'avais completement oublié ;) !

Vu la complexité de la nouvelle fonction Draw (moins de paramètres certes mais utilisation ultra chiante de matrice), j'ai fait une fonction qui prend de paramètres intuitifs.

Have fun !

Vb6Malade> essaye d'inclure math.h qui contient la définition de la fonction sqrtf
DevMod Messages postés 3 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 22 juillet 2006
20 juil. 2006 à 13:33
C'est frustrant, je débute en DirectX, cette source semble contenir tout ce qu'il faut pour m'apprendre à utiliser DirectX avec les sprites, mais je n'arrive pas à effectuer les modifications pour la faire fonctionner avec le SDK d'avril 2006...

Serait-il possible de le mettre à jour ?
Amanobuo Messages postés 65 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 11 décembre 2006
10 mai 2006 à 18:44
J'ai la solution pour la fonction draw,
comme le disait Galmiza, il y a eu une update, dans directx8 la fonction draw prendait 7 parametres et depuis directx9 elle n'en prend que 5, il y a l'echelle et l'angle en moins, d'ailleurs j'attire votre attention sur la remarque de la doc du SDK April2006 update :
Remarks
To scale, rotate, or translate a sprite, call SetTransform with a matrix that contains the scale, rotate, and translate (SRT) values, before calling ID3DXSprite::Draw. For information about setting SRT values in a matrix, see Matrix Transforms.
C'est me jour de bonté alors je vais traduire :
Remarque
Pour l'echelle, la rotation ou la translation d'un sprit, appeller SetTransform avec une matrice qui contient les valeurs de l'echelle, de la rotation et de la translation (SRT) avant d'appeller ID3DXSprite::Draw. Pour des information a propos de l'initialisation des veleurs d'un SRT dans une matrice, voir Matrix Transforms

Mais j'utilise directx9 me diriez vous ! pourtant je met 7 parametres ! Mais tout depend de la librairie que vous importez dans votre projet, si vous incluez #include <d3dx8.h> ou <D3dx8 core.h> vous avez "l'ancienne" fonction avec 7 paremetres mais si vous incluez <d3d9.h> ou <D3dx9core.h> vous avez la fonction avec 5 parametres.
Pour etre vraiment fixé tout de suite, faite clic droit sur draw et Attendre la définition, et voyez quel fichier il va chercher la definition !
greg le grand Messages postés 9 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 20 décembre 2005
13 juil. 2005 à 12:54
AVIS a tous les utilisateurs de PC pas très puissant ne lancer pas le .exe ,je viens de le faire et ca bloque TOUT ca s'arrange rapidement mais évitait de le faire !
Vb6Malade Messages postés 43 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 1 septembre 2008
23 janv. 2005 à 15:57
salut moi j'ai une erreur a :
return sqrtf(pV->x * pV->x + pV->y * pV->y);
j'ai Borland cpp 6 builder
avec le sdk de summer 2004(enfin je pense l'avoir)
ca me met:
[C++ Erreur] d3dx9math.inl(1578): E2268 Appel à une fonction non définie 'sqrtf'
Stp aide moi et ps si quelq'un a le sdk en francais ca m'interresse VOILA...
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
1 janv. 2005 à 19:47
Salut ba moi j'comprend pas, j'ai installé la dernière version qui summer 2004, sur une des pages que t'a montré c'était summer 2003 ... plus qu'a attendre les pros alors :D
@++
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
1 janv. 2005 à 18:55
Merci pour vos commentaires !

Xs > Je vois ce que tu veux dire par "optimisée".
En fait l'unique avantage de cette source est de montrer le fonctionnement de la fonction Draw.
J'ai dit optimisé car la carte vidéo fait quasiment tout le travail.
Mais ok, je vais optimiser le code... :D (tant qu'à faire)

Sinon, je n'ai pas de probleme avec le Alt-Tab. J'avais des problèmes avec le device à cause de Alt-Tab quand j'utilisais DirectInput.
cs_Xs Messages postés 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008
1 janv. 2005 à 18:45
Avec un code aussi simple, tu pourrais au moins montrer comment récupérer un device aprés alt-tab.

"2D OPTIMISÉE AVEC DIRECTX"
Mouais quand j'ai lu la source ça m'a fait un choc quand même. C'est sûr, elle est fonctionelle et propre, mais alors niveau optimisations, y'a du boulot. En effet, dans ta fonction render, tu déclare plein de variables à chaque frame, tu fais plusieurs appels à des fonctions telles que timeGetTime (c'est mieux d'avoir un temps unique dans une frame...)...

Enfin, je serais toi j'enléverais le "OPTIMISEE" du titre.
Sinon, le reste est correct.

cordialement
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
1 janv. 2005 à 18:20
Désolé, je ne connais pas cette lib.

Dans MSDN il y a:

http://msdn.microsoft.com/library/default.asp?url=/archive/en-us/directx9_c_summer_03/directx/graphics/reference/d3dx/interfaces/id3dxsprite/draw.asp

et

http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c/directx/graphics/reference/d3dx/interfaces/id3dxsprite/draw.asp

Donc nos 2 versions de DX sont différentes.

Mais je ne sais pas si il est possible de resoudre le probleme... il faut attendre les pros :D
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
1 janv. 2005 à 18:04
Ha et au faite c'est quoi cette lib ?
libci.lib
Pour plusieurs sources que j'ai essayer de complier et ba le compilo la trouve pas @++++
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
1 janv. 2005 à 18:01
Ba chai pas car pourtant j'ai dl le sdk de directx la version summer 2004
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
1 janv. 2005 à 17:58
C'est assez bizarre en effect.

Selectionne "Draw" clique droit dessus puis sur "Go to definition Of Draw". Il y a plusieurs classes qui utilisent une fonction nommée "Draw", mais ça m'étonnerait que le compilateur se plante de fonction (apparement nan d'après le rapport de bug...).

As-tu les bons fichiers headers à inclure ? Il y a peut-être des versions différentes...

Au pire, essaye de mettre un nombre différent de paramètres pour voir ce qu'il accepte comme nombre.
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
1 janv. 2005 à 17:14
Salut elle est coul ta source ;)
Mais heu j'ai un pb à la compilation :

------ Début de la génération : Projet : Sprite, Configuration : Debug Win32 ------

Compilation...
main.cpp
c:\documents and settings\propriétaire\bureau\cppfrance_source_28545\sprite\main.cpp(198) : error C2660: 'ID3DXSprite::Draw' : la fonction ne prend pas 7 arguments

Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Propriétaire\Bureau\cppfrance_source_28545\Sprite\Debug\BuildLog.htm"
Sprite - 1 erreur(s), 0 avertissement(s)

@+++++
Rejoignez-nous