Sto cercando un modo per utilizzare una funzione come argomento per un'altra funzione in GLSL. Nella normale C, può essere simulato passando un puntatore a funzione come argomento di funzione. Sembra anche che altri linguaggi (come HLSL) ora forniscano modi per gestire costrutti di alto livello come le funzioni di ordine superiore, o in grado di simularli con clever use of HLSL structures. sfortunatamente per ora sono bloccato con GLSL e non riesco a trovare alcun modo per simulare le funzioni di ordine superiore. È davvero impossibile nell'attuale (4.2) GLSL? O mi manca qualche trucco intelligente?Funzioni di secondo ordine in GLSL?
esempio comune di quello che sto cercando di realizzare:
int f(someType f2, int i) {
return f2(i);
}
E hai bisogno di questo tipo di (probabilmente costoso) indirezione in uno shader, per ottenere ...? –
A parte il fatto che questo tipo di astrazione sarebbe dolce da usare, il problema pratico che ho è il seguente: Ho una funzione f che commuta su un parametro p (diciamo, un int), e chiama un'altra funzione f2 , quale natura dipende dal valore commutato. Essere in grado di passare f2 come argomento mi permetterebbe di chiamare direttamente senza cambiare, poiché nel contesto della mia applicazione, so esattamente quale funzione chiamare all'interno di f quando si chiama f stessa. Non so davvero se è possibile, né quale sarebbe il costo, ma penso che andare su un interruttore di 100 casi sia probabilmente peggio. –
https://en.wikipedia.org/wiki/Defunctionalization – sigfpe