IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

Quel style de DirectX pour un jeu 2D ?


Sujet :

DirectX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juin 2002
    Messages : 256
    Points : 121
    Points
    121
    Par défaut Quel style de DirectX pour un jeu 2D ?
    salut !!

    je commence la programmation graphique en attaquant la programmation d'un jeu dérivé du celebre Blobby volley. A bien y reflechir, il n'est pas trop avancé => je peux donc re-re-re-re-recommencer
    Ce jeu, je le code en DirectDraw (DX9).
    Je me pose cependant une question : Vaut-il mieux utiliser DirectDraw ou encore DirectGraphics ?

    Quels sont les points communs ? les differences ? Lequel donnera la meilleure fluiditée ?

    merci. cordialement.


    ps : l'isométrique, est ce de la 2D ou de la 3D ?

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Salut !
    Premièrement, DirectDraw (et D3D) ont disparu depuis la version 8 de Dx, ils ont laissé place à DirectGraphics. Donc pour utiliser DirectDraw, il faudra utiliser DirectX 7.
    Il vaut mieux utiliser DirectGraphics evidemment, mais ça introduit une (tres legere) partie "3D" à gérer, ce qui pourrait rebuter certains. Mais bon c'est pas super compliqué et il existe plein de bons tutos pour créer un moteur 2D avec DGraphics. Les performances sont evidemment superieures à DirectDraw
    Les points communs, il n'y en a pas, en fait DGraphics c'est D3D auquel on a ajouté des fonctionnalités pour faciliter la gestion de la 2D (la classe D3DXSprite par exemple). Les différences y en a donc beaucoup par rapport a DirectDraw, c'est pu du tout la même maniere de gerer les surfaces (a la place tu utilises des carrés texturés), etc...
    Les avantages c'est que tu auras acces a + de fonctionnalités, du genre alpha-blending ou rotation de surfaces (ce qui manquait beaucoup a DirectDraw).
    Voilou, j'espere que j'ai repondu a toutes tes questions

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juin 2002
    Messages : 256
    Points : 121
    Points
    121
    Par défaut
    exactement ce que j'attendais. merci

    sinon, le probleme sur le tuto que je lis, c'est qu'on me balance des bouts de codes en me disant qu'il faut tjr mettre ca,etc... sans vraiment d'explications... moi j'aime pas

    la partie a "probleme" ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    void Init_D3D(bool FullScreen, int Width, int Height)
    {
        //création du device D3D
        if (Objet_D3D==NULL)	Objet_D3D = Direct3DCreate8(D3D_SDK_VERSION);
     
        //initialisation de l'objet D3DPRESENT_PARAMETERS
        ZeroMemory(&d3dpp,sizeof(d3dpp));
     
        //selon le mode désiré, on lance la fonction adéquate
        if (FullScreen)    Init_FullScreen(Width, Height);
        else    Init_Windowed(Width, Height);
     
        //paramètres d'affichage pour l'utilisation de la clé de couleur et de la transparence
        D3D_Device->SetRenderState(D3DRS_ALPHATESTENABLE, true);
        D3D_Device->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_NOTEQUAL);
        D3D_Device->SetRenderState(D3DRS_ALPHAREF, 0x00);
        D3D_Device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
        D3D_Device->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
        D3D_Device->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
        D3D_Device->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_MODULATE);
        D3D_Device->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
        D3D_Device->SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE);
        //filtrage bilinéaire pour un effet d'antialiasing lors des distorsions des sprites
        D3D_Device->SetTextureStageState(0,D3DTSS_MAGFILTER,D3DTEXF_LINEAR);
        D3D_Device->SetTextureStageState(0,D3DTSS_MINFILTER,D3DTEXF_LINEAR);
        //désactivation de la lumière (sinon les sprites seront noirs)
        D3D_Device->SetRenderState(D3DRS_LIGHTING, FALSE);
     
        //on obtient un pointeur sur la surface du BackBuffer
        D3D_Device->GetBackBuffer(0,D3DBACKBUFFER_TYPE_MONO,&lpBackBuffer_Surface);
    pourrais-je avoirs quelques expliquations sur le pourquoi du comment ?
    merci

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tout ça est très bien expliqué dans l'aide du SDK
    Bon si vraiment t'as des problemes avec l'anglais, ou si tu ne peux pas avoir la doc du SDK je pourrais t'expliquer vite fait

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juin 2002
    Messages : 256
    Points : 121
    Points
    121
    Par défaut
    dsl, j'avais completement zappé l'aide du sdk
    merci.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    J'aimerais bien savoir en quoi DirectGraphics est plus rapide que DirectDraw...

    DirectGraphics c'est juste faire de la 2d avec un moteur 3d tout cva pour utiliser des fonctions qui existent déja en 2d... L'alpha blending est une fonction 2d que la carte video sait très bien réaliser toute seule. En revanche DirectGraphics texture les surfaces 2d, ce qui demande un trraitement suplémentaire a chaque image.

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Bon je suis pas un pro de Dx, donc je pourrai pas te sortir les arguments techniques, mais en tout cas 2 choses sont sures :
    1) Un même prog 2D passé de DDraw vers DGraphics est + rapide (si c'est bien codé evidemment)
    2) Si DDraw a disparu depuis Dx8 à mon avis c'est pas pour rien

    L'alpha blending c'est ptet une fonction 2D que la carte graphique sait faire, mais DDraw lui en tout cas ne savait pas le faire
    Et en ce qui concerne l'utilisation de textures au lieu de surfaces, je suis pas sur que ce soit + lent pour une appli 2D.

  8. #8
    mat.M
    Invité(e)
    Par défaut
    1) Un même prog 2D passé de DDraw vers DGraphics est + rapide (si c'est bien codé evidemment)
    Parce que le site de games creators
    ,prografix.creator l'affirme ( ainsi que le créateur du tutoriel )
    Mais toi de ton côté as-tu réellement expérimenté des performances accrues ???
    D'un côté avec Direct Draw on peut faire de la 2D totale et il n'ya pas cette légére couche 3d que Microsoft a rajouté dans Direct Graphics.
    Qui dit 3D même couche légére dit calculs accrus du processeur ...pour rien because jeu 2D donc ralentissement théorique

    Mais d'un autre côté , l'inconvénient de Direct Draw et DX7 c'est que cela ne risque d'être plus supporté par les cartes graphiques à venir et nouvelles versions de DX
    Dernière modification par Deepin ; 13/09/2011 à 12h35.

  9. #9
    mat.M
    Invité(e)
    Par défaut
    ps : l'isométrique, est ce de la 2D ou de la 3D ?
    delire8 , un jeu en vue isométrique c'est un jeu comme Sim City , Starcraft avec des "tuiles" dessinées de telles manières qu'elles donnent l'impression de 3d ( ou rendues avec logiciel d'images de synthèse comme 3DS Max )
    Mais le jeu est en 2D car bitmaps affichées.
    Sinon on peut combiner les 2

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Si DDraw a disparu depuis Dx8 à mon avis c'est pas pour rien
    Effectivement ce serait étonnant que ce soit pour rien. Mais c'est certainement pas pour son manque de rapidité. Je te met au defit de me prouver que ce que fesait Microsoft à toujours été d'interet commun. Interessant pour eux, ca je veux bien... La 2d et de moin en moin présente. Mais pas mal de gens l'utilisent encore. Notement pour la video. DirectDraw propose les overlays surfaces qui servent pas mal pour la video. La 2d n'a pas disparu, seulement microsoft a jugé bon de la masquer...

    Il n'y a aucune raison pour que DirectGraphics soit plus rapide. Dans mon cas DirectGraphics est incomensurablement plus lent... c'est pour ca que je suis un peu de mauvaise foie, et c'est vrai qu'a part pour moi c'est a peu près pareil pour les autres. Je programme un émulateur, et si j'utilisait DirectGraphics je devrait mettre en texture des images en 1600 * 1200, 30 fois par secondes, ce qui occuperait considerablement le processuer ce que je ne peux me permettre lors d'une émulation bien entendu...

    DirectDraw ne risque pas de n'etre plus supporté, enfin du moins pas pour tout de suite. Il ne gère quasiment rien... Et le peux font appel a des fonctions hardware dont on peut difficilement se passer. A part le blitting, flipping, gestion de la palette, DirectDraw doit gerer les overlays et c'est tout... Le clipping c'est un fonctionement interne je crois...

  11. #11
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    C'est clair que j'ai jamais essayé de faire une comparaison DDraw/DGraphics, et je ne me base que sur ce que je peux lire sur le net, donc je vais en rester là pour ce qui est de la discution "lequel est le meilleur".
    Par contre pour ton problème d'émulateur, de toute façon ton problème est simple (tu me dis si je me trompe qq part) : dans tous les cas tu dois ecrire tes 1600x1200 pixels (en mémoire systeme tant qu'a faire ), puis envoyer ta surface a ta carte graphique pour l'afficher. C'est bien ça ?
    Pour ce qui est de l'ecriture des pixels, surface DDraw ou Texture D3D ça reste pareil, et dans les 2 cas tu auras qq Mo a te trimballer par l'AGP a chaque frame. Ensuite je pense que le traitement par la carte 3D est insignifiant en terme de performance, par rapport au reste. Afficher 2 triangles texturés ne ralentira pas ton appli, surtout si le CPU a un max de boulot en parallele. Ta carte graphique a mon avis elle se tournera un peu les pouces apres avoir affiché la frame.
    Evidemment je peux me tromper, mais a priori voila ce que j'en pense

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Encore une fois, ca n'est pas l'affichage, mais la mise en texture qui pose problème. Parcec que en 2D on peut afficher une surface de 834 * 756, alors que pour certaines cartes les textures doivent avoir une taille qui est une puissance dee deux si je ne me trrompe pas. Quand on fait de la 3d, on crer une texture, et puis on la garde jusqu'a la fin. En 2d on peut arriver a se debrouiller dans quelques cas particuliers pour que le même mecanisme est lieu, mais pas toujours. En particulier dans mon cas, c'est impossible.

    (En ce qui concerne mon cas, l'AGP n'a que ca a faire, donc c'est cencé largement tenir, même si c'est une carte PCI. Actuellement j'utilise les overlay surfaces si disponibles, parce que c'est très rapide. L'inconvenient est que la surface doti etre en mémoire video.)

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Pour ce qui est de la taille des textures, tu peux toujours te debrouiller en modifiant les coordonnées de texture (bon y aura une partie de la texture qui servira a rien mais tant pis...).
    Et pourquoi dans ton cas c'est impossible au fait ?

    PS : les overlay surfaces ça marche comment ?

  14. #14
    Membre régulier
    Profil pro
    Ingénieur R&D
    Inscrit en
    Juillet 2002
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 81
    Points : 74
    Points
    74
    Par défaut
    J'avais fait un moteur de RPG en 2D, sous DirectDraw 7, qui marchait sur tous les PCs sur lesquels il avait été testé. Quand je l'ai modifié pour qu'il utilise DirectX Graphics, il ne marchait plus sur tous.

    J'ai aussi remarqué que l'interface D3DXSprite était plus lente que les surfaces DirectDraw (pour afficher une carte composée de surfaces de 32x32), donc j'ai essayé avec des vertices, et là, c'était plus rapide.

    Premièrement, DirectDraw (et D3D) ont disparu depuis la version 8 de Dx, ils ont laissé place à DirectGraphics. Donc pour utiliser DirectDraw, il faudra utiliser DirectX 7.
    Plus exactement, DirectDraw est toujours présent sous DirectX 9, car pour chaque version de DirectX, on peut accéder aux différentes interfaces des versions précédentes (comment feraient les anciens jeux pour fonctionner sous DirectX 9 sinon ?). Quant à DirectX Graphics, il s'agirait plutôt de D3D9, en fait.

    Il semblerait que Microsoft veuille insiter les programmeurs à ne plus utiliser DirectDraw. Pour cela, ils ont complété Direct3D par des fonctions permettant de gérer facilement un affichage en 2D.

  15. #15
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Wi c'est un peu ce que j'avais dit
    =>
    Citation Envoyé par Loulou24
    en fait DGraphics c'est D3D auquel on a ajouté des fonctionnalités pour faciliter la gestion de la 2D
    Pour ce qui est de DDraw, evidemment il est géré par les versions supérieures de Dx, mais je crois qu'il n'est plus dans le SDK (l'interface IDirectDraw est toujours là, mais je crois que son utilisation est maintenant différente (rapport avec DShow si je me trompe pas (ce qui ne m'etonnerait qu'a moitié ))).

    Quand je l'ai modifié pour qu'il utilise DirectX Graphics, il ne marchait plus sur tous
    C'est que tu utilisais des fonctionnalités trop "récentes" . Mais tu peux toujours (en utilisant les bonnes fonctionnalités) faire en sorte que ça soit compatible avec toutes les cartes graphiques, ce genre de problème reste a la charge du programmeur.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    ca semble etre une explication qui tient.

    Loulou pour la mise en texture, il y a des librairies qui gerent ca. C'est loin d'etre simpel vu que la mise en texture dépend de la carte graphique. Si les texutres doivent avoir une taille qui est une puissancee de 2 ca m'oblige a utiliser des textures de 2048 * 2048... Ca n'est pas très courant non... Je ne connais pas du tout les cartes graphioques mais on a du me dire qu'il y avait une limite de taille pour les textures (ce qui complexifierait encore la mise en texture)

    Quand je parle de gerer un moteur 2d comme un moteur 3d, c'est a dire, plutot que de faire comme si on avait un grand cube, plutot faire comme si on avait plein de petits cube, puique si par exemple on a une texture qui represente de l'herbe et qu'on doti la mettre en mosaique, on utilise une texture herbe et on met autant de cubes qu'il doit y avoir de carrés d'herbe. Si on ne fait pas comme ca, ca veut dire que l'on redessine la texture a chaque fois. Dans mon cas, j'ai pas le choix, je suis obligé de redessiner la surface a chaque fois... mais cette surface epeut atteidre les 1600 * 1200. Quels effets secondaires (n'ayant pas lieu dans un moteur 3d ou les plus grosses textures font 512*512) DirectGraphics entrainerait ?

    Les overlays surfaces sont des surfaces qui sont affichées par dessus la surface primaire, mais sans besoin de faire un blitting. Quand la carte video "scanne" la surface primaire, il regarde d'abord si il n'y a pas une overlay surface qui est a cet emplacement. Si tu as Divx Player (je crosi que Windows Media player utilises ca aussi) tu peux remarquer en faisant une capture d'ecran que la video n'aparait pas sur la capture. Simplement parce que la video n'est pas sur la surfacec primaire, mais sur l'overlay surface. Suivant la carte graphique, elles ont plus ou moins de spécificité. Elle permette l'effet de stretching, et sur ma carte graphique ca m'a tout l'air du bilinear filtering. Il y a quelques interets pour la video que je n'ai pas saisis (mon niveau d'anglais doit etre la cause de ce problème). Un des principaux interets et certaienemnt qu'il n'y a pas a copier la surface, donc aucune consomation du processeur, et ca n'occupe pas non plus le dma. Autre interet, ca laisse la surface primaire intacte, donc pas besoin ded redessinner en dessous si on déplace la surface.

  17. #17
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Thanks pour l'explication

    En effet pour les textures de 2048x2048, ça risque de ne pas passer sur toutes les cartes graphiques. Au pire tu peux toujours contourner le problème en ayant plusieurs textures + petites. Mais j'admet que ce genre de bricolage c'est pas top...
    Quels effets secondaires (n'ayant pas lieu dans un moteur 3d ou les plus grosses textures font 512*512) DirectGraphics entrainerait ?
    Tu veux parler de quoi exactement ? A priori la taille de la surface n'a pas de répercussion (à part sur les perfs)

    C'est loin d'etre simpel vu que la mise en texture dépend de la carte graphique
    Là non plus je vois pas trop où la carte graphique intervient pour la mise en texture (enfin ça depend de ce que tu appelles "mise en texture").

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Tu t'es répondu en partie :) Puisque les cartes graphiques n'ont pas les même restrictions sur la taille des textures, la "mise en texture" (pour moi ca veut dire, passer d'une surface 2d à a une serie de texture) va bien dépendre de la carte graphique.

    Les effets secondaires dont je parle sont justement les pertes de performences qu'on ne peut pas forcement voir si on utilise des textures de taille plus courante. (des effets produits par Direct3d s'il en existe car Direct3d n'est peut etre pas optimisé pour des texture d'une telle taille)

  19. #19
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Okok... Ben pour la mise en textures je crois que ce que tu veux c'est justement que ça ne dépende pas de la carte graphique, donc t'as pas le choix, 256x256 8) (en tout cas si tu fais + ça tournera pas sur ma Voodoo 3 )

    Sinon pour les "grosses" textures, a priori (mais evidemment j'en suis pas sûr) ça n'a d'impact que sur une chose : le transfert de la texture par l'AGP (là t'es limité par la bande passante) (et il faut faut faire gaffe aussi à avoir + de 4 Mo de mémoire video pour stocker par exemple une surface 1024x1024x32). Pour le reste je pense que D3D se comporte de la même façon quelle que soit la taille de la texture.

  20. #20
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    J'ai testé la différence entre directdraw et directgraphics, et je peux vous dire que le performances n'ont rien de comparable....
    Mon appli fait du playback/rendering realtime en 1920x1200 avec des images 2D.
    Sous directdraw, j'avais peine à atteindre 25 i/s sans rien faire d'autre, mais avec directgraphics, je suis à 300 fps en 1920x1200 32 bits... et une image de 15000x11000 pixels en DXT1 !!!
    (sur une radeon 9700 evidement...)

    Ce qui veut dire que utiliser directdraw bloque la vitesse de rendering, même sur des cartes modernes.

    Si tout le rendering est fait avec le cpu en mémoire système :

    Le fait d'écrire dans la mémoire video comme le fait directdraw tue complètement les performances. (ce n'est pas le rendering cpu qui est lent)

    Avec directgraphics, il est possible de renderer dans une texture en systeme mem, puis faire un update() dans une texture video et renderer via une surface texturée.
    Et hop, le transfer AGP devient tout à coup très utile...
    (rappel : AGP8x=2Gb/sec... / accès video via cpu = PCI = 160Mb/sec)

    En plus les fonctions de rendering sont 1000x plus avancées. Pixels shaders et le multipass sont choses courantes. Avec plus de 1500 fps en 1024x768, on peut en faire des choses- motion blur, defocus, glow... avec resize, rotation et morphing pour quelques petites milisecondes de plus.
    Il y a pleins d'examples chez moft, nvidia et les autres.
    Et bien souvent, les effets sont en réalité des effets 2D en multipass...
    Et si la carte video ne supporte pas tous les pixels shaders, simplement pas accès au 'extra rendering features', mais en tout cas, le frame rate sera toujours supérieur.

    Chris.

Discussions similaires

  1. Quel(s) langage(s) pour un jeu multijoueurs ?
    Par x0s__ dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 06/08/2014, 18h23
  2. Quel composant utiliser pour un jeu de cartes?
    Par Soilwork dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 11/03/2008, 23h03
  3. Quels revenus pour un jeu vidéo?
    Par gamerome dans le forum Projets
    Réponses: 26
    Dernier message: 24/01/2008, 17h16
  4. Quel moteur pour un jeu de combat spatial?
    Par DindonSauvage dans le forum Moteurs 3D
    Réponses: 6
    Dernier message: 31/10/2007, 10h04
  5. Réponses: 7
    Dernier message: 12/10/2006, 01h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo