2016-04-15 93 views
0

我是webgl的新手,現在正在嘗試做平面着色。我試過Gouraud陰影,它工作正常。所以我的第一步,實行扁平的陰影,我把我的片段着色器 #extension GL_OES_standard_derivatives : enable
if (!gl.getExtension('OES_standard_derivatives')) throw 'extension not support';
我initGL功能,保持相同的代碼的剩餘部分。WebGL:gl.getExtension('OES_standard_derivatives')沒有迴應

但是,畫布沒有出現,消息也沒有出現。通過在上面的代碼之前和之後添加一些警報消息,我猜問題是gl.getExtension('OES_standard_derivatives'))沒有響應,所以之後的任何代碼都不起作用(包括畫布部分)。

我已經做了一些搜索,但沒有發現類似的問題。
任何幫助,將不勝感激。

+0

'gl.getSupportedExtensions()'返回什麼。您可以打開一個控制檯並將其粘貼到'document.createElement(「canvas」)。getContext(「webgl」)。getSupportedExtensions()。join(「\ n」)'也許您的GPU不支持該擴展。 – gman

+0

是的,這是我的GPU問題。現在很好。感謝您的評論。 –

回答

0

如果您可以包含有關您的環境的更多信息以幫助理解問題。具體是這些問題:

  • 您使用的瀏覽器是?
  • 您使用的是什麼版本的WebGL?
  • 您使用純WebGL還是庫(例如Three.js)?
  • 你能發佈你所有的上下文設置代碼嗎?

這裏是一個自包含的腳本,報告到控制檯這個特定的擴展是否是可用的:

<html> 
<head> 
<script> 

    function test() { 
    var canvas = document.getElementById("sandbox"); 
    gl = canvas.getContext("webgl"); 

    if (!gl) 
     console.error("WebGL failed to initialize"); 
    else 
     console.debug("WebGL initialization successful"); 

    var extension = gl.getExtension("OES_standard_derivatives"); 

    if (!extension) 
     console.error("Extension 'OES_standard_derivatives' was not found"); 
    else 
     console.debug("Extension 'OES_standard_derivatives' was found"); 
    } 

</script> 
</head> 
<body onload="test();"> 
    <canvas id="sandbox" width="500" height="500" /> 
</body> 
</html> 

保存該到一個文件中,您使用的瀏覽器中打開它,檢查控制檯,看看發生了什麼。

請注意,在WebGL2中,此擴展已被提升爲核心配置文件。從WebGL OES_standard_derivatives specification

提升爲核心,不再作爲WebGL API 2.0規範中的擴展提供。需要GLSL #version 300 es。

+0

謝謝你,我發現這是我的GPU不支持。我改變了一臺電腦,現在它工作正常。 –