2013-03-14 109 views
2

是一個three.js所shadermaterial使用這個頂點着色器通過着色器值,以全局變量

script id="vs" type="x-shader/x-vertex"> 

    uniform sampler2D map; 
    varying vec2 vUv; 

    void main() { 

    vUv = uv; 
    vec4 color = texture2D(map, vUv); 

    float r=color.r; 
    float g=color.g; 
    float b=color.b;      


    gl_Position = projectionMatrix * modelViewMatrix ; 
    } 

</script> 

的問題是:我怎麼能傳遞的R,G和B值的全局變量?

回答

0

從片段着色器中獲取結果的常見方式是將場景渲染爲紋理,然後從該紋理中讀取(在JavaScript程序中)要處理的數據。在文檔中查找「渲染到紋理」。

例子:http://mrdoob.github.com/three.js/examples/webgl_rtt.html

+0

感謝@Popov你知道我如何從紋理讀取數據?具體去掉每個頂點的顏色 – 2013-03-29 05:18:25

+0

您可以嘗試下面給出的答案:http://stackoverflow.com/questions/13475209/three-js-get-data-from-three-webglrendertarget。 – Popov 2013-03-29 20:48:15