OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Benutzeravatar
RustySpoon
Establishment
Beiträge: 298
Registriert: 17.03.2009, 13:59
Wohnort: Dresden

Re: OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.

Beitrag von RustySpoon »

Potenziell dumme Frage: Warum überhaupt kompilieren/übersetzen und nicht einfach für GLSL/HLSL separat schreiben/ablegen?
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.

Beitrag von Krishty »

Spiele Programmierer hat geschrieben:Das mit der Dependency stimmt schon.
Allerdings könntest du das Parsen der Shader ja einmalig bei dir im Buildprozess ausführen und HLSL und GLSL fertig erzeugt ausliefern.
Schrompf hat geschrieben:Ansichtssache.
Ich hasse Abhängigkeiten ja auch wie die Pest, aber ich habe sie lieber auf dem System des Entwicklers als auf dem System der Endanwender. Behalt die Hölle auf deinem Entwicklungsrechner – egal ob du nun LLVM benutzt oder das Shader-Assembly aus dem Kopf in einen Hex-Editor tippst – und liefer nur fertigen Bytecode in zwei Versionen aus. Drückt nebenbei beachtlich die Ladezeiten.

[/einmisch]
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.

Beitrag von Schrompf »

Das mit dem Shadercompiler überlege ich mir nochmal. Ich wollte eigentlich keinen Build Step daraus machen, u.A. weil ich bei den Splitterwelten damals Shader aus XML-Skripten nach Bedarf erzeugt habe.

Weitere Notizen von der DirectX/OpenGL-Front:
- OpenGL hat standardmäßig kein Backface Culling an, DirectX ist standardmäßig bei CounterClockwise
- das dämliche Halb-Pixel-Offset von DirectX9 kriecht in die absurdesten Ecken mit rein. Mistgriebel.
- Man bekommt lustige Screenshots, wenn man seine Framebuffer mit GL_DRAW_FRAMEBUFFER bindet, aber zwischendurch für das Leeren eines Rendertargets einmal an GL_FRAMEBUFFER bindet. glReadPixels() hat dann den einen FrameBuffer ausgelesen, der mal mit GL_FRAMEBUFFER angebunden war. Wenn man danach googelt, erfährt man auch, warum.
- HLSL log() hat anscheinend ein abs() mit eingebaut, GLSL log() nicht.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.

Beitrag von Schrompf »

Ich hinterlasse hier mal weiter meine Erkenntnisse, vielleicht sind für jemanden noch nützlich.

Freude mit OpenGL und Intel OnBoard GPU:

- warnt, dass #version deprecated sei im XundY-Sülz-Profile
- warnt gleichzeitig, dass das 'f' am Ende einer Zahl für einfache Genauigkeit erst ab #version 110 erlaubt sei
- fehlert bei jedem #line im Code
- fehlert, wenn das Wort discard irgendwo im Code auftaucht, auch wenn es nicht benutzt wird.
- glBindFramebuffer tut anscheinend nur manchmal, was es soll. Ich krieg diverse Zwischen-Rendertargets übereinander auf den Hauptscreen. Meh.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.

Beitrag von Schrompf »

Gestrige Erkenntnis:
DirectX9 und OpenGL (NVidia) unter Windows initialisieren Ressourcen mit 0. NVidia unter LInux tut das nicht, da hat man zufälligen Speichermüll drin.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Antworten