diff --git a/packages/core/src/textures/GLTexture.js b/packages/core/src/textures/GLTexture.js index c3fb8dc..6fc4af0 100644 --- a/packages/core/src/textures/GLTexture.js +++ b/packages/core/src/textures/GLTexture.js @@ -20,14 +20,20 @@ /** * Texture style dirty flag - * @type {number} + * @member {number} */ this.dirtyStyleId = -1; /** * Whether mip levels has to be generated - * @type {boolean} + * @member {boolean} */ this.mipmap = false; + + /** + * WrapMode copied from baseTexture + * @member {number} + */ + this.wrapMode = 33071; } } diff --git a/packages/core/src/textures/GLTexture.js b/packages/core/src/textures/GLTexture.js index c3fb8dc..6fc4af0 100644 --- a/packages/core/src/textures/GLTexture.js +++ b/packages/core/src/textures/GLTexture.js @@ -20,14 +20,20 @@ /** * Texture style dirty flag - * @type {number} + * @member {number} */ this.dirtyStyleId = -1; /** * Whether mip levels has to be generated - * @type {boolean} + * @member {boolean} */ this.mipmap = false; + + /** + * WrapMode copied from baseTexture + * @member {number} + */ + this.wrapMode = 33071; } } diff --git a/packages/core/src/textures/TextureSystem.js b/packages/core/src/textures/TextureSystem.js index 7781308..e6c3004 100644 --- a/packages/core/src/textures/TextureSystem.js +++ b/packages/core/src/textures/TextureSystem.js @@ -1,6 +1,7 @@ import System from '../System'; import GLTexture from './GLTexture'; import { removeItems } from '@pixi/utils'; +import { WRAP_MODES } from '@pixi/constants'; /** * @class @@ -49,6 +50,8 @@ this.CONTEXT_UID = this.renderer.CONTEXT_UID; + this.webGLVersion = this.renderer.context.webGLVersion; + const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); this.boundTextures.length = maxTextures; @@ -273,12 +276,22 @@ { const glTexture = texture._glTextures[this.CONTEXT_UID]; - glTexture.mipmap = texture.mipmap && texture.isPowerOfTwo; if (!glTexture) { return; } + if (this.webGLVersion !== 2 && !texture.isPowerOfTwo) + { + glTexture.mipmap = false; + glTexture.wrapMode = WRAP_MODES.CLAMP; + } + else + { + glTexture.mipmap = texture.mipmap; + glTexture.wrapMode = texture.wrapMode; + } + if (texture.resource && texture.resource.style(this.renderer, texture, glTexture)) { // style is set, dont do anything! @@ -307,8 +320,8 @@ gl.generateMipmap(texture.target); } - gl.texParameteri(texture.target, gl.TEXTURE_WRAP_S, texture.wrapMode); - gl.texParameteri(texture.target, gl.TEXTURE_WRAP_T, texture.wrapMode); + gl.texParameteri(texture.target, gl.TEXTURE_WRAP_S, glTexture.wrapMode); + gl.texParameteri(texture.target, gl.TEXTURE_WRAP_T, glTexture.wrapMode); if (glTexture.mipmap) {