This commit is contained in:
gbrochar 2020-11-24 19:24:32 +01:00
parent ce7914732e
commit aef5e53cc3
1 changed files with 14 additions and 6 deletions

View File

@ -2,6 +2,7 @@
* Initialize a texture and load an image.
* @param {any} gl the gl context
* @param {string} url the url of the texture
* @return {any} the loaded texture
*/
export function loadTexture(gl: any, url: any) {
const texture = gl.createTexture();
@ -19,7 +20,7 @@ export function loadTexture(gl: any, url: any) {
const border = 0;
const srcFormat = gl.RGBA;
const srcType = gl.UNSIGNED_BYTE;
const pixel = new Uint8Array([0, 0, 255, 255]); // opaque blue
const pixel = new Uint8Array([0, 0, 255, 255]);
gl.texImage2D(gl.TEXTURE_2D, level, internalFormat,
width, height, border, srcFormat, srcType,
pixel);
@ -28,7 +29,7 @@ export function loadTexture(gl: any, url: any) {
image.onload = function() {
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, level, internalFormat,
srcFormat, srcType, image);
srcFormat, srcType, image);
// WebGL1 has different requirements for power of 2 images
// vs non power of 2 images so check if the image is a
@ -39,8 +40,10 @@ export function loadTexture(gl: any, url: any) {
} else {
// No, it's not a power of 2. Turn off mips and set
// wrapping to clamp to edge
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_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, gl.LINEAR);
}
};
@ -49,6 +52,11 @@ export function loadTexture(gl: any, url: any) {
return texture;
}
/**
* Check if number is power of 2
* @param {number} value the number to check
* @return {boolean} true if is power of 2 else false
*/
function isPowerOf2(value: number) {
return (value & (value - 1)) == 0;
}
return (value & (value - 1)) == 0;
}