рдирдорд╕реНрддреЗ, рдпрд╣рд╛рдБ рд╕реНрдерд┐рддрд┐ рд╣реИ:
const filmObj = _getFilmObj() /* draw obj somewhere else */
const renderer_1 = PIXI.autoDetectRenderer(width, height)
renderer_1.render(filmObj)
const filmTexture = new PIXI.Texture(new PIXI.BaseTexture(renderer_1.view))
renderer_1.destroy()
const artboardObj = new PIXI.Sprite(filmTexture)
const renderer_2 = PIXI.autoDetectRenderer(width, height)
renderer_2.render(artboardObj)
const artboardTexture =new PIXI.Texture(new PIXI.BaseTexture(renderer_2.view))
renderer_2.destroy()
/* render artboardTexture somewhere else */
рдЬрдм рдкрд░реАрдХреНрд╖рдг рдпрд╣ рд╕рдлрд╛рд░реА (рдЖрдИрдУрдПрд╕ / рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕) рдкрд░, renderer_2.view
рдЙрд▓реНрдЯрд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рдиреАрдЪреЗ fliped рд╣реИ filmObj
, рдЬрдмрдХрд┐ renderer_1.view
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ renderer_2
рдкрд░ рдЧрд▓рдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ renderer_1.view
ред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЬрд╛рдВрдЪреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рдЦрд░рд╛рдм рд╣реИ?
рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА:
CanvasRenderer
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдлрд╛рд░реА рдкрд░ рднреА рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИредрд╕рдлрд╛рд░реА/рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕/рдХреНрд░реЛрдо рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдиреАрдЪреЗ рдорд┐рд▓рд╛:
рдЕрдЬреАрдм! рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ ..
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдлрд╛рд░реА рдкрд░ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдЙрд▓реНрдЯрд╛ рдлрд╝реНрд▓рд┐рдк рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрдмрдХрд┐ рдХреНрд░реЛрдо рдЗрд╕реЗ рд╕рд╣реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЕрдм рдореИрдВ рд╕рдлрд╛рд░реА рдкрд░ baseTexture.flipY = true
рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдПрдХ рдЧрдВрджреЗ рд╣реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js
index 05258f6..82b1c84 100644
--- a/src/core/renderers/webgl/WebGLRenderer.js
+++ b/src/core/renderers/webgl/WebGLRenderer.js
@@ -396,6 +396,9 @@ WebGLRenderer.prototype.updateTexture = function (texture)
gl.bindTexture(gl.TEXTURE_2D, texture._glTextures[gl.id]);
+ if (texture.flipY) {
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1);
+ }
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultipliedAlpha);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.source);
рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЛ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдХреИрдирд╡рд╛рд╕ рдХреЙрд▓ рдЯреВрдбрд╛рдЯрд╛рдпреВрдЖрд░рдПрд▓() рдкрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВред рд▓реМрдЯрд╛рдИ рдЧрдИ рдЫрд╡рд┐ рдирдИ рд╕рдлрд╛рд░реА рдкрд░ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рдлрд╝реНрд▓рд┐рдк рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрдмрдХрд┐ рдкреБрд░рд╛рдиреА рд╕рдлрд╛рд░реА (7.1 рдкрд░реАрдХреНрд╖рдг) рдФрд░ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ рдЧреИрд░ рдлрд╝реНрд▓рд┐рдк рдЫрд╡рд┐ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ?
@holymonson рд╢рд╛рдпрдж рдкреБрд░рд╛рдиреА рд╕рдлрд╛рд░реА рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ?
рдЙрддреНрд╕реБрдХ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ?
рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдорд░рдиреЗ рдирд╣реАрдВ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП: рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╣рд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдФрд░ рдореБрдЭреЗ рдордЬрдмреВрд░ рдХреИрдирд╡рд╛рд╕ рдкреНрд░рддрд┐рдкрд╛рджрди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛ред
рдпрд╣ WebGL рдкреНрд░рд╕рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ premultipliedAlpha
; рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрджрд┐ premultipliedAlpha
рджреВрд╕рд░реЗ рд░реЗрдВрдбрд░рд░ рдХреЗ рд▓рд┐рдП false
ред рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреГрдердХ рдбреЗрдореЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдирдлрд░рдд рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд╛рдорд▓рд╛ рд╣реИ; рдХреЗрд╡рд▓ рд╕рдлрд╛рд░реА рдореЗрдВ toDataURL
рд╕реЗ рдЙрддреНрдкрдиреНрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
https://jsbin.com/qivife/14/edit?js ,output
рдХреНрдпрд╛ рдЫрд╡рд┐ рдХреЛ рдлрд╝реНрд▓рд┐рдк рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП toDataURL API рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
@redsend
рдЗрд╕рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ toDataURL рдФрд░ getImageData WebGL рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕рд╛рдордЧреНрд░реА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдорд╛рдирдХ рдореЗрдВ рднреА рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдкрд┐рдХреНрд╕реА рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
//if you want canvas
var canvas =renderer.extract.canvas(stage);
//if you want base64
var base64=renderer.extract.base64(stage);
var base64=renderer.extract.base64(stage); рдФрд░ рд╡рд░ рдХреИрдирд╡рд╛рд╕ =renderer.extract.canvas(stage); рдЙрд▓реНрдЯрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рдмрдирд╛ рдирд╣реАрдВ рд░рд╣рддрд╛ рд╣реИред рдХреЛрдИ рд╕реБрдЭрд╛рд╡
рдореИрдВ PIXI.RenderTexture рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЫрд╡рд┐ рдЖрдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рдЕрднреА рднреА рдЪрд┐рдкрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рдЗрд╕ рдереНрд░реЗрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреГрдкрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@redsend
рдЗрд╕рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ toDataURL рдФрд░ getImageData WebGL рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕рд╛рдордЧреНрд░реА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдорд╛рдирдХ рдореЗрдВ рднреА рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдкрд┐рдХреНрд╕реА рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: