Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
gguru Mini JLI'ler
Anmeldedatum: 03.09.2004 Beiträge: 8
Medaillen: Keine
|
Verfasst am: 09.09.2004, 12:59 Titel: DirectX und OpenGL gemeinsam in einer Engine nutzen? |
|
|
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 |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 09.09.2004, 13:02 Titel: |
|
|
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 09.09.2004, 13:04 Titel: |
|
|
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 |
|
|
gguru Mini JLI'ler
Anmeldedatum: 03.09.2004 Beiträge: 8
Medaillen: Keine
|
Verfasst am: 09.09.2004, 13:14 Titel: |
|
|
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 09.09.2004, 13:39 Titel: |
|
|
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 |
|
|
gguru Mini JLI'ler
Anmeldedatum: 03.09.2004 Beiträge: 8
Medaillen: Keine
|
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 09.09.2004, 14:31 Titel: |
|
|
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... |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 09.09.2004, 14:45 Titel: |
|
|
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 |
|
|
gguru Mini JLI'ler
Anmeldedatum: 03.09.2004 Beiträge: 8
Medaillen: Keine
|
Verfasst am: 12.09.2004, 15:02 Titel: |
|
|
FallenAngel84 hat Folgendes geschrieben: |
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 |
|
|
PeaceKiller JLI Master
Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 12.09.2004, 15:20 Titel: |
|
|
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 |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 12.09.2004, 15:21 Titel: |
|
|
Polygon = Vieleck _________________ Kochen ist ein NP-schweres Optimierungsproblem. |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 12.09.2004, 15:28 Titel: |
|
|
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. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Sören JLI Master Trainee
Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 12.09.2004, 15:38 Titel: |
|
|
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 |
|
|
C++Builder Senior JLI'ler
Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 12.09.2004, 16:02 Titel: |
|
|
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... |
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 12.09.2004, 16:10 Titel: |
|
|
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 |
|
|
|