As duas APIs gráficas (OpenGL e DirectX) desenvolvem um pipeline bem definido no qual vários estágios são programáveis. Esses estágios programáveis requerem uma quantidade mínima fixa de dados e devem executar nele um conjunto bem definido de operações e gerar uma saída mínima definida, para que os dados possam ser transmitidos corretamente para o próximo estágio. Parece que esses pipelines foram projetados para trabalhar com apenas uma quantidade limitada de tipos de dados geométricos, que no caso de D3D e OGL são dados de vértice e coordenadas de textura.
Mas, se for dado um caso em que o aplicativo que planejo fazer não use vértices (ou até voxels) para representar seus dados geométricos e não faça exatamente transformações ou projeções ou rasterização ou interpolação ou algo assim, tais limitações das APIs ou o pipeline dificulta as coisas.
Então, existe uma maneira de alterarmos o pipeline de gráficos de maneira que a funcionalidade do que cada estágio faz com os dados e o tipo de dados que é produzido em cada estágio sejam alterados para minha vantagem? Caso contrário, existe uma maneira de usar as funções da API 'bruta' para construir meu próprio pipeline? Caso contrário, mencione por que não é possível.
EDIT : My Application usa funções de densidade para representar geometria. A função tem um valor em cada ponto no espaço. Divido o frustum da câmera em uma grade 3D, cada bloco pode ser projetado como um pixel. Em cada bloco, integro a função de densidade e verifico se seu valor é mais do que um valor necessário. Se sim, presume-se que algo exista nesse bloco e que o pixel correspondente a esse bloco seja renderizado. então, agora no meu renderizador, quero passar a função (que represento com uma string) para o hardware gráfico em vez dos dados de vértice nos buffers de vértice. isso também implica que o shader de vértice não terá vértices para se transformar em espaço de clipe homogêneo e o shader de fragmento não recebe informações de pixel. agora, a maioria das pesquisas e avaliações acontece por pixel.