pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
30 lines (27 loc) • 1.04 kB
JavaScript
import { BindGroup } from '../../renderers/gpu/shader/BindGroup.mjs';
import { Texture } from '../../renderers/shared/texture/Texture.mjs';
;
const cachedGroups = {};
function getTextureBatchBindGroup(textures, size, maxTextures) {
let uid = 2166136261;
for (let i = 0; i < size; i++) {
uid ^= textures[i].uid;
uid = Math.imul(uid, 16777619);
uid >>>= 0;
}
return cachedGroups[uid] || generateTextureBatchBindGroup(textures, size, uid, maxTextures);
}
function generateTextureBatchBindGroup(textures, size, key, maxTextures) {
const bindGroupResources = {};
let bindIndex = 0;
for (let i = 0; i < maxTextures; i++) {
const texture = i < size ? textures[i] : Texture.EMPTY.source;
bindGroupResources[bindIndex++] = texture.source;
bindGroupResources[bindIndex++] = texture.style;
}
const bindGroup = new BindGroup(bindGroupResources);
cachedGroups[key] = bindGroup;
return bindGroup;
}
export { getTextureBatchBindGroup };
//# sourceMappingURL=getTextureBatchBindGroup.mjs.map