import { Scene } from "./Scene"
import { TextureLayer } from "./TextureLayer";



export class ImageLayer extends TextureLayer {


  constructor(
    scene: Scene,
    image: HTMLImageElement | HTMLCanvasElement,
    width : number, 
    height : number,
    filterType: GLint = scene.gl.LINEAR,
    fragmentShader: string | null = null
  ) {
    const gl = scene.gl;

    // Create a texture.
    let texture = gl.createTexture()!;
    gl.bindTexture(gl.TEXTURE_2D, texture);

    // Set the parameters so we can render any size image.
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filterType);
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filterType);

    //Upload the image into the texture.
    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);

    super(scene, texture, image.width, image.height, width, height, fragmentShader)

  }

}




