WebGL:INVALID_OPERATION:texImage2D:无绑定PIXEL_UNPACK_BUFFER - Mipmap

问题描述 投票:0回答:1

我只想从纹理(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],那么效果很好。

有什么建议吗?

webgl webgl2 mipmaps
1个回答
0
投票

我在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);
© www.soinside.com 2019 - 2024. All rights reserved.