DirectX vs OpenGL
-
Schlüsselwörter?!?

Is' ja auch kein Wunder:
Wenn ich in DirectX ein fettes Model reinladen will, mach' ich
LoadXMeshFromFile("kuhlesspaceship.x");
und ich hab's!
Unter OpenGL les' ich mir erstmal zig Tutorials bei NeHe durch, wie man denn den perfekten Loader schreiben könnte.
Such' bei wotsit nach Fileformats und scheitere letztendlich.Klar, das erste Dreieck ist in OpenGL einfacher. Aber dann hört's auch auf.

-
Sgt. Nukem schrieb:
Wenn ich in DirectX ein fettes Model reinladen will, mach' ich
LoadXMeshFromFile("kuhlesspaceship.x");
und ich hab's!...
Klar, das erste Dreieck ist in OpenGL einfacher. Aber dann hört's auch auf.

-
Sowas is grade mal ne erleichterung für anfänger, die sich keinen eigenen Modelloader schreiben wollen, (Kinder - API lol) Alle richtigen spiele haben sowieso eigene Modelformate.
-
Also Fazit:
Das erste Mesh ist in DX einfacher (wiegt der Code für nen kleinen Modelloader eigentlich den DX initcode auf). Aber dann hört's auch auf.
Und ohne an dem BS Glaubenskrieg Teilnehmen zu wollen, aber:
Wieso nur für ein BS schreiben, wenn man mit OpenGL gleich ein zweites, ach sorry, unsinn, so ziemlich jedes Betriebssystem mit Graphikmöglichkeit dazubekommt?
Und wenn hier schon manche nicht Erleuchtete Linux als unwichtig abstempeln, was ist dann mit Mac?
-
-
Sgt. Nukem schrieb:
Schlüsselwörter?!?

Is' ja auch kein Wunder:
Wenn ich in DirectX ein fettes Model reinladen will, mach' ich
LoadXMeshFromFile("kuhlesspaceship.x");
und ich hab's!
Unter OpenGL les' ich mir erstmal zig Tutorials bei NeHe durch, wie man denn den perfekten Loader schreiben könnte.
Such' bei wotsit nach Fileformats und scheitere letztendlich.Klar, das erste Dreieck ist in OpenGL einfacher. Aber dann hört's auch auf.

aber solche *.x einfach reinladen wären dann "Ghost" also nicht anfassbar.
Und ich denk für OpenGL gibts Module dafür mit dem man auch einfach so reinpasten kann. Achja obwohl ich Anfänger bin hab ich mein Engine so programmiert dass es JediKnight Map Daten auslesen und darstellen kann.
Also so schwer ist das nixht
-
Ach Leute,
dieses Gezänke bringt doch nichts.
Letztendlich nimmt doch sowieso jeder die API, die ihm am sympathischsten ist.Gearscht sind nur die Leute, die durch eine Projektarbeit zur Arbeit mit OGl genötigt werden, wo sie doch DX sooo lieeben.

Naja, und für die Eintagsfliegen ist es erst recht egal.
PS: Noch jemand Hunger auf Pasta gekriegt?

-
Wieso Pasta?
-
Krieg ich immer Hunger drauf, wenn ich irgendwo was von reinpasten lese.
http://de.wikipedia.org/wiki/Appetenzverhalten
-
ChockoCookie schrieb:
Alle richtigen spiele haben sowieso eigene Modelformate.
Du hast keine Ahnung.
ChockoCookie schrieb:
wiegt der Code für nen kleinen Modelloader eigentlich den DX initcode auf
Du hast keine Ahnung.
ChockoCookie schrieb:
Wieso nur für ein BS schreiben, wenn man mit OpenGL gleich ein zweites, ach sorry, unsinn, so ziemlich jedes Betriebssystem mit Graphikmöglichkeit dazubekommt?
Du hast keine Ahnung.
xBlackKnightx schrieb:
aber solche *.x einfach reinladen wären dann "Ghost" also nicht anfassbar.
Du hast keine Ahnung.
Bye, TGGC (Wähle deine Helden)
-
TGGC schrieb:
ChockoCookie schrieb:
Wieso nur für ein BS schreiben, wenn man mit OpenGL gleich ein zweites, ach sorry, unsinn, so ziemlich jedes Betriebssystem mit Graphikmöglichkeit dazubekommt?
Du hast keine Ahnung.
*lol*
Du hast keine Ahnung.Ist schon lustig wie dieser sinnlose Thread jede Woche erneut von 0 weg ausgefochten wird

Übrigens, ATI ist blöd, nvidia ist cool. :p
-
durito schrieb:
Übrigens, ATI ist blöd, nvidia ist cool. :p
Du hast keine Ahnung.
-
ChockoCookie schrieb:
- Also Fazit:
Das erste Mesh ist in DX einfacher (wiegt der Code für nen kleinen Modelloader eigentlich den DX initcode auf).
Keine Ahnung was für ein DX Du so benutzt...

Unter Windows mach' ich (ohne Fehlerbehandlung):
m_lpD3D = Direct3DCreate9(D3D_SDK_VERSION); D3DPRESENT_PARAMETERS PParams; ZeroMemory(&PParams, sizeof(PParams)); PParams.SwapEffect = D3DSWAPEFFECT_DISCARD; PParams.hDeviceWindow = hWnd; PParams.Windowed = true; PParams.BackBufferWidth = 800; PParams.BackBufferHeight = 600; PParams.BackBufferFormat = D3DFMT_A8R8G8B8; m_lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &PParams, &m_lpD3DDevice);und kann dann rendern.
Für OpenGL mach' ich:
PIXELFORMATDESCRIPTOR pfd; int iFormat; *hDC = GetDC(hWnd); ZeroMemory(&pfd, sizeof (pfd)); pfd.nSize = sizeof(pfd); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cColorBits = 24; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; iFormat = ChoosePixelFormat(*hDC, &pfd); SetPixelFormat(*hDC, iFormat, &pfd); *hRC = wglCreateContext(*hDC); wglMakeCurrent(*hDC, *hRC);Ich kann da jetzt nicht _SOOO_ den Unterschied sehen (ausser daß die GL-Initialisierung noch 4 Zeilen länger ist
)...

- Also Fazit:
-
DX9 hat aber lange Wörter!
-
ROFL - DirectX hat generell den längeren...

-
Sgt. Nukem schrieb:
ROFL - DirectX hat generell den längeren...


-
ROFL

Killerargument gefunden. Ich geb auf.

-
durito schrieb:
Übrigens, ATI ist blöd, nvidia ist cool. :p
Stimmt. nVidia bringt funktionierende Treiber für Linux raus.
-
TGGC schrieb:
...
*heisse Luft*
...LOL, du bist doof

Du tust ja nicht mal so, als würdest du stichhaltige Argumente bringen und verdirbst damit das Flamewar - Erlebnis für alle anderen. *pfui pfui*
und du hast keine Ahnung
Sgt. Nukem schrieb:
Keine Ahnung was für ein DX Du so benutzt...

Normalerweise gar keines ...
Und mit dem Code den du gepostet hast, initialisierst du nicht OpenGL, sondern das Windowing-System, in diesem Fall WGL.
Aber die Länge des typischen init-Codes ist sowieso nur für Kinder interessant.
zB solche, die sich freuen, dass man bei DX ein Mesh mit einem Functioncall laden kann ...
-
ChockoCookie schrieb:
Und mit dem Code den du gepostet hast, initialisierst du nicht OpenGL, sondern das Windowing-System, in diesem Fall WGL.
Hahaha... sehr witzig!

Klar, ich kann ein paar ganz abstrakte multiplattformfähige Schinken wie OpenGL proggen, und dann alles an Anwendungscode, den ich brauche, um diese "abstrakte Blackbox" an ein real existierendes Windowing-System zu binden (Windows-API) nach dem Motto "Hat ja mit OpenGL nix zu tun! Ist der Init-Code für was ganz anderes!" abhaken...

ChockoCookie schrieb:
Aber die Länge des typischen init-Codes ist sowieso nur für Kinder interessant.
Mhhhh... lass mich überlegen... Wer interessierte sich als Einziger für den Init-Code?!?
Achja... das war ChockoCookie!!

ChockoCookie schrieb:
zB solche, die sich freuen, dass man bei DX ein Mesh mit einem Functioncall laden kann ...
Du solltest wirklich auf Embedded-System in Assembler (oder direkt in HEX-Code) ein paar Grafik-Sachen machen.
Diese Function-Calls die einem die ganze Arbeit abnehmen, wie z.B. glVertex3f(1.0f, 5.6f, -0.5f); sind ja nun wirklich für Kinder!

-
Aufpassen, er bastelt grade seine eigenen graphics API - NOCH LÄNGER

PIMPcya
liquid
-
Sgt. Nukem schrieb:
Klar, ich kann ein paar ganz abstrakte multiplattformfähige Schinken wie OpenGL proggen, und dann alles an Anwendungscode, den ich brauche, um diese "abstrakte Blackbox" an ein real existierendes Windowing-System zu binden (Windows-API) nach dem Motto "Hat ja mit OpenGL nix zu tun! Ist der Init-Code für was ganz anderes!" abhaken...
Genau

Man beurteilt C++ ja auch nicht nach der Bedienbarkeit der CompilerSgt. Nukem schrieb:
Mhhhh... lass mich überlegen... Wer interessierte sich als Einziger für den Init-Code?!?
Achja... das war ChockoCookie!!Ach Unsinn!
Alle haben es gedacht, ich habe es nur ausgesprochen.
Sgt. Nukem schrieb:
Du solltest wirklich auf Embedded-System in Assembler (oder direkt in HEX-Code) ein paar Grafik-Sachen machen.
In so einer beschissenen Lage nützt einem eine Funktion für ein Mesh auch nichts mehr ..

Sgt. Nukem schrieb:
Diese Function-Calls die einem die ganze Arbeit abnehmen, wie z.B. glVertex3f(1.0f, 5.6f, -0.5f); sind ja nun wirklich für Kinder!
Böte die OpenGL API Mittel sie nachzuprogrammieren, weinte ich ihnen keine Träne nach.
:p"Wir brauchen keine eigenen Funktionen zu schreiben. DX hat sooooo viele Funktionen dabei, da macht man ein ganzes Spiel mit < 70 Zeilen" ROFL
@ LiquidAcid: wow, der Typ ist mein neuer Held. EIn Fall für
TEEEE GEEE GEEE CEEEEEHEEEE !!!!!PS: Wow, ich bin grad auf die Smiley-begrenzung gestossen. LOL
Nukem, wie gehst du eigentlich mit dieser Beschneidung deines Freiraums um?
-
Sgt. Nukem schrieb:
ChockoCookie schrieb:
- Also Fazit:
Das erste Mesh ist in DX einfacher (wiegt der Code für nen kleinen Modelloader eigentlich den DX initcode auf).
Keine Ahnung was für ein DX Du so benutzt...

Unter Windows mach' ich (ohne Fehlerbehandlung):
m_lpD3D = Direct3DCreate9(D3D_SDK_VERSION); D3DPRESENT_PARAMETERS PParams; ZeroMemory(&PParams, sizeof(PParams)); PParams.SwapEffect = D3DSWAPEFFECT_DISCARD; PParams.hDeviceWindow = hWnd; PParams.Windowed = true; PParams.BackBufferWidth = 800; PParams.BackBufferHeight = 600; PParams.BackBufferFormat = D3DFMT_A8R8G8B8; m_lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &PParams, &m_lpD3DDevice);und kann dann rendern.
Daaaaaaaaanke für den Code, mein Buch erklärt das nicht so richtig und nutzt solche scheiß mitgelieferten Hilfsfunktionen, die saueng mit der WinAPI, also leider für mich unlesbar, verknüpft sind.
ENDLICH hab ich meine Device-Schnittstelle erstellt:

- Also Fazit: