JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=4dfd6122052e71ff03273d043a7f2eb0Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

DirectX und OpenGL gemeinsam in einer Engine nutzen?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
gguru
Mini JLI'ler



Anmeldedatum: 03.09.2004
Beiträge: 8

Medaillen: Keine

BeitragVerfasst am: 09.09.2004, 12:59    Titel: DirectX und OpenGL gemeinsam in einer Engine nutzen? Antworten mit Zitat

Hallo,

Ist es möglich DirectX und OpenGL in eine Spiele Engine zu implementieren?

Ich meine etwa so: Manch ein 3D-Effekt kommt von OGL und andere wieder von Direct3D. Das wäre nämlich sehr nützlich, denn DirectX bietet auch Input, Audio, Netzwerke... OpenGL hat aber viele Shader, die Direct3D nicht hat.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 09.09.2004, 13:02    Titel: Antworten mit Zitat

Du kannst DirectX und OpenGL geleichzeitig nutzen. Du kannst aber nicht in ein Fenster mit OGL und Direct3D ausgeben. OpenGL hat keine Shader, die DirectX nicht hat. Da verstehst du bestimmt was falsch.

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 09.09.2004, 13:04    Titel: Antworten mit Zitat

Du kannst das prima mit WRAPPERN lösen:

Code:
void RendereModell(...)
{
  if(bUseOGL)
    RendereModellOGL(...);
  else
    RendereModellDX(...);
}


OGL und DX sind sich ebenbürtig was bei den einen möglich ist geht auch bei den anderen, die Technik ist eben nur anders.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
gguru
Mini JLI'ler



Anmeldedatum: 03.09.2004
Beiträge: 8

Medaillen: Keine

BeitragVerfasst am: 09.09.2004, 13:14    Titel: Antworten mit Zitat

Nein - nein, nicht falsch verstehen. Wenn ihr euch mal das NVidia SDK anschaut, werdet ihr merken, dass manche Shader Effekte OpenGL verwenden und manche DirectX 9. Daraus schließt man logischerweise, dass sie bei der jeweiligen API vorhanden sind.

Was hält ihr davon, wenn ich SDL für Eingabe und Sound und OpenGL für Grafik verwenden würde? Dann könnte ich meine Programme auch auf Linux und MacOS zum laufen bringen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 09.09.2004, 13:39    Titel: Antworten mit Zitat

gguru hat Folgendes geschrieben:
Nein - nein, nicht falsch verstehen. Wenn ihr euch mal das NVidia SDK anschaut, werdet ihr merken, dass manche Shader Effekte OpenGL verwenden und manche DirectX 9. Daraus schließt man logischerweise, dass sie bei der jeweiligen API vorhanden sind.


Alle Shader sind auf allen API´s möglich, die Beispiele sind nunmal nur Beispiele. Sag mir ein Beispiel von dem du glaubst das es nicht möglich ist das es auf ner anderen API läuft und ich beweise dir das Gegenteil.

gguru hat Folgendes geschrieben:
Was hält ihr davon, wenn ich SDL für Eingabe und Sound und OpenGL für Grafik verwenden würde? Dann könnte ich meine Programme auch auf Linux und MacOS zum laufen bringen.


Mach doch, dies tun viele.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
gguru
Mini JLI'ler



Anmeldedatum: 03.09.2004
Beiträge: 8

Medaillen: Keine

BeitragVerfasst am: 09.09.2004, 14:23    Titel: Antworten mit Zitat

Okay, das ist ja wunderbar.

(Trotzdem: http://developer.nvidia.com/object/reflective_bump_mapping.html
gibt's das auch unter DirectX?)

Ich gehe davon aus, dass Direct3D nicht umsonst sehr viel populärer und weiter verbreitet ist als OpenGL, oder?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 09.09.2004, 14:31    Titel: Antworten mit Zitat

gguru hat Folgendes geschrieben:
Ich gehe davon aus, dass Direct3D nicht umsonst sehr viel populärer und weiter verbreitet ist als OpenGL, oder?


Ist es imho nicht... Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 09.09.2004, 14:45    Titel: Antworten mit Zitat

gguru hat Folgendes geschrieben:
Okay, das ist ja wunderbar.

(Trotzdem: http://developer.nvidia.com/object/reflective_bump_mapping.html
gibt's das auch unter DirectX?)


Ich dachte du zeigst mir wenigstens nen Shadercode, aber egal. ja sowas sollte ohne weiteres möglich sein, so extrem unterscheiden sich dir Shadersprachen ja nicht. Und soweit ich das gesehen habe ist das ganze nichts weiter als sozusagen Normalmapping die nicht nur Farben des Lichtes und der DiffusenTextur annehmen sondern die sich noch mit ner Cubamap vermischen, die Cubemaptexturen werden dabei abhängig vom NormalVector des Fragments durch die Normalmap berechnet.

Alles in allen nichts Weltbewegendes, nur recht performance intensiv.

Alle Befehle die dafür nötig sind gibts auch in HLSL, daher sollte dies auch bei DX gehen.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
gguru
Mini JLI'ler



Anmeldedatum: 03.09.2004
Beiträge: 8

Medaillen: Keine

BeitragVerfasst am: 12.09.2004, 15:02    Titel: Antworten mit Zitat

FallenAngel84 hat Folgendes geschrieben:
gguru hat Folgendes geschrieben:
Okay, das ist ja wunderbar.

(Trotzdem: http://developer.nvidia.com/object/reflective_bump_mapping.html
gibt's das auch unter DirectX?)


Ich dachte du zeigst mir wenigstens nen Shadercode, aber egal. ja sowas sollte ohne weiteres möglich sein, so extrem unterscheiden sich dir Shadersprachen ja nicht. Und soweit ich das gesehen habe ist das ganze nichts weiter als sozusagen Normalmapping die nicht nur Farben des Lichtes und der DiffusenTextur annehmen sondern die sich noch mit ner Cubamap vermischen, die Cubemaptexturen werden dabei abhängig vom NormalVector des Fragments durch die Normalmap berechnet.

Alles in allen nichts Weltbewegendes, nur recht performance intensiv.

Alle Befehle die dafür nötig sind gibts auch in HLSL, daher sollte dies auch bei DX gehen.



Gut, dann zeige du mir bitte einen Shader-Effekt, damit ich endlich lerne was das ist.

Ich dachte ja die ganze Zeit, dass OGL und Direct3D dazu da sind, um das Programmieren von 3D Anwendungen zu erleichtern. Dazu inkludiere ich auch Grafikeffekte. Irre ich mich da? Wenn ja, wozu sind die APIs dann da? (Ja, ich habe Christians Buch gelesen.)

Im Buch steht, dass OpenGL auch Polygone berechnen kann, im Gegensatz zu Direct3D, welches nur Dreiecke berechnet.
Ist dann OpenGL nicht schneller, da es Dreiecksgruppen zu einem Polygon zusammenfasst und dadurch den Prozessor entlastet?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 12.09.2004, 15:20    Titel: Antworten mit Zitat

Polygon = Dreieck

APIs (OpenGL, DirectX, SDL etc.) sind dazu da einfacher verschiedene Treiber ansprechen zu können gäbe es keine APIs müsste man für jeden Treiber eine etxra Engine schreiben.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 42
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 12.09.2004, 15:21    Titel: Antworten mit Zitat

Polygon = Vieleck
_________________
Kochen ist ein NP-schweres Optimierungsproblem.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 12.09.2004, 15:28    Titel: Antworten mit Zitat

Ein Polygon kann aus ein, zwei oder drei Vertices bestehen. Man spricht oft von Polygon und meint dabei aber das triangular polygon.

Und die Engine müsste man eigentlich nicht für jede Grafikkarte neuschreiben. Die Transformationen und Routinen für die Effekte bleiben gleich du müsstest nur das Interface für jede Grafikkarte einzeln schreiben und diese Arbeit erledigt auch unter vielen anderen DX. Very Happy
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 12.09.2004, 15:38    Titel: Antworten mit Zitat

TheMillenium hat Folgendes geschrieben:
Ein Polygon kann aus ein, zwei oder drei Vertices bestehen. Man spricht oft von Polygon und meint dabei aber das triangular polygon.

Wie willst mit 1 oder 2 Vertices ein Polygon beschreiben? Außerdem sind nach deiner Definition Vierecke(Fünfecke, Sechsecke usw.) keine Polygone, was sie aber tatsächlich sind.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
C++Builder
Senior JLI'ler



Anmeldedatum: 04.10.2003
Beiträge: 235

Medaillen: Keine

BeitragVerfasst am: 12.09.2004, 16:02    Titel: Antworten mit Zitat

GreveN hat Folgendes geschrieben:
gguru hat Folgendes geschrieben:
Ich gehe davon aus, dass Direct3D nicht umsonst sehr viel populärer und weiter verbreitet ist als OpenGL, oder?


Ist es imho nicht... Wink


Ist es imo schon! Guck mal wieviele Bücher und Foren und Tuts es zu DX gibt und wieviele zu OGL dann siehst du schon einen Unterschied!

Oder hab ich den Smilie nicht verstanden?

PS: Wofür ist das h in imho? imo heißt doch: in my oppinion oder wie oder was?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 12.09.2004, 16:10    Titel: Antworten mit Zitat

gguru hat Folgendes geschrieben:
Gut, dann zeige du mir bitte einen Shader-Effekt, damit ich endlich lerne was das ist.


Simpler HLSL fx Shader der das Mesh plainred färbt.
Nix besonderes aber immerhin ein Shader.

Code:
// transformations
float4x4 matWorld       : WORLD;
float4x4 matView        : VIEW;
float4x4 matProject     : PROJECTION;
float4 roteFarbe    = { 1.0, 0.0, 0.0, 0.0 };

struct VS_OUTPUT
{
    float4 Pos  : POSITION;
    float4 Diff : COLOR0;
};
 
VS_OUTPUT VS(float3 Pos  : POSITION)
{
    VS_OUTPUT Out = (VS_OUTPUT)0; 

    float4x4 WorldView = mul(matWorld, matView); 

    float3 P = mul(float4(Pos, 1), (float4x3)WorldView);  // position (view space) 

    Out.Pos  = mul(float4(P,1), matProject);             // position (projected)

    Out.Diff = roteFarbe; 

    return Out;



technique Simple
{
    pass P0
    {
        VertexShader = compile vs_1_1 VS();
    }

_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum