当您直接从DOM图像中加载WebGL纹理时,如何判断该图像是否具有Alpha通道?无论如何,除了根据文件名猜测外(例如“包含.PNG可能是RGBA,否则是RGB”)。 DOM图像中有一个宽度和高度,但是我什么都看不到,它是什么格式。即:]]
const img = await loadDOMImage(url); const format = gl.RGBA; //Does this always need to be RGBA? I'm wasting space in most cases where its only RGB const internalFormat = gl.RGBA; const type = gl.UNSIGNED_BYTE; //This is guaranteed to be correct, right? No HDR formats supported by the DOM? gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat, format, type, img);
我的加载函数看起来像这样的FWIW:
async loadDOMImage(url) {
return new Promise(
(resolve, reject)=>{
const img = new Image();
img.crossOrigin = 'anonymous';
img.addEventListener('load', function() {
resolve(img);
}, false);
img.addEventListener('error', function(err) {
reject(err);
}, false);
img.src = uri;
}
);
}
当您直接从DOM图像中加载WebGL纹理时,如何判断该图像是否具有Alpha通道?无论如何,除了根据文件名猜测外(例如,“包含.PNG可能是...
您如何判断图像是否具有Alpha通道?