OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.
- RustySpoon
- Establishment
- Beiträge: 298
- Registriert: 17.03.2009, 13:59
- Wohnort: Dresden
Re: OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.
Potenziell dumme Frage: Warum überhaupt kompilieren/übersetzen und nicht einfach für GLSL/HLSL separat schreiben/ablegen?
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.
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.
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.Schrompf hat geschrieben:Ansichtssache.
[/einmisch]
- Schrompf
- Moderator
- Beiträge: 5158
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.
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.
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.
- Schrompf
- Moderator
- Beiträge: 5158
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.
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.
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.
- Schrompf
- Moderator
- Beiträge: 5158
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: OpenGL vs. DirectX - Ich bin [nicht mehr] verwirrt.
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.
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.