You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PIXI.RenderTexture无法渲染问题求助:仅显示黑色精灵

问题:PIXI.js RenderTexture 无法渲染白色精灵

我搭建了一个简单的PIXI.js应用,尝试用PIXI.RenderTexture渲染白色方形精灵,但只显示了通过常规stage.addChild添加的黑色精灵。

黑色精灵的代码:

const sprite1 = new PIXI.Sprite(PIXI.Texture.from('bc-sq-200.png'));
sprite1.x = 500;
app.stage.addChild(sprite1);

白色精灵的实现代码:

const sprite2 = new PIXI.Sprite(PIXI.Texture.from('wt-sq-200.png'));
// app.stage.addChild(sprite2);

const renderer = PIXI.autoDetectRenderer();
const renderTexture = PIXI.RenderTexture.create({ width: 700, height: 700 });
renderer.render(sprite2, { renderTexture });

const mainSprite = PIXI.Sprite.from(renderTexture);
app.stage.addChild(mainSprite);

问题原因

核心问题是你新建了一个独立的PIXI.autoDetectRenderer实例,而没有使用PIXI应用(app)自带的渲染器。这个新渲染器没有绑定到页面DOM元素,也无法完成纹理渲染的上下文同步,最终导致RenderTexture没有被正确绘制内容。

修复方案

直接使用app.renderer来渲染到RenderTexture,无需新建渲染器。同时确保精灵处于RenderTexture的可视范围内(默认位置(0,0)是可见的,也可显式设置位置),修复后的代码如下:

const sprite2 = new PIXI.Sprite(PIXI.Texture.from('wt-sq-200.png'));
// 可选:设置精灵位置,确保在RenderTexture内可见
sprite2.x = 100;
sprite2.y = 100;

const renderTexture = PIXI.RenderTexture.create({ width: 700, height: 700 });
// 使用app自带的渲染器执行渲染
app.renderer.render(sprite2, { renderTexture });

const mainSprite = PIXI.Sprite.from(renderTexture);
app.stage.addChild(mainSprite);

额外注意事项

如果纹理是异步加载的资源,需要在PIXI.Loader的加载完成回调中执行上述渲染逻辑,避免因纹理未加载完成导致RenderTexture为空。

内容的提问来源于stack exchange,提问作者Roman Poludnev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:54:04