Javascript 使用WebGL重复纹理

Javascript 使用WebGL重复纹理,javascript,webgl,texture2d,Javascript,Webgl,Texture2d,我需要在单个元素中重复纹理。甚至在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, c

我需要在单个元素中重复纹理。甚至在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);

谢谢你的帮助

重要的是要知道这些参数是必须在每个纹理上设置的,它们不是全局设置。因此,您的代码可能如下所示:

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时不必这样做,重要的是首先绑定了适当的纹理。如果您这样设置wrap,但它仍然不起作用,那么您可能看到了一个驱动程序错误


也就是说,我记得默认的纹理包裹模式无论如何都应该是“重复”,所以我不确定为什么会出现问题。

一些浏览器操作系统GPU组合只允许您在两个纹理的功率下设置gl.REPEAT。截至2016年,Safari El Capitan-HD4000的情况仍然如此