美文网首页
WebGL和OpenGL的差异 - UNPACK_PREMULT

WebGL和OpenGL的差异 - UNPACK_PREMULT

作者: 牛顿不相信二段跳 | 来源:发表于2019-01-13 17:05 被阅读0次

WebGL可以使用UNPACK_PREMULTIPLY_ALPHA_WEBGL功能,向GPU传输纹理数据时自动给Red、Green、Blue预乘Alpha

webgl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);

因为Premultiplied Alpha格式可以方便对纹理进行采样,所以UNPACK_PREMULTIPLY_ALPHA_WEBGL功能很实用。然而OpenGL并没有提供类似的API,在翻译WebGL渲染到OpenGL渲染时可能遇到问题,下面提供一些解决方案

  1. 发布项目时将纹理资源打包成Premultiplied Alpha格式,这是最好的方案,运行时没有任何性能损耗;
  2. 生成纹理数据时编程实现预乘,循环将Red、Green、Blue乘以Alpha得到预乘后的数据;
  3. 实现Shader进行预乘,将初始的纹理数据绘制到RenderTarget,此RenderTarget即为预乘后的纹理;

相关文章

网友评论

      本文标题:WebGL和OpenGL的差异 - UNPACK_PREMULT

      本文链接:https://www.haomeiwen.com/subject/crkldqtx.html