2

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);
1
  • Here's an answer to the question you just asked that was closed (incorrectly, IMHO) and that you deleted: pastebin.com/DpJgmPDh Happy coding! Details about .call here. Details about arrow functions here and in my book (see my profile). Commented Oct 28, 2021 at 8:58

1 Answer 1

2

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);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.