如何在WebGL中执行Mipmapping?

6

我正在学习WebGL,并阅读《WebGL编程指南》一书。然而,这本书忽略了有关纹理mipmap的主题。我尝试在官方OpenGL ES网站上搜索,但似乎无法得到我的问题的答案。在StackOverflow中也没有人问过类似的问题。

是否有人可以向我展示如何从头开始在WebGL中执行纹理mipmap?

1个回答

11
在WebGL中,您可以手动上传mipmaps-这就是gl.texImage2D中的level参数,或者您可以只上传级别0,然后使用gl.generateMipmap自动生成它们。
生成了mipmaps后,使用gl.texParameteri设置gl.TEXTURE_MIN_FILTERgl.NEAREST_MIPMAP_LINEAR(默认值),gl.NEAREST_MIPMAP_NEARESTgl.LINEAR_MIPMAP_NEARESTgl.LINEAR_MIPMAP_LINEAR
之后应该使用Mip mapping来采样该纹理。
我的理解是,只需要使用gl.generateMipmap(gl.TEXTURE_2D)和例如gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_LINEAR)就可以了。

谢谢你的回答。我想我明白了。我会尝试一下并回复你。 - Chong Lip Phang
如果我们要手动加载 mipmaps,必须指定所有的 mipmap 级别直到达到 11 吗?我尝试只使用级别 0 和级别 1,加载两个完全不同的图像,但画布为空白。级别-0 图像为 256256,而级别-1 图像为 128*128。 - Chong Lip Phang
3
需要指定所有的mipmap级别。 - Prabindh
2
这是一篇关于WebGL中mipmapping的文章:http://games.greggman.com/game/webgl-3d-textures/。例如,你应该知道`gl.generateMipmap`对于尺寸不是2的幂次方的纹理是无效的。 - gman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接