有没有一种方法可以在与gl.bindTexture绑定后检索纹理的维度



我有一个函数,可以将纹理从服务器加载到我的WebGL上下文中,如下所示:

Future<Texture> loadTexture(String path) {
  return new ImageElement(src: 'assets/' + path)
    .onLoad.first.then((e) {
      var texture = _gl.createTexture();
      _gl.bindTexture(TEXTURE_2D, texture);
      _gl.texImage2DUntyped(TEXTURE_2D, 0, RGBA, RGBA, UNSIGNED_BYTE, e.target);
      _gl.texParameteri(TEXTURE_2D, TEXTURE_MAG_FILTER, NEAREST);
      _gl.texParameteri(TEXTURE_2D, TEXTURE_MIN_FILTER, LINEAR_MIPMAP_NEAREST);
      _gl.texParameteri(TEXTURE_2D, TEXTURE_WRAP_S, CLAMP_TO_EDGE);
      _gl.texParameteri(TEXTURE_2D, TEXTURE_WRAP_T, CLAMP_TO_EDGE);
      _gl.generateMipmap(TEXTURE_2D);
      _gl.bindTexture(TEXTURE_2D, null);
      return texture;
    });
}

然而,为了将我的纹理坐标从像素映射到0,0 - 1,1,我需要知道纹理的实际大小。如果给定该代码返回的Texture,可以很容易地检索维度,那么我不想引入从该函数返回的类。

有没有任何方法可以直接从WebGL纹理中检索到的坐标?

我知道我可以从源ImageElement获得它们,但如果我能避免这种情况,API会更好。

否(至少在JavaScriptWebGL中,不确定Dart-WebGL绑定)。

在OpenGL 3.x和OpenGL ES 3.1中,带有GL_TEXTURE_WIDTH/_HEIGHT参数的getTexLevelParameter API调用可以检索当前绑定纹理的特定细节级别的纹理尺寸。此API调用在WebGL中不可用(1或2,WebGL 2仅基于OpenGL 3.0)。

最新更新