2013-07-01 15 views
11

Sto cercando di capire come simulare console.log negli shader webgl che sono scritti in GLSL. È facile ottenere messaggi di errore, ma non riesco a capire come stampare messaggi personalizzati.Come console.log negli shader webgl?

Fondamentalmente voglio stampare roba nella console del browser:

<script id="shader-fs1" type="x-shader/x-fragment"> 
    void main(void) 
    { 
    //console.log doesn't work here since it's GLSL not javascript 
    gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); 
    } 
</script> 

Qualche suggerimento?

risposta

1

Attualmente non esiste un modo noto per l'emissione di dati da GLSL in WebGL eccetto tramite il risultato desiderato (schermo/colore dell'immagine). Se non lo fai, ti suggerisco di dare un'occhiata allo Learning WebGL, anche kick.js potrebbe esserti utile.

3

Dopo la compilazione dello shader si può fare qualcosa di simile:

if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { 
    alert(gl.getShaderInfoLog(shader)); 
} 

E vi mostrerà eventuali messaggi di errore durante la compilazione. GLSL non è in grado di inviare dati al programma in qualsiasi altra forma, ma framebuffer/texture, quindi è possibile controllare solo ciò che accade controllando i colori di output. L'ispettore WebGL potrebbe essere utile, come indicato da Michael, ma non tanto per gli shader, ma per il debug generale delle app WebGL