Domanda

Shaders possono avere un sacco di diversi nomi uniformi + attributi. Come posso fare un sistema che funziona nel caso in generale, in modo che io non devo conoscere il nome di ciascun uniforme dello shader in anticipo e hardcode a codice per ottenere la sua posizione. Io uso OpenGL.

È stato utile?

Soluzione

Purtroppo, ad un certo punto, avrete bisogno di sapere quali sono i nomi uniformi nello shader sono, e che cosa si riferiscono a ... non c'è proprio nessun modo per aggirare questo.

La maggior parte di lavoro motori di grafica / gioco per convenzione - uniformi certo sono impostati dal motore, e shader usarli come necessario. Alcuni aggiungere la configurazione, in modo che ogni shader può specificare cosa uniformi richiede, ma in genere, i nomi sono ancora fatto per convenzione.

Altri suggerimenti

Utilizzare una convenzione di denominazione, o analizzare la stringa dello shader te stesso per ottenere il tipo, simbolo e identificatore di stoccaggio opzionale. La prima opzione mette una responsabilità sul programmatore dello shader, mentre quest'ultima soluzione pone l'onere per il programmatore di applicazioni. Tale codice può essere reso molto più elegante ed efficiente utilizzando l'estensione GL _ ARB _ _ uniforme tampone _ oggetto, che è stato promosso nucleo in OpenGL 3.1

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top