【问题标题】:An error when try to use mipmaping in three.js尝试在 three.js 中使用 mipmaping 时出错
【发布时间】:2014-08-06 10:27:25
【问题描述】:

我正在尝试在three.js 纹理中使用 mipmaps 生成。

创建纹理时,我将大小为 512x512 的图像分配给 mipmaps[0]。
因此,如果我的理解是正确的,WebGL 应该使用这个图像来生成更小的 mipmaps 纹理。但随后我看到呈现黑色纹理并出现如下错误:

in chrome

WebGL:drawElements:绑定到纹理单元 0 的纹理不是 可渲染。它可能不是 2 的幂并且具有不兼容的纹理 过滤或不是“纹理完整”。或者纹理是 Float 或 具有线性滤波的半浮点型,而 OES_float_linear 或 OES_half_float_linear 扩展未启用。

在火狐中

错误:WebGL:纹理将被渲染为黑色, 根据 OpenGL ES 2.0.24 规范第 3.8.2 节,因为它是 2D 纹理,带有需要 mipmap 的缩小过滤器,而不是 mipmap 完成(如第 3.7.10 节中所定义)。

创建纹理的代码如下:

var texture = THREE.ImageUtils.loadTexture( 'images/512.png', undefined, function() {
    texture.repeat.set( 1, 1 );
    texture.mipmaps[ 0 ] = texture.image;
    texture.generateMipmaps = true;
    texture.needsUpdate = true;
};

使用画布而不是图像时同样的问题。

澄清一下:

  • 图像是 2 的幂
  • 图片已加载

谁能告诉我在哪里挖掘这个问题?

【问题讨论】:

  • 据我所知,它已经为您生成了 mipmap,您无​​需显式设置 mipmaps 数组。设置可能会破坏它。
  • 是的,我理解我的错误。渲染后我对空纹理的 mipmaps 数组感到困惑,并决定 mipmaping 不起作用。实际上它应该是空的,因为 webgl 不会返回生成的图像堆栈。

标签: javascript three.js webgl mipmaps


【解决方案1】:

问题解决了。我已经明白我的错误了。渲染后我对空纹理的 mipmaps 数组感到困惑,并决定 mipmaping 不起作用。实际上它应该是空的,因为 webgl 不会返回生成的图像堆栈。

【讨论】:

    猜你喜欢
    • 2013-10-19
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    相关资源
    最近更新 更多