VINDICATORs wrote:donc il faut faire du reverse engine pour pouvoir l'exploiter
D'où l'intérêt qu'il y aurait à utiliser OpenGL pour réimplémenter l'API Direct3D sans avoir à connaitre son implémentation par Microsoft. Ainsi, une appli utilisant Direct3D n'a pas à être réécrite totalement en utilisant des appels aux fonctions OpenGL à la place des appels Direct3D pour être portée sous Linux.

Apres, si c'est possible, on peut aussi écrire le même genre de wrapper vers SDL, pour la partie son et contrôles de DirectX.

"
You may say I am a dreamer
But I am not the only one
I hope some day you'll join us
And the world will live as one
", John Lennon. 😉
En fait! ça sera mieux d'avoir que de l'opengl ! vu qu'il n'y a pas grand chose à faire pour le mettre sur d'autre plateforme et que c'est libre et open source!

Sinon il faut utilisé wine ou cedega qui font ce que tu décrit! même si ça ne te plait pas...

Après si tu parle des effets et possibilité, sache qu'openGL n'a pas à rougir! donc pourquoi veut tu mettre du d3d dans openGL???
+1 VINDICATORs
L'inverse existe déjà sous Windows, les appels OpenGL sont mappés sur des appels Direct3D.
En ce qui concerne la nouvelle API de jeu made in Microsoft XNA, une implémentation libre est déjà en cours Mono.Xna.
http://code.google.com/p/monoxna/
Après, les boites se foutent de faire de l'OpenGL ou du DirectX tant qu'ils y a des joueurs derrière, le souci est qu'OpenGL est volontairement maintenu à l'écart de l'OS dominant le marché et que les fabricants de GPU préférent optimiser leurs pilotes pour Direct3D.
surtout avec l'implentation de la gestion du son, du texte, du réseau comme le fait l'api DirectX!
Cela n'a jamais été la politique de l'opengl.

Pour répondre plus précisement, tu dis "-J'ai cru comprendre qu'OpenGL était émulé (traduit) par des appels Direct3D sous Windows Vista en mode fenêtré.". Non l'openGl est supporté sous vista sans émulation direct3d.

OpenAl est l'équivalent son (et... ?) de DirectSound pour openGL (de mémoire...)
Lokthare wrote:Wine, c'est pas l'émulation...
Il est vrai que ça n'est pas de l'émulation telle qu'on l'entend pour un émulateur de machine comme QEMU, par exemple.

Et pourtant, Windows et Linux sont incompatibles au niveau binaire. En effet, mon exécutable Helloworld.exe, compilé sous windows ne s'éxécutera pas nativement sous Linux (je devrais recompiler le source), pourtant les source Windows et Linux sont strictement identiques.

Or, wine permet d'exécuter sous Linux des binaires compilés pour Windows. A mon sens, wine fourni dans ce cas ce qu'on peut appeler une couche d'émulation.

Un wrapper Direct3D -> OpenGL, permet de recompiler les sources d'un programme Direct3D win32 afin qu'il s'execute nativement sous Linux.

Je viens de voir que Wine permet sans doute ça grace à WineLib, en effet. (en théorie, car en pratique aucun jeu DirectX n'a encore été recompilé pour Linux en utisant WineLib...)

"Wine provides both a development toolkit for porting Windows source code to Unix as well as a program loader, allowing many unmodified Windows programs to run on x86-based Unixes"

En fait, il semble que wine puisse remplir deux fonctions :

- émulation d'un environnement win32 pour exécuter des programmes non recompilés pour Linux (la majorité des jeux exécutés via wine le sont dans un environnement win32 émulé).

- recompilation de sources win32 pour produire des exécutables Linux natifs (apparement, OpenOffice et Mozilla utilisent ça).
Tient? windows et linux sont identique au niveau source!! première nouvelle (dsl! ou alors j'ai rien compris ! tu parle des SE ou du programme???)!

Wine n'émule pas, mais implante les librairies windows grace au reverse engine! et traduit, enfin fait ce que tu recherche, d3d en opengl etc...

Et tu peut faire du direct3D :->openGL, mais c'est juste que par exemple le X de D3D sera utilisé avec le X d'openGL, mais ça ne rendra pas toujours pareille étant donné les différences qu'il peut y avoir!
Non, bien sûr, les sources Windows et Linux ne sont pas identiques ! 😉

Je prenais l'exemple d'un programme simple comme un "Hello World !" en C :
#include <stdio.h>

int main(int argc, char **argv)
{
    printf("Hello world!\n");
    
    return 0;
}
Ce source ne contient rien de spécifique Windows ou Linux. Il peut être compilé tel quel sous n'importe quelle plate-forme pour produire un executable.

Je voulais alors illustrer le fait suivant :
bien que le source soit identique, l'éxécutable produit sous Windows ne s'exécutera pas sous Linux, car les deux systèmes sont incompatibles au niveau binaire.

Donc pour exécuter un binaire Win32 il faut émuler la plate-forme Win32 (décoder le fichier binaire et rediriger dynamiquement les appels aux API win32 vers les équivalents Linux), ce que fait le chargeur de programme Wine.

Pour exécuter un programme utilisant l'API Win32 nativement sous Linux (ie: sans utiliser le chargeur de programme Wine), il faut :
1- avoir les sources du programme
2- compiler ces sources dans l'environnement winelib

Ce sont deux choses bien distinctes :
dans le premier cas il s'agit d'une application Win32 qu'on execute via le chargeur de programme (pseudo émulateur).
dans le deuxieme cas, on a transformé une application Win32 en application Linux en la recompilant avec WineLib.
sans doute mais tant qu'il n'y aura pas de distribution des programmes binaires... et que de toute manière tu aura sans doute une perte du à la conversion dx->opengl-etc... je doute que ce soit si simple qu'un programme prévu pour d3d puisse tourner nativement avec opengl!
@Refuznik: faux, si tu utilises l'implémentation d'OpenGL fourni par Windows Vista, tes appels OpenGL seront mpappés vers des appels Direct3D. Le nouveaux gestionnaire de fenêtres de Vist utilise DirectX9, et n'est pas prévu compatible avec OpenGL par Microsoft même si un mécanisme est prévu pour rendre cela possible.
Si tu veux un support natif d'OpenGL, c'est à la charge des fabricants de GPU qui doivent fournir à côté de leurs pilotes graphiques WDDM, un pilote ICD pour le support d'OpenGL
Pas de pilote ICD = pas d'Aero quand tu lances une applis OpenGL = support OpenGL 1.1 mappé sur Direct3D
http://msdn2.microsoft.com/en-us/library/bb173477.aspx
réecrire une sorte de wapper direct 3d/ opengl n'aiderai pas a porté des jeux windows vers linux car comme il est ecrit plus haut c'est tout directx qu'il faudrait warper et puis resterai d'autre libs utilisé par le jeux sans compter le code propre a windows,...
les editeurs de jeux n'hesite pas a proposer des versions ps2 et autre console qui n'utilisent pas de directx
mais linux n'as pas encore de sdk pour faire de jeux rapidement et aussi aboutie, peut etre aussi une question purement commercial(le benefice ne serait peut etre pas a la hauteur des investisements),peur de s'atirer les foudres de microsoft?
si une console fonctionnait exclusivement sous linux peut etre que la ca ferait bouger les choses !