我有一个函数可以将服务器中的纹理加载到我的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 Texture检索to的坐标?
我知道我可以从源ImageElement
获取它们,但如果我可以避免这种情况,那么API会更好。
答案 0 :(得分:1)
否(至少在JavaScript WebGL中,不确定Dart WebGL绑定)。
在OpenGL 3.x和OpenGL ES 3.1中,带有GL_TEXTURE_WIDTH / _HEIGHT参数的getTexLevelParameter API调用可以检索当前绑定纹理的特定细节级别的纹理尺寸。此API调用在WebGL中不可用(1或2,WebGL 2仅基于OpenGL 3.0)。