Hier OpenGL.. Erst muss man durchsteigen, in welchem Format ich meine
Daten bereitstellen kann und in welchem Format sie tatsächlich auf
der Karte landen.
Dann weiß ich nicht, ob die Schnittstelle dann doch die Daten
aufwendig umfrizzelt (munter zwischen RGBA8, BGRA8, RGBA16, BGRA16,
LUMINANCE und so weiter bei Texturen). Das geht so weit, dass man
lästigerweise herumprobieren muss, bis OpenGL die ganzen Enums
frisst. Ohne Dokumentation geht da gar nix.
Bei Geometrie genauso.
Die Schnittstelle soll mir einfach sagen:
"Knall deine Daten als Blob in diesem und jenem Format auf die Karte.
name = uploadData(VERTS, meinPointer, 16BIT, 3).
Dann mach ein draw(name), damit die Shader drüberwuseln."
Ich will mich auch nicht um Synchronisation, dynamische oder
statische VBOs kümmern müssen. Soll die Schnittstelle das doch
herausfinden und passende Strategien zur Entlastung des Bus anwenden.
Mit FBOs gehts weiter. Richtig richtig krampfig mit dem Anhängen
passender Texturen und Formate an die FBOs. Warum zum Teufel kann ich
net sagen:
setDrawTextures(meineTiefentex, meineFarbtex, meineNormalentex,
meineMaterialindizestex, meineSpecialtex...) und zack kann ich im
Shader da reinkrizzeln? Denn es SIND einfach nur Bildchen!
Und wenn meine Bildchen fertig gemalt sind, will ich nicht mit einem
Fullscreen-Quad herumhantieren. Ich will Compositing betreiben und
das Ergebnis in die Textur schreiben, die der Bildschirm beim
nächsten Buffer Swap anzeigt.
Muss ich für eine solche Aufgabe wirklich noch Viewport und Matritzen
setzen, vorige FBOs abstellen, Texturen aktivieren, diese Texturen an
die uniforms im Shader binden, ein korrekt großes Quad malen um
letztendlich ein Bild auf den Schirm zu kriegen? Ja, so geht das mit
OpenGL. Krampfig, nicht?
So wie die fixed function pipeline Geschichte ist, so sollte nun
oben genanntes Gedöns Geschichte sein. Manchmal ist es einfacher, ein
Rad selbst zu erfinden, als die eigene Achse an ein fremdes Rad
anzupassen. Die Schnittstelle soll die schnellsten und besten
Möglichkeiten/Formate anbieten und damit muss ich leben.
Ich weiß, dass es doch nicht so einfach ist weil verschiedene
Grafikkartenmodelle "am liebsten" mit TexturFormatXY arbeiten und so.
Vielleicht entwustet Mantle das ein wenig.
whynodd
Daten bereitstellen kann und in welchem Format sie tatsächlich auf
der Karte landen.
Dann weiß ich nicht, ob die Schnittstelle dann doch die Daten
aufwendig umfrizzelt (munter zwischen RGBA8, BGRA8, RGBA16, BGRA16,
LUMINANCE und so weiter bei Texturen). Das geht so weit, dass man
lästigerweise herumprobieren muss, bis OpenGL die ganzen Enums
frisst. Ohne Dokumentation geht da gar nix.
Bei Geometrie genauso.
Die Schnittstelle soll mir einfach sagen:
"Knall deine Daten als Blob in diesem und jenem Format auf die Karte.
name = uploadData(VERTS, meinPointer, 16BIT, 3).
Dann mach ein draw(name), damit die Shader drüberwuseln."
Ich will mich auch nicht um Synchronisation, dynamische oder
statische VBOs kümmern müssen. Soll die Schnittstelle das doch
herausfinden und passende Strategien zur Entlastung des Bus anwenden.
Mit FBOs gehts weiter. Richtig richtig krampfig mit dem Anhängen
passender Texturen und Formate an die FBOs. Warum zum Teufel kann ich
net sagen:
setDrawTextures(meineTiefentex, meineFarbtex, meineNormalentex,
meineMaterialindizestex, meineSpecialtex...) und zack kann ich im
Shader da reinkrizzeln? Denn es SIND einfach nur Bildchen!
Und wenn meine Bildchen fertig gemalt sind, will ich nicht mit einem
Fullscreen-Quad herumhantieren. Ich will Compositing betreiben und
das Ergebnis in die Textur schreiben, die der Bildschirm beim
nächsten Buffer Swap anzeigt.
Muss ich für eine solche Aufgabe wirklich noch Viewport und Matritzen
setzen, vorige FBOs abstellen, Texturen aktivieren, diese Texturen an
die uniforms im Shader binden, ein korrekt großes Quad malen um
letztendlich ein Bild auf den Schirm zu kriegen? Ja, so geht das mit
OpenGL. Krampfig, nicht?
So wie die fixed function pipeline Geschichte ist, so sollte nun
oben genanntes Gedöns Geschichte sein. Manchmal ist es einfacher, ein
Rad selbst zu erfinden, als die eigene Achse an ein fremdes Rad
anzupassen. Die Schnittstelle soll die schnellsten und besten
Möglichkeiten/Formate anbieten und damit muss ich leben.
Ich weiß, dass es doch nicht so einfach ist weil verschiedene
Grafikkartenmodelle "am liebsten" mit TexturFormatXY arbeiten und so.
Vielleicht entwustet Mantle das ein wenig.
whynodd