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 种方式上传纹理

  1. 通过 typedarrays 的原始数据
  2. 来自 HTMLImageElement、HTMLCanvasElement 或 HTMLVideoElement
  3. 来自 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% 可以控制数据,因此您可以自己处理它。