为什么我可以使用大于 MAX_TEXTURE_SIZE (WebGL) 的纹理?

问题描述 投票:0回答:1

根据这个线程,我的 MAX_TEXTURE_SIZE 是 8192 : 文字

根据这个线程, MAX_TEXTURE_SIZE 实际上定义了我的纹理的最大尺寸的最大值:text

但是,我可以在 PIXI V7.2.4 webworker 中使用 8500 x 60 的纹理(纹理是 spritesheet)而不会出现错误:

PIXI.Assets.add('myBigSpriteSheet', '../resources/myBigSpriteSheet.png');
PIXI.Assets.load(['myBigSpriteSheet']).then((textures) =>
{
    let myBigSpriteSheet = textures['myBigSpriteSheet'];
    
    for (let i=0; i<100; i++)
        _textures['grass/'+i] = new PIXI.Texture(myBigSpriteSheet, new PIXI.Rectangle(i*58, 0, 58, 30));

有人知道为什么吗?

是否是因为我从来没有在精灵中加载完整的纹理,而只加载其中的一部分(使用 PIIX.Rectangles)?如果是这样,MAX_TEXTURE_SIZE 实际上适用于矩形而不是纹理本身吗?我想不是,阅读这篇文章,但我想理解:)text

干杯,

webgl textures pixi.js
1个回答
0
投票

您可以使用 8500 x 60 的纹理而不出现错误的原因可能是因为您实际上并未立即加载整个纹理。您正在使用 PIXI。创建新纹理时,用于指定较大纹理的较小区域的矩形。 PIXI.js 足够智能,可以仅加载和管理实际使用的纹理部分。

MAX_TEXTURE_SIZE
通常适用于单个纹理,而不适用于使用中的所有纹理的总和。因此,只要您为精灵定义的各个矩形保持在
MAX_TEXTURE_SIZE
限制内,您就不会遇到问题。

© www.soinside.com 2019 - 2024. All rights reserved.