WebGL 警告:texImage:Alpha-premult 和 y-flip 不推荐用于非 DOM-Element 上传
WebGL warning: texImage: Alpha-premult and y-flip are deprecated for non-DOM-Element uploads
所以我一直在尝试使用 Map-box 在我的应用程序中绘制坐标,但是当我提供 .png
文件作为标记时,我收到以下错误:
WebGL warning: texImage: Alpha-premult and y-flip are deprecated for non-DOM-Element uploads.
Screenshot
您是自己上传纹理还是通过 mapbox 上传?
无论如何,您可以通过 3 种方式上传纹理
- 通过 typedarrays 的原始数据
- 来自 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% 可以控制数据,因此您可以自己处理它。
所以我一直在尝试使用 Map-box 在我的应用程序中绘制坐标,但是当我提供 .png
文件作为标记时,我收到以下错误:
WebGL warning: texImage: Alpha-premult and y-flip are deprecated for non-DOM-Element uploads.
Screenshot
您是自己上传纹理还是通过 mapbox 上传?
无论如何,您可以通过 3 种方式上传纹理
- 通过 typedarrays 的原始数据
- 来自 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% 可以控制数据,因此您可以自己处理它。