如何在WebGL中执行Mipmapping?

Cho*_*ang 6 webgl

我正在学习WebGL并阅读"WebGL编程指南"一书.但是,这本书省略了纹理mipmapping的主题.我试图搜索官方的OpenGL ES网站,但似乎无法得到我的问题的答案.在StackOverflow中没有人问过类似的问题.

有人能告诉我,从开始到结束,如何在WebGL中执行纹理mipmapping?

Tom*_*mmy 10

在WebGL中,您可以手动上传mip贴图 - 这就是level参数所在gl.texImage2D- 或者您只需上传0级然后用于gl.generateMipmap为您生成它们.

一旦你的纹理贴图生成,使用gl.texParameteri设定gl.TEXTURE_MIN_FILTERgl.NEAREST_MIPMAP_LINEAR(默认值), gl.NEAREST_MIPMAP_NEAREST,gl.LINEAR_MIPMAP_NEARESTgl.LINEAR_MIPMAP_LINEAR.

然后应使用Mip贴图对该纹理进行采样.

我的理解是它应该像使用gl.generateMipmap(gl.TEXTURE_2D)和例如一样简单gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_LINEAR).

  • 是的,您需要指定所有mipmap级别 (3认同)
  • [这里有一篇文章介绍了 WebGL 中的 mipmapping](http://games.greggman.com/game/webgl-3d-textures/)。例如,您应该知道“gl.generateMipmap”不适用于尺寸不是 2 的幂的纹理。 (2认同)