copyTextureToTexture method
void
copyTextureToTexture(})
Implementation
void copyTextureToTexture(position, Texture srcTexture, dstTexture, {int level = 0}) {
var width = srcTexture.image.width;
var height = srcTexture.image.height;
var glFormat = utils.convert(dstTexture.format);
var glType = utils.convert(dstTexture.type);
textures.setTexture2D(dstTexture, 0);
// As another texture upload may have changed pixelStorei
// parameters, make sure they are correct for the dstTexture
_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY ? 1 : 0);
_gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha);
_gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment);
if (srcTexture is DataTexture) {
_gl.texSubImage2D(
_gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data);
} else {
if (srcTexture.isCompressedTexture) {
_gl.compressedTexSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[0].width,
srcTexture.mipmaps[0].height, glFormat, srcTexture.mipmaps[0].data);
} else {
_gl.texSubImage2D(
_gl.TEXTURE_2D, level, position.x, position.y, null, null, glFormat, glType, srcTexture.image);
}
}
// Generate mipmaps only when copying level 0
if (level == 0 && dstTexture.generateMipmaps) {
_gl.generateMipmap(_gl.TEXTURE_2D);
}
state.unbindTexture();
}