Класс RenderTexture в PixiJS представляет собой объект текстуры, на который можно рендерить графику динамически. В отличие от обычных текстур, которые загружаются из изображений или спрайтов, RenderTexture создаётся программно и позволяет использовать результат рендеринга как обычную текстуру для спрайтов, контейнеров или фильтров. Это особенно полезно для создания эффектов в реальном времени, сложной сцены с динамическим содержимым, а также для оптимизации производительности при повторном использовании графики.
RenderTexture создаётся с использованием метода
PIXI.RenderTexture.create. Основные параметры:
const renderTexture = PIXI.RenderTexture.create({
width: 512,
height: 512,
scaleMode: PIXI.SCALE_MODES.LINEAR,
resolution: window.devicePixelRatio || 1
});
window.devicePixelRatio для поддержания
высокой чёткости на дисплеях с высокой плотностью пикселей.Также RenderTexture можно создавать через существующий
baseTexture, что позволяет переиспользовать ресурсы
памяти.
Для вывода графики на RenderTexture используется метод
renderer.render. Сигнатура:
renderer.render(displayObject, { renderTexture, clear, transform });
true.Пример рендеринга контейнера на RenderTexture:
const container = new PIXI.Container();
const graphics = new PIXI.Graphics();
graphics.beginFill(0xff0000);
graphics.drawCircle(256, 256, 100);
graphics.endFill();
container.addChild(graphics);
renderer.render(container, { renderTexture });
После этого renderTexture содержит изображение круга и может использоваться для спрайта:
const sprite = new PIXI.Sprite(renderTexture);
app.stage.addChild(sprite);
RenderTexture часто используется для:
Методы RenderTexture тесно связаны с базовым рендерингом PixiJS, что позволяет интегрировать их с Sprite, Mesh, Container и фильтрами без дополнительных преобразований.
RenderTexture легко превращается в Sprite, что позволяет использовать его в сцене как обычный объект:
const dynamicSprite = new PIXI.Sprite(renderTexture);
dynamicSprite.position.set(100, 100);
dynamicSprite.scale.set(0.5);
app.stage.addChild(dynamicSprite);
Также RenderTexture можно рендерить на другой RenderTexture, создавая цепочки эффектов или буферизацию нескольких слоёв сцены для сложных визуальных эффектов.
renderer.render на каждый
кадр может привести к падению FPS; эффективнее кэшировать стабильные
элементы.RenderTexture является ключевым инструментом в PixiJS для управления графикой на уровне текстур и GPU, открывая возможности для оптимизации, сложных визуальных эффектов и динамического рендеринга.