Les deux API graphiques (OpenGL et DirectX) conçoivent un pipeline bien défini dans lequel plusieurs étapes sont programmables. Ces étapes programmables nécessitent de prendre une quantité minimale fixe de données et sont censées effectuer une gamme bien définie d'opérations sur celle-ci, et produire une sortie minimale définie, afin que les données puissent être transmises correctement à l'étape suivante. Il semble que ces pipelines soient conçus pour fonctionner avec une quantité limitée de types de données géométriques, qui dans le cas de D3D et OGL sont des données de sommet et des coordonnées de texture.
Mais, si on me donne un cas où l'application que je prévois de faire n'utilise pas de sommets (ou même de voxels) pour représenter ses données géométriques et ne fait pas exactement de transformations ou de projections ou de pixellisation ou d'interpolation ou quelque chose comme ça, de telles limitations des API ou le pipeline rend les choses difficiles.
Alors, existe-t-il un moyen de modifier le pipeline graphique de manière à ce que la fonctionnalité de ce que chaque étape fait aux données et le type de données qui sont produites à chaque étape soient modifiées à mon avantage? Sinon, existe-t-il un moyen par lequel je peux utiliser les fonctions API «brutes» pour construire mon propre pipeline? Sinon, veuillez indiquer pourquoi ce n'est pas possible.
EDIT : Mon application utilise des fonctions de densité pour représenter la géométrie. La fonction a une valeur à chaque point de l'espace. Je divise le tronc de l'appareil photo en une grille 3D, chaque bloc peut être projeté en pixel. Sur chaque bloc, j'intègre la fonction densité et vérifie si sa valeur est supérieure à une valeur requise. Si oui, alors il est supposé que quelque chose existe dans ce bloc et que le pixel correspondant à ce bloc est rendu. donc, maintenant dans mon moteur de rendu, je veux passer la fonction (que je représente avec une chaîne) au matériel graphique au lieu des données de sommet dans les tampons de sommet. cela implique également que le vertex shader n'aura pas de vertices à transformer en espace de clip homogeniouse et le fragment shader n'obtient pas d'informations sur les pixels. à la place, la plupart des recherches et évaluations se font désormais par pixel.