Utilizzo del codice shader [chiuso]

5

Sto iniziando il mio primo progetto in OpenGL / GLSL e mi stavo chiedendo, come lavori con il codice degli shader?

Perché deve essere const char e la sintassi higlighting mostra tutto nello stesso colore (come stringa) e quindi è difficile navigare nel codice.

const char *shader = ..."void main()\n"...;

Modifica il codice e aggiungi le virgolette o lo scrivi semplicemente con le virgolette dall'inizio? Grazie

modifica: utilizzando VS2012

    
posta rluks 29.01.2014 - 10:28
fonte

3 risposte

2

Una cosa che puoi fare per includere il codice shader nei file sorgente C (++) più conveniente è la definizione di una macro come questa:

#define GLSL(x) "#version #150\n" #x

Esempio:

const char* shader = GLSL(
    out vec4 outColor;
    void main() {
        outColor = vec4(1.0, 0.0, 0.0, 1.0);
    }
);

Questo ti darà una migliore formattazione e l'evidenziazione sintattica di base in stile C:

Nota che le nuove linee saranno ignorate, quindi qualsiasi istruzione del preprocessore deve essere esplicita.

    
risposta data 29.01.2014 - 18:40
fonte
1

alcuni usano file separati e li includono come risorse, alcuni usano macro, altri usano file esterni e li leggono in fase di runtime.

entrambe le opzioni di file esterne consentiranno l'evidenziazione della sintassi

e tecnicamente non hai bisogno di const char* , solo un char* lo farà (è implicitamente convertibile)

    
risposta data 29.01.2014 - 10:37
fonte
1

Puoi utilizzare il ShaderFrog appena rilasciato per lavorare con gli shader GLSL direttamente nel browser, con le informazioni complete di evidenziazione e debug della sintassi. Sono l'autore di questo strumento e l'ho creato per un modo accessibile per modificare gli shader GLSL da usare nelle applicazioni OpenGL.

    
risposta data 10.09.2015 - 23:58
fonte

Leggi altre domande sui tag