UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

69 lines (66 loc) 1.13 kB
import { PIXELFORMAT_RGBA8 } from './constants.js'; import { DeviceCache } from './device-cache.js'; import { Texture } from './texture.js'; var textureData = { white: [ 255, 255, 255, 255 ], gray: [ 128, 128, 128, 255 ], black: [ 0, 0, 0, 255 ], normal: [ 128, 128, 255, 255 ], pink: [ 255, 128, 255, 255 ] }; class BuiltInTextures { destroy() { this.map.forEach((texture)=>{ texture.destroy(); }); } constructor(){ this.map = new Map(); } } var deviceCache = new DeviceCache(); var getBuiltInTexture = (device, name)=>{ var cache = deviceCache.get(device, ()=>{ return new BuiltInTextures(); }); if (!cache.map.has(name)) { var texture = new Texture(device, { name: "built-in-texture-" + name, width: 1, height: 1, format: PIXELFORMAT_RGBA8 }); var pixels = texture.lock(); var data = textureData[name]; pixels.set(data); texture.unlock(); cache.map.set(name, texture); } return cache.map.get(name); }; export { getBuiltInTexture };