Reputation:
https://webgl2fundamentals.org/webgl/lessons/webgl-3d-textures.html
In the link above, I have to create a new image and after loading I have to send it to the buffer.
var image = new Image();
image.src = "resource/1.png";
image.onload = ()=>{
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
gl.generateMipmap(gl.TEXTURE_2D);
}
How to preload an image and use it?
var image = "data";
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
gl.generateMipmap(gl.TEXTURE_2D);
Upvotes: 2
Views: 133
Reputation: 8123
You could use an async function for this:
async function loadImage(src) {
const image = new Image();
image.src = src;
return new Promise((resolve,reject)=>{
image.onload = ()=>resolve(image);
image.onerror = ()=>reject(new Error(`Failed to load image at "${src}"`));
});
}
let img = await loadImage("resource/1.png");
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);
gl.generateMipmap(gl.TEXTURE_2D);
Upvotes: 2