我只想从纹理(png图像)制作mipmap。纹理工作正常,但未生成 mipmap。
标题中出现错误警告,我也得到了:
GL_INVALID_OPERATION: Texture format does not support mipmap generation.
world.GL.gl.activeTexture(world.GL.gl['TEXTURE' + t]);
world.GL.gl.bindTexture(world.GL.gl.TEXTURE_2D, object.textures[t]);
if(world.GL.extTFAnisotropic) {
world.GL.gl.texParameterf(world.GL.gl.TEXTURE_2D,
world.GL.extTFAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,
world.GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT);
}
world.GL.gl.pixelStorei(world.GL.gl.UNPACK_FLIP_Y_WEBGL, true);
world.GL.gl.texImage2D(world.GL.gl.TEXTURE_2D,
0, world.GL.gl.RGBA,
1,
1,
0,
world.GL.gl.RGBA,
world.GL.gl.UNSIGNED_BYTE,
object.textures[t]);
world.GL.gl.texParameteri(world.GL.gl.TEXTURE_2D, world.GL.gl.TEXTURE_MAG_FILTER, world.GL.gl.LINEAR);
world.GL.gl.texParameteri(world.GL.gl.TEXTURE_2D, world.GL.gl.TEXTURE_MIN_FILTER,
world.GL.gl.LINEAR_MIPMAP_NEAREST);
world.GL.gl.generateMipmap(world.GL.gl.TEXTURE_2D);
如果我使用颜色
new Uint8Array([0, 0, 255, 255])
来替换纹理[t],那么效果很好。
有什么建议吗?
我在docs中发现源不是
webGlTexture
的类型,它是图像数据或者可以是HTMLImageElement。
我已经有了 HTMLImageElement
object.textures[t].image
world.GL.gl.texImage2D(world.GL.gl.TEXTURE_2D,
0, world.GL.gl.RGBA,
200,
50,
0,
world.GL.gl.RGBA,
world.GL.gl.UNSIGNED_BYTE,
object.textures[t].image);