Я создаю renderTexture в babylon и затем сохраняю его в pixi js спрайт, используя этот каждый кадр ...
convertToSpriteFromRT = (textureCanvas: HTMLCanvasElement, textureContext: CanvasRenderingContext2D, renderTexture: RenderTargetTexture, sprite: Sprite, other: Function) => {
EngineEx.CurrentScene.scene.registerBeforeRender(() => {
// PROBABLY SHOULDNT BE USING registerAfterRender | will polish
renderTexture.render();
const size = renderTexture.getSize();
const pixels = renderTexture.readPixels().buffer;
if (textureCanvas.width !== size.width) {
textureCanvas.width = size.width;
textureCanvas.height = size.height;
}
const imageData = new ImageData(new Uint8ClampedArray(pixels), size.width, size.height);
textureContext.putImageData(imageData, 0, 0);
sprite.texture.baseTexture.update();
other();
});
};
Затем я позиционирую и масштабирую спрайт вот так ..
this.pixiPortrait.scale.y -= 8.0;
this.pixiPortrait.scale.x += 7.0;
this.pixiPortrait.position.x -= 1150;
this.pixiPortrait.position.y += 300;
И я добавляю спрайт в контейнер в функции обратного вызова other (), которую вы видите в первом фрагменте кода.
SpriteConverter._instance.convertToSpriteFromRT(textureCanvas, textureContext, this.renderTexture, this.pixiPortrait, () => {
if (this.isReady == false) {
this.portraitContainer.addChild(this.pixiPortrait);
this.content.addChild(this.portraitContainer);
this.isReady = true;
}
});
И по какой-то причине спрайт масштабируется как Я изменяю размер окна (я использую chrome). Есть идеи, что это может быть?