WebGL:gl.getExtension(' OES_standard_derivatives')没有'回应

时间:2016-04-15 03:12:56

标签: webgl

我是webgl的新手,现在正尝试做平面着色。我尝试过Gouraud阴影,效果很好。因此,作为实施平面着色的第一步,我提出了 #extension GL_OES_standard_derivatives : enable 在我的片段着色器和
if (!gl.getExtension('OES_standard_derivatives')) throw 'extension not support';
在我的initGL函数中,代码的其余部分保持不变。

然而,画布并没有出现,消息也没有出现。通过在上面的代码之前和之后添加一些警报消息,我想问题是gl.getExtension('OES_standard_derivatives'))没有响应,所以在此之后的任何代码都不起作用(包括画布部分)。

我做了一些搜索,但没有找到类似的问题。
任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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。