1

我正在使用twgl在webgl中渲染一些图像。我需要动态地将一个图像添加到这个2d纹理数组中。我在用twgl.创建纹理函数来执行此操作,直到知道存在问题。在我将一些新图像推送到图像数组并调用twgl.创建纹理将其传递给webgl,然后渲染我的对象,图像将不会正确显示,而会出现一个蓝色的正方形代替图像。当我再次手动渲染时,它会正确无误,并且在使用之前不会中断twgl.创建纹理再一次。

我认为这是因为此函数将生成一个新的webglTexture,而不是更新上一个

我想知道有没有一种方法可以用最后一个特殊数组更新最后一个纹理,这个数组将一些新图像放入其中?

**当我说image时,我指的是base64字符串或加载并缓存的url**

1答案1

重置为默认值

从v4.4.0开始,这是不可能的。twgl只是一个助手,它不会做任何事情,所以您可以随时手动完成。

函数loadImage(url){return new Promise((resolve,reject)=>{const img=新图像();img.onload=解析;img.onerror=拒绝;img.src=url;};});函数updateSlice(gl、texture、slice、img、options);const format=options.format | | gl.RGBA;const type=options.type | | gl.UNSIGNED。字节;常量级别=options.level |0;gl.bindTexture(gl.TEXTURE_2D_ARRAY,纹理);gl.texSubImage3D(gl.TEXTURE_2D_ARRAY,级别,0,0,切片,img.width,img.height,1,格式、类型、img);gl.生成位图(gl.TEXTURE_2D_ARRAY);}函数updateSliceFromImage(gl、texture、slice、url、options){加载图像(url)然后(e)=>{updateSlice(gl,纹理,切片,e.target,选项);});}
2
  • 什么时候这种能力会被添加到twgl? 评论 2018年2月3日9:18
  • 您如何使用您提供的这些功能?什么是“幻灯片”和“选项”? 评论 2019年8月19日21:27

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.