рдЕрд░реЗ! рдореИрдВ pixi.js рдХреЗ рдЕрдВрджрд░ рдПрдХ рддреАрдиред Js рдХреЗ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕реЗ рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреБрдЫ рдлрд┐рд▓реНрдЯрд░ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ , рдпрд╣рд╛рдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдПрдХ рдСрдлрд╕реНрдХреНрд░реАрди рдХреИрдирд╡рд╛рд╕ рдкрд░ рддреАрди in.js рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░:
const threeTexture = PIXI.Texture.from(threeApp.renderer.domElement)
const threeSprite = new PIXI.Sprite(threeTexture)
// divide by pixelratio to make it the correct size, on retinas it's 2
threeSprite.scale.x /= window.devicePixelRatio
threeSprite.scale.y /= window.devicePixelRatio
pixiApp.stage.addChild(threeSprite)
рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рдкрд╛рд╕ рд░реЗрдВрдбрд░ рд▓реВрдк рдореЗрдВ рд╣реИ
threeApp.draw()
threeSprite.texture.update() // tell pixi that threejs has changed
pixiApp.render()
рдореБрдЭреЗ рдФрд░ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ? рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдЕрдиреБрдХреВрд▓рди?
рд╡реИрд╕реЗ рднреА, рдЕрд╕рд▓реА рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рд╕реНрдХреНрд░реАрди рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рддреАрди .js рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдпрд╣ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ:
renderer.setSize(window.innerWidth, window.innerHeight)
рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рддреАрди.js рдХреЗ рдЧрд╛рдпрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ pixi.js рдЯреВрдЯрддрд╛ рд╣реИред
рдореИрдВ рдмрдирд╛рд╡рдЯ рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pixi.js рдХреИрд╕реЗ рдмрддрд╛рдКрдВ?
pixi.js
рд╕рдВрд╕реНрдХрд░рдг : 5.0.0-рдЖрд░рд╕реАthree.js
рд╕рдВрд╕реНрдХрд░рдг : 0.101.1рдЗрд╕рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд, рддреАрдиj рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ v4 рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ v5 рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрдирд╛рдпрд╛ред
рдореВрд▓ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрджрд▓рдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░ рдкрд┐рдХреНрд╕реА рдФрд░ рдереНрд░реАрдЬ рд░рд╛рдЬреНрдп рджреЛрдиреЛрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рдЕрднреА рдкреБрд░рд╛рдиреЗ рдбреЗрдореЛ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рдФрд░ http://www.html5gamedevs.com/forum/15-pixijs/ рдореЗрдВ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╣реАрдВ-рдХрд╣реАрдВ рдЯреЗрдХреНрд╕рдЪрд░ рд╢реЗрдпрд░рд┐рдВрдЧ рдкрд░ рднреА рдЪрд░реНрдЪрд╛ рд╣реБрдИред
рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЦреЛрдЬ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдлрд┐рд░ v5 рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╣реИ, рд╢реБрднрдХрд╛рдордирд╛рдПрдБ! рдЕрдЧрд░ рдЖрдк рдХрд╣реАрдВ рдЕрд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рджреЛрдиреЛрдВ рдЪреАрдЬреЛрдВ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рдПрдХ рдбреЗрдореЛ рднреА рдмрдирд╛рдпрд╛ рдЬрд╣рд╛рдБ 2d рдФрд░ 3D рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ SORTED рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдЬреЛ рдореИрдВрдиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ? https://github.com/pixijs/pixi.js/pull/5430 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 5.0.0-rp2 рдореЗрдВ рдлрд┐рдХреНрд╕ рд╣реИ
@ivanpopelyshev рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдЪрд░реНрдЪрд╛ рдФрд░ рдХреЛрдб рдХреЗ рдЗрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
gl.disable(gl.DEPTH_TEST)
gl.enable(gl.BLEND)
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
gl.disable(gl.STENCIL_TEST)
gl.disable(gl.CULL_FACE)
gl.frontFace( gl.CCW )
gl.cullFace( gl.FRONT )
gl.colorMask(true, true, true, true)
gl.activeTexture(gl.TEXTURE0)
var shaderManager = session.shaderManager
shaderManager._currentId = undefined
for (var i=0; i<shaderManager.attribState.length; i++)
shaderManager.attribState[i] = false
shaderManager.setShader(shaderManager.currentShader)
var blend = session.blendModeManager.currentBlendMode
if (blend in PIXI.blendModesWebGL) {
session.blendModeManager.currentBlendMode = undefined
session.blendModeManager.setBlendMode(blend)
}
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХрд╣рд╛рдБ рдбрд╛рд▓рд╛ рдЬрд╛рдП, рдФрд░ session
рд╡реЗрд░рд┐рдПрдмрд▓ рдХреНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ gl рддреАрди рдХреИрдирд╡рд╕ рдХрд╛ glcontext рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрд╣рд╛рдВ рд░рдЦрд╛ рд╣реИ?
https://codepen.io/marco_fugaro/pen/QYgJQY?editors=0010
(рдореБрджреНрджреЗ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рд╣реЛрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ)
рдореЗрд░реЗ рдкрд╛рд╕ 5.0.0-rc.2
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИрдВ, рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореИрдВ рдЗрд╕ рдкреБрд░рд╛рдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдИ рдЧрдИ рд╕рднреА рдЪреАрдЬреЗрдВ renderer.reset()
const threeTexture = PIXI.Texture.from(threeApp.renderer.domElement)
рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рдХреНрдпрд╛ рдЖрдкрдиреЗ # 5430 рдХреЛ рджреЗрдЦрд╛?
@marcofugaro рдХреЛрдИ рдЕрдиреНрдп рдЗрд╕ рдкрд░ рдЕрдиреБрд╡рд░реНрддреА?
@ivanpopelyshev @bigtimebuddy рдЖрдкрдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рдореИрдВрдиреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕ рдкрд░ рдПрдХ рдФрд░ рдЫреБрд░рд╛ рд▓рд┐рдпрд╛ред
@ivanpopelyshev рдЖрдкрдиреЗ рдкреАрдЖрд░ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ PIXI.Texture.from(threeApp.renderer.domElement)
рд╕рд╛рде рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдХреНрдпрд╛ рдерд╛? рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдмрд╣реБрдд рд╕реЗ рдЙрдиреНрдирдд рд╡реЗрдмрд▓реЙрдЧ рдирд╣реАрдВ рдЬрд╛рдирддрд╛)
рдпрд╣рд╛рдБ рдкрд┐рдХреНрд╕реА v5 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
https://codepen.io/marco_fugaro/pen/wOGpwv?editors=0010
рдХреБрдЫ рдореБрджреНрджреЗ рдореБрдЭреЗ рдорд┐рд▓реЗ:
context
рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:var renderer = new PIXI.WebGLRenderer(canvas.width, canvas.height, {
context: context, // shared context with threejs
рдореИрдВ рдЗрд╕реЗ v5 рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
return new PIXI.Application({
context: context, // shared context with threejs
рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдбреЗрдореЛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
рддреАрди .js рдмрдирд╛рд╡рдЯ рд╡рд╛рдИ рдкрд░ рдлрд╝реНрд▓рд┐рдк рд╣реИ (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рд╡реЗрдмрд▓реЙрдЧ)
рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рдмрдирд╛рд╡рдЯ рд╡рд┐рдкрд░реАрдд рддрд░реАрдХреЗ рд╕реЗ рдЦрд┐рдВрдЪрддреА рд╣реИ? рд╢рд╛рдпрдж рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдлрд┐рд░ рд╕реЗ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдореИрдВрдиреЗ рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рддрдп рдХрд┐рдпрд╛, рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдХреЛрдб рдХрд╛ рдПрдХ рдбреЗрдореЛ рдмрдирд╛рдКрдВрдЧрд╛ред рд╡рд╣рд╛рдБ v4 рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ Pixi рд░реЗрдВрдбрд░рдЯрд╛рд░реНрд╕ (v5 рд░реЗрдВрдбрд░рдЯреЗрдХреНрдЪрд░реНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЗ рд▓рд┐рдП рдкреИрдЪ рд╣реИред
@ivanpopelyshev рдХреНрдпрд╛ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ v5 рдмрд╛рд╣рд░ рд╣реИ? ЁЯЩП
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдереАред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдмрд╛рд╕реА рдмреЙрдЯ рдирд╣реАрдВ
рдЕрдм рддрдХ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдХреЛрдбрдкреЗрди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИрдХ рд╣реБрдЖ рдпрд╛ рдирд╣реАрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВрдиреЗ рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рддрдп рдХрд┐рдпрд╛, рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдХреЛрдб рдХрд╛ рдПрдХ рдбреЗрдореЛ рдмрдирд╛рдКрдВрдЧрд╛ред рд╡рд╣рд╛рдБ v4 рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ Pixi рд░реЗрдВрдбрд░рдЯрд╛рд░реНрд╕ (v5 рд░реЗрдВрдбрд░рдЯреЗрдХреНрдЪрд░реНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЗ рд▓рд┐рдП рдкреИрдЪ рд╣реИред