Pour 2d opengl/glut > ddraw ?

Signaler
Messages postés
78
Date d'inscription
samedi 18 septembre 2004
Statut
Membre
Dernière intervention
5 janvier 2007
-
Messages postés
78
Date d'inscription
samedi 18 septembre 2004
Statut
Membre
Dernière intervention
5 janvier 2007
-
Bonjour à tous, j'ai tester les 2, à savoir direct draw et opengl/glut, mais j'aimerai savoir si il y en as un qui est plus performant que l'autre et lequel est le plus puissant pour de la 2d... par exemple je sais que un jeu comme starcraft à été fait avec direct draw mais aujourd'hui est-il aussi facile de faire un jeu comme ça avec opengl/glut ?
Bien évidemment je ne compte pas faire un jeu comme starcraft ^^ mais n'empeche que c'est un jeu pas mal fait et qui utilise ddraw 5.
Bonne prog et @++++

4 réponses

Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Salut,

Avec directX 9, pour faire de la 2D en utilisant à fond la carte vidéo, tu peux utiliser la classe ID3DXSPRITE.

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

Sinon désolé mais je n'ai jamais fait de l'openGL.
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Oups, j'ai oublié l'essenciel: on n'utilise plus Direct Draw pour faire de la 2D, mais Direct3D.

Il faut que tu initialise direct3D exactement de la meme façon que pour faire de la 3D, mais au lieu d'afficher des primitives et de te prendre la tete avec les vertex buffer et index buffer, tu ne te contente que d'appeler la fonction draw.

Ex:
LPD3DXSPRITE m_pTileSprite;
D3DXCreateSprite( lpDirect3DDevice9, &m_pTileSprite );
D3DXVECTOR2 echelle(1.0f,1.0f);
D3DXVECTOR2 centreDeRotation(0.0f,0.0f);
D3DXVECTOR2 translation(0.0f,0.0f);
D3DCOLOR modColor;

D3DXCreateTextureFromFile( lpDirect3DDevice9,
"image.bmp",
&m_pTileTexture);

lpDirect3DDevice9->BeginScene();

m_pTileSprite->Draw(m_pTileTexture, // texture
&scrRect, // zone de la texture a afficher
&echelle, // 1/zoom en gros
¢reDeRotation, 0.0f,
&translation, // position globale du coin
modColor ); // alpha + couleur

lpDirect3DDevice9->EndScene();

m_pTileSprite->Release();
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
DirectDraw s'est arrêté à la version 7, et n'utilise pas le hardware de ta carte graphique, contrairement à DirectGraphics (ou Direct3D) et à OpenGL.
Donc si tu veux qqch de performant (mais en général ce n'est pas vraiment un problème pr les jeux 2D) faudrait utiliser Direct3D ou OpenGL.

J'ai toujours tendance à pousser les gens vers OpenGL alors...^^

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Messages postés
78
Date d'inscription
samedi 18 septembre 2004
Statut
Membre
Dernière intervention
5 janvier 2007

Salut, c'est vrai que ddraw c'est pas compliqué et opengl non plus mais d3d :o c'est ... un peu trop compliqué ^^
Rabatage opengl alors :D
Bonne prog et @++++