WebGL 警告:texImage:Alpha-premult 和 y-flip 对于非 DOM 元素上传已弃用
Posted
技术标签:
【中文标题】WebGL 警告:texImage:Alpha-premult 和 y-flip 对于非 DOM 元素上传已弃用【英文标题】:WebGL warning: texImage: Alpha-premult and y-flip are deprecated for non-DOM-Element uploads 【发布时间】:2020-04-20 09:50:36 【问题描述】:所以我一直在尝试使用 Map-box 在我的应用程序中绘制坐标,但是当我提供 .png
文件作为标记时,我收到以下错误:
。
Screenshot
【问题讨论】:
【参考方案1】:您是自己上传纹理还是通过 mapbox 上传?
在任何情况下,您都可以通过 3 种方式上传纹理
-
通过类型数组的原始数据
来自 htmlImageElement、HTMLCanvasElement 或 HTMLVideoElement
来自 ImageBitmap
另外还有一些选项,当您上传时,您可以使用gl.pixelStorei
进行设置。两个选项是UNPACK_FLIP_Y_WEBGL
,设置为true它会在上传到GPU之前垂直翻转数据。 UNPACK_PREMULTIPLY_ALPHA_WEBGL
设置为 true 会在上传前将 RGB 预乘 alpha。
过去,所有 3 种上传数据的方法都尊重这些标志,但浏览器决定方法 (1) 和 (3) 不应继续使用这些标志,因此如果将它们设置为 true,您将收到消息它们已被弃用。
对于 ImageBitmap,它们被弃用的原因是 ImageBitmap itself has those options 所以你应该在那里使用它们,它们可以异步完成。对于 TypedArrays,由于您可以 100% 控制数据,因此您可以自己处理。
【讨论】:
以上是关于WebGL 警告:texImage:Alpha-premult 和 y-flip 对于非 DOM 元素上传已弃用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 texSubImage2D 在 webgl 中显示精灵?
WebGL - 发送数组缓冲区 VS 将图像/画布/位图从 CPU 发送到 GPU