我正在巴比伦创建一个renderTexture,然后通过使用每一帧将其存储到pixijs精灵中...
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)。关于这可能是什么想法?