Pour 2d opengl/glut > ddraw ?

gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007 - 30 déc. 2004 à 16:32
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007 - 31 déc. 2004 à 11:10
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

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
30 déc. 2004 à 17:34
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.
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
30 déc. 2004 à 17:39
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();
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
30 déc. 2004 à 23:13
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/
0
gimli123 Messages postés 78 Date d'inscription samedi 18 septembre 2004 Statut Membre Dernière intervention 5 janvier 2007
31 déc. 2004 à 11:10
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 @++++
0
Rejoignez-nous