2013-01-31 30 views
0

舊的例子我可以谷歌與特定版本的Three.js工作。當我試圖與最新的一個簡單的例子,這是行不通的:在最新的three.js中處理着色器的正確方法是什麼?

function shaders() { 
    var vShader = [ 
     'void main() {', 
      'gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);', 
     '}' 
    ].join('\n'); 

    var fShader = [ 
     'void main() {', 
      'gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0);', 
     '}' 
    ].join('\n'); 

    material = new THREE.ShaderMaterial({ 
     vertexShader: vShader, 
     fragmentShader: fShader 
    }); 

    //material = new THREE.MeshBasicMaterial({color: 0x00ff00, wireframe: true}); 

    geometry = new THREE.SphereGeometry(50, 32, 32); 
    mesh = new THREE.Mesh(geometry, material); 

    scene.add(mesh); 
} 

完整代碼列表可在這裏:http://jsfiddle.net/doubleyou/Hhh89/

請注意,如果您取消註釋與材料註釋行分配,它將工作。所以,猜測,我以一種錯誤的方式初始化了着色器材質。

對於它的價值,Chrome根本不會顯示任何錯誤。即使我使着色器代碼無效,這很奇怪。

回答

0

終於得到了解釋。

我一直在使用CanvasRenderer。應該一直使用WebGLRenderer。

相關問題