opengl software implementation par un wrapper directx

opengl software implementation par un wrapper directx - Win 7 - Windows & Software

Marsh Posté le 10-12-2009 à 17:43:33    

Bonjour à tous,
 
désolé pour ce titre de dingue :pt1cable:  
 
Voici mes questions :  
 
* L'implémentation logicielle d'opengl est un wrapper directx sous vista supportant au max opengl 1.4. Mais sous seven c'est quoi ?
* Comment fonctionne ce wrapper ? Est-ce qu'il utilise l'accélération matérielle ?
 
Merci de votre aide
Winzo

Reply

Marsh Posté le 10-12-2009 à 17:43:33   

Reply

Marsh Posté le 10-12-2009 à 19:59:34    

Question 1 :
 
Depuis Vista, 3 moyens de rendre de l'OpenGL :
 
- Via le GDI (OpenGL 1.1)
- Via l'ICD (les drivers de ta carte graphique. OpenGL 1.1 à 3.0 selon ton matériel).
- Via le wrapper DirectX (OpenGL 1.4)
 
Il serait bizarre de parler d'accélération matérielle puisque si tu as une carte graphique avec des drivers décents, tu utiliseras OpenGL en mode natif accéléré.
Dans le cas bizarre ou tu aurais uniquement de l'accélération DX, le wrapper l'utiliserait.

Reply

Marsh Posté le 11-12-2009 à 10:04:23    

Merci pour cette réponse  :)  
 
L'intérêt est de bénéficier d'un rendu convenable sur les machines qui n'auraient pas leur pilote opengl de carte graphique correctement installé et d'utiliser des fonctions supérieures à opengl 1.1.
 
Il n'est pas imaginable de dire à un user lambda de mettre à jour ses pilotes de cartes graphiques pour faire tourner l'appli. Le wrapper directx sous vista est une alternative. J'imagine que c'est le même sous seven.
 
Par contre je voudrais que mon appli utilise le wrapper directx et non gdi, comment l'os choisi l'un ou l'autre ?
 
Autres questions :
 
* quand tu installes les pilotes de cartes graphiques ou de chipsets graphique de ta CM, ça installe les pilotes directx et opengl ?
 
* si mon appli appelle une fonction de D3D9 et que seul D3D7 est installé, ça plante ou ça passe en software ?
 
* on a vu que microsoft installe des implémentation d'opengl dans ses os, mais que ces implémentations sont vieilles (1.1 sous xp et 1.4 sous vista). Est-ce que les constructeurs de cartes (ou je ne sais pas qui) installent pas leur propre implémentation software plus récente ? Ou bien mesa3D est la seule implémentation software avancée (opengl 2.1) qui existe ?
 
Whoua toutes les questions. Je viens de me relire et j'espère que c'est assez clair  ;)  
 
Merci et bonne journée,
Winzo

Reply

Marsh Posté le 11-12-2009 à 11:35:06    

- Si tu mixes dans ton appli du GDI et de l'OpenGL (ce qui n'est pas du tout conseillé), tu passeras par le rendu GDI. En contrepartie, les performances seront très mauvaises, et tu risques plusieurs bugs gênants pour les utilisateurs (bugs graphiques, désactivation d'Aero au lacement de ton programme.
 
- Si tu fais de l'OpenGL seul, l'OS choisira tout seul le rendu wrapper ou ICD selon la disponibilité des drivers.
 
Autres questions :
 
* Ca installe les drivers DX et OpenGL normalement, en tout cas pour tout ce qui est cartes "grand public".
 
* Ton programme refusera de se lancer si DX9 n'est pas installé
 
* Les constructeurs de carte proposent une implémentation en générale mixte, à savoir accélérer dans les drivers tout ce que la carte peut gérer en hardware, et émuler de façon soft le reste. A ma connaissance, la seule implémentation purement software est celle de Mesa3D.

Reply

Marsh Posté le 11-12-2009 à 14:12:19    

Merci pour tous ces réponses, ça m'aide vraiment !!
 
Quand tu dis de ne pas mélanger gdi et opengl, c'est juste les méthodes de dessin de gdi.
Tu peux quand même utiliser les choosepixelformat, ddb, dib..., sans altérer les performances et passer par le wrapper directx, non ?
 
Merci,
Winzo

Reply

Marsh Posté le 11-12-2009 à 14:25:24    

Ce que tu peux faire, c'est utiliser GDI pour générer un bitmap en mémoire, puis charger ce bitmap dans une texture avec OpenGL, et jouer avec le blending pour le placer correctement en avant ou en arrière plan. L'important étant de ne pas attaquer directement l'affichage avec GDI.


Message édité par ccp6128 le 11-12-2009 à 14:26:24
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed