【问题标题】:Repeated textures with WebGL使用 WebGL 重复纹理
【发布时间】:2011-12-04 03:15:06
【问题描述】:

我需要在单个元素中重复纹理。甚至在 WebGL 中也有可能吗?

我尝试了以下任一方法,但都没有成功。

ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_S, ctx.CLAMP_TO_EDGE);
ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_T, ctx.CLAMP_TO_EDGE);

ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_S, ctx.REPEAT);
ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_T, ctx.REPEAT);

感谢您的帮助!

【问题讨论】:

    标签: javascript webgl texture2d


    【解决方案1】:

    重要的是要知道这些参数是您必须在每个纹理上设置的东西,它们不是全局设置。所以你的代码应该看起来像这样:

    gl.bindTexture(gl.TEXTURE_2D, texture);
    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);
    // Set up more texture state, like filter modes...
    

    当然,调用 teximage2D 时不必这样做,重要的是你已经先绑定了合适的纹理。如果您以这种方式设置换行但仍然无法正常工作,您可能正在查看驱动程序错误。

    也就是说,我记得默认的纹理环绕模式应该是 REPEAT,所以我不确定你为什么会遇到问题。

    【讨论】:

      【解决方案2】:

      一些浏览器-操作系统-GPU 组合只允许您在二次幂纹理上设置 gl.REPEAT。到 2016 年,Safari-El Capitan-HD4000 的情况仍然如此。

      【讨论】:

        猜你喜欢
        • 2012-03-15
        • 2018-05-30
        • 2019-07-31
        • 2016-08-28
        • 1970-01-01
        • 2016-12-04
        • 1970-01-01
        • 2012-02-21
        • 2013-11-20
        相关资源
        最近更新 更多