WebGL:gl.getExtension(';OES#U标准#U衍生工具';)不';不回答

WebGL:gl.getExtension(';OES#U标准#U衍生工具';)不';不回答,webgl,Webgl,我是webgl新手,现在正在尝试进行平面着色。我试过古罗阴影,效果很好。因此,作为实现平面着色的第一步,我将 #扩展GL_OES_标准_衍生工具:启用 在我的片段着色器和 if(!gl.getExtension('OES_标准_衍生品')) 抛出“扩展不支持” 在我的initGL函数中,代码的其余部分保持不变 然而,画布没有出现,消息也没有出现。通过在上述代码之前和之后添加一些警报消息,我猜问题在于gl.getExtension('OES_标准_衍生品'))没有响应,因此在此之后的任何代码都无法

我是webgl新手,现在正在尝试进行平面着色。我试过古罗阴影,效果很好。因此,作为实现平面着色的第一步,我将
#扩展GL_OES_标准_衍生工具:启用
在我的片段着色器和
if(!gl.getExtension('OES_标准_衍生品'))
抛出“扩展不支持”
在我的initGL函数中,代码的其余部分保持不变

然而,画布没有出现,消息也没有出现。通过在上述代码之前和之后添加一些警报消息,我猜问题在于
gl.getExtension('OES_标准_衍生品'))
没有响应,因此在此之后的任何代码都无法工作(包括画布部分)

我做了一些搜索,但没有发现类似的问题。

任何帮助都将不胜感激。

如果您能提供有关您的环境的更多信息,这将有助于了解问题。具体而言,这些问题:

  • 你用的是什么浏览器
  • 您使用的是什么版本的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>

功能测试(){
var canvas=document.getElementById(“沙盒”);
gl=canvas.getContext(“webgl”);
如果(!gl)
控制台错误(“WebGL未能初始化”);
其他的
调试(“WebGL初始化成功”);
var扩展=总账getExtension(“OES_标准_衍生品”);
如果(!扩展名)
控制台错误(“未找到扩展“OES_标准_衍生品”);
其他的
调试(“发现扩展“OES_标准_衍生品”);
}
将其保存到文件中,在您使用的浏览器中打开,然后检查控制台以查看发生了什么

注意,在WebGL2中,此扩展已升级到核心配置文件。从:

升级为core,不再作为WebGL API 2.0规范中的扩展提供。需要GLSL#版本300 es


如果您能提供更多关于您的环境的信息,这将有助于理解问题。具体而言,这些问题:

  • 你用的是什么浏览器
  • 您使用的是什么版本的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>

功能测试(){
var canvas=document.getElementById(“沙盒”);
gl=canvas.getContext(“webgl”);
如果(!gl)
控制台错误(“WebGL未能初始化”);
其他的
调试(“WebGL初始化成功”);
var扩展=总账getExtension(“OES_标准_衍生品”);
如果(!扩展名)
控制台错误(“未找到扩展“OES_标准_衍生品”);
其他的
调试(“发现扩展“OES_标准_衍生品”);
}
将其保存到文件中,在您使用的浏览器中打开,然后检查控制台以查看发生了什么

注意,在WebGL2中,此扩展已升级到核心配置文件。从:

升级为core,不再作为WebGL API 2.0规范中的扩展提供。需要GLSL#版本300 es


gl.getSupportedExtensions()
返回什么。您只需打开控制台并将其粘贴到
document.createElement(“canvas”).getContext(“webgl”).getSupportedExtensions().join(“\n”)
也许您的GPU不支持该扩展。是的,这是我的GPU问题。现在没事了。感谢您的评论。
gl.getSupportedExtensions()
返回了什么。您只需打开控制台并将其粘贴到
document.createElement(“canvas”).getContext(“webgl”).getSupportedExtensions().join(“\n”)
也许您的GPU不支持该扩展。是的,这是我的GPU问题。现在没事了。谢谢你的评论。谢谢你,我发现我的GPU不受支持。我换了一台电脑,现在可以正常工作了。谢谢你,我发现我的GPU不受支持。我换了一台电脑,现在可以用了。