Beide Grafik-APIs (OpenGL und DirectX) entwickeln eine klar definierte Pipeline, in der mehrere Stufen programmierbar sind. Diese programmierbaren Stufen erfordern eine feste Mindestmenge an Daten und sollen einen genau definierten Bereich von Operationen ausführen und eine definierte Mindestausgabe ausgeben, damit die Daten korrekt an die nächste Stufe weitergeleitet werden können. Es scheint, als ob diese Pipelines nur für eine begrenzte Anzahl von Geometriedatentypen ausgelegt sind, bei denen es sich sowohl bei D3D als auch bei OGL um Scheitelpunktdaten und Texturkoordinaten handelt.
Wenn jedoch ein Fall vorliegt, in dem die von mir geplante Anwendung keine Eckpunkte (oder sogar Voxel) zur Darstellung ihrer geometrischen Daten verwendet und keine Transformationen oder Projektionen, keine Rasterisierung oder Interpolation oder ähnliches ausführt, gelten diese Einschränkungen für die APIs oder die Pipeline erschweren die Dinge.
Gibt es also eine Möglichkeit, die Grafik-Pipeline so zu ändern, dass die Funktionalität der einzelnen Schritte für die Daten und der in den einzelnen Schritten ausgegebenen Datentypen zu meinem Vorteil geändert wird? Wenn nicht, gibt es dann eine Möglichkeit, wie ich die 'raw'-API-Funktionen verwenden kann, um meine eigene Pipeline zu erstellen? Wenn nicht, geben Sie bitte an, warum dies nicht möglich ist.
BEARBEITEN : Meine Anwendung verwendet Dichtefunktionen zur Darstellung der Geometrie. Die Funktion hat an jedem Punkt im Raum einen Wert. Ich teile den Kegelstumpf der Kamera in ein 3D-Raster, wobei jeder Block als Pixel projiziert werden kann. In jeden Block integriere ich die Dichtefunktion und überprüfe, ob sein Wert mehr als ein erforderlicher Wert ist. Wenn ja, wird angenommen, dass in diesem Block etwas vorhanden ist und das diesem Block entsprechende Pixel gerendert wird. Jetzt möchte ich in meinem Renderer die Funktion (die ich mit einer Zeichenfolge darstelle) an die Grafikhardware übergeben, anstatt Vertexdaten in Vertexpuffern. Dies bedeutet auch, dass der Scheitelpunkt-Shader keine Scheitelpunkte zum Umwandeln in einen homogenen Clip-Raum hat und der Fragment-Shader keine Pixel-Informationen erhält. Stattdessen erfolgt das Nachschlagen und Auswerten jetzt größtenteils pro Pixel.