Entrambe le API grafiche (OpenGL e DirectX) escogitano una pipeline ben definita in cui sono programmabili diverse fasi. Queste fasi programmabili richiedono di prendere una quantità minima fissa di dati e si suppone che facciano un intervallo ben definito di operazioni su di esso e forniscano un output minimo definito, in modo che i dati possano essere passati correttamente allo stadio successivo. Sembra che queste pipeline siano progettate per funzionare solo con una quantità limitata di tipi di dati geometrici, che nel caso di D3D e OGL sono dati di vertici e coordinate di trama.
Ma, se viene dato un caso in cui l'applicazione che intendo realizzare non utilizza vertici (o anche voxel) per rappresentare i suoi dati geometrici e non esegue esattamente trasformazioni o proiezioni o rasterizzazione o interpolazione o qualcosa del genere, tali limiti delle API o la conduttura rende le cose difficili.
Quindi, c'è un modo in cui possiamo cambiare la pipeline grafica in modo tale che la funzionalità di ciò che ogni fase fa ai dati e il tipo di dati che viene emesso in ogni fase viene modificata a mio vantaggio? In caso contrario, esiste un modo per utilizzare le funzioni API "non elaborate" per costruire la mia pipeline? In caso contrario, si prega di menzionare il motivo per cui non è possibile.
EDIT : My Application utilizza le funzioni di densità per rappresentare la geometria. La funzione ha un valore in ogni punto dello spazio. Divido il frustum della telecamera in una griglia 3d, ogni blocco può essere proiettato come un pixel. Su ogni blocco, integro la funzione di densità e controllo se il suo valore è più di un valore richiesto. Se sì, allora si presume che esista qualcosa in quel blocco e che il pixel corrispondente a quel blocco sia reso. così, ora nel mio renderer, voglio passare la funzione (che rappresento con una stringa) all'hardware grafico anziché ai dati dei vertici nei buffer dei vertici. questo implica anche che lo shader di vertice non avrà vertici da trasformare in spazio di clip omogeneo e che lo shader di frammenti non ottiene informazioni sui pixel. invece, ora la maggior parte della ricerca e della valutazione avviene per pixel.