Browse Source

[ts][webgl] Fixes #2138, mip maps weren't generated in all cases.

Mario Zechner 3 years ago
parent
commit
1a0cb86b52
1 changed files with 15 additions and 0 deletions
  1. 15 0
      spine-ts/spine-webgl/src/GLTexture.ts

+ 15 - 0
spine-ts/spine-webgl/src/GLTexture.ts

@@ -51,6 +51,8 @@ export class GLTexture extends Texture implements Disposable, Restorable {
 		this.bind();
 		gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter);
 		gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, GLTexture.validateMagFilter(magFilter));
+		this.useMipMaps = GLTexture.usesMipMaps(minFilter);
+		if (this.useMipMaps) gl.generateMipmap(gl.TEXTURE_2D);
 	}
 
 	static validateMagFilter (magFilter: TextureFilter) {
@@ -66,6 +68,19 @@ export class GLTexture extends Texture implements Disposable, Restorable {
 		}
 	}
 
+	static usesMipMaps(filter: TextureFilter) {
+		switch (filter) {
+			case TextureFilter.MipMap:
+			case TextureFilter.MipMapLinearLinear:
+			case TextureFilter.MipMapLinearNearest:
+			case TextureFilter.MipMapNearestLinear:
+			case TextureFilter.MipMapNearestNearest:
+				return true;
+			default:
+				return false;
+		}
+	}
+
 	setWraps (uWrap: TextureWrap, vWrap: TextureWrap) {
 		let gl = this.context.gl;
 		this.bind();