UNPKG

4.6 kBSource Map (JSON)View Raw
1{"version":3,"file":"BufferResource.js","sources":["../../../src/textures/resources/BufferResource.ts"],"sourcesContent":["import { ALPHA_MODES } from '@pixi/constants';\nimport { Resource } from './Resource';\n\nimport type { ISize } from '@pixi/math';\nimport type { Renderer } from '../../Renderer';\nimport type { BaseTexture } from '../BaseTexture';\nimport type { GLTexture } from '../GLTexture';\n\n/**\n * Buffer resource with data of typed array.\n * @memberof PIXI\n */\nexport class BufferResource extends Resource\n{\n /** Source array Cannot be {@code ClampedUint8Array} because it cant be uploaded to WebGL */\n data: Float32Array | Uint8Array | Uint16Array | Int32Array | Uint32Array;\n\n /**\n * @param source - Source buffer\n * @param options - Options\n * @param {number} options.width - Width of the texture\n * @param {number} options.height - Height of the texture\n */\n constructor(source: Float32Array | Uint8Array | Uint16Array | Int32Array | Uint32Array, options: ISize)\n {\n const { width, height } = options || {};\n\n if (!width || !height)\n {\n throw new Error('BufferResource width or height invalid');\n }\n\n super(width, height);\n\n this.data = source;\n }\n\n /**\n * Upload the texture to the GPU.\n * @param renderer - Upload to the renderer\n * @param baseTexture - Reference to parent texture\n * @param glTexture - glTexture\n * @returns - true is success\n */\n upload(renderer: Renderer, baseTexture: BaseTexture, glTexture: GLTexture): boolean\n {\n const gl = renderer.gl;\n\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n\n const width = baseTexture.realWidth;\n const height = baseTexture.realHeight;\n\n if (glTexture.width === width && glTexture.height === height)\n {\n gl.texSubImage2D(\n baseTexture.target,\n 0,\n 0,\n 0,\n width,\n height,\n baseTexture.format,\n glTexture.type,\n this.data\n );\n }\n else\n {\n glTexture.width = width;\n glTexture.height = height;\n\n gl.texImage2D(\n baseTexture.target,\n 0,\n glTexture.internalFormat,\n width,\n height,\n 0,\n baseTexture.format,\n glTexture.type,\n this.data\n );\n }\n\n return true;\n }\n\n /** Destroy and don't use after this. */\n dispose(): void\n {\n this.data = null;\n }\n\n /**\n * Used to auto-detect the type of resource.\n * @param {*} source - The source object\n * @returns {boolean} `true` if \\<canvas\\>\n */\n static test(source: unknown): source is Float32Array | Uint8Array | Uint32Array\n {\n return source instanceof Float32Array\n || source instanceof Uint8Array\n || source instanceof Uint32Array;\n }\n}\n"],"names":["Resource","ALPHA_MODES"],"mappings":";;;;;;;AAYO,MAAM,uBAAuBA,iBACpC,CAAA;AAAA,EAUI,WAAA,CAAY,QAA4E,OACxF,EAAA;AACI,IAAA,MAAM,EAAE,KAAA,EAAO,MAAW,EAAA,GAAA,OAAA,IAAW,EAAC,CAAA;AAEtC,IAAI,IAAA,CAAC,KAAS,IAAA,CAAC,MACf,EAAA;AACI,MAAM,MAAA,IAAI,MAAM,wCAAwC,CAAA,CAAA;AAAA,KAC5D;AAEA,IAAA,KAAA,CAAM,OAAO,MAAM,CAAA,CAAA;AAEnB,IAAA,IAAA,CAAK,IAAO,GAAA,MAAA,CAAA;AAAA,GAChB;AAAA,EASA,MAAA,CAAO,QAAoB,EAAA,WAAA,EAA0B,SACrD,EAAA;AACI,IAAA,MAAM,KAAK,QAAS,CAAA,EAAA,CAAA;AAEpB,IAAA,EAAA,CAAG,YAAY,EAAG,CAAA,8BAAA,EAAgC,WAAY,CAAA,SAAA,KAAcC,sBAAY,MAAM,CAAA,CAAA;AAE9F,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAA;AAC1B,IAAA,MAAM,SAAS,WAAY,CAAA,UAAA,CAAA;AAE3B,IAAA,IAAI,SAAU,CAAA,KAAA,KAAU,KAAS,IAAA,SAAA,CAAU,WAAW,MACtD,EAAA;AACI,MAAA,EAAA,CAAG,aACC,CAAA,WAAA,CAAY,MACZ,EAAA,CAAA,EACA,CACA,EAAA,CAAA,EACA,KACA,EAAA,MAAA,EACA,WAAY,CAAA,MAAA,EACZ,SAAU,CAAA,IAAA,EACV,KAAK,IACT,CAAA,CAAA;AAAA,KAGJ,MAAA;AACI,MAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAClB,MAAA,SAAA,CAAU,MAAS,GAAA,MAAA,CAAA;AAEnB,MAAA,EAAA,CAAG,UACC,CAAA,WAAA,CAAY,MACZ,EAAA,CAAA,EACA,UAAU,cACV,EAAA,KAAA,EACA,MACA,EAAA,CAAA,EACA,WAAY,CAAA,MAAA,EACZ,SAAU,CAAA,IAAA,EACV,KAAK,IACT,CAAA,CAAA;AAAA,KACJ;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACX;AAAA,EAGA,OACA,GAAA;AACI,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAA;AAAA,GAChB;AAAA,EAOA,OAAO,KAAK,MACZ,EAAA;AACI,IAAA,OAAO,MAAkB,YAAA,YAAA,IAClB,MAAkB,YAAA,UAAA,IAClB,MAAkB,YAAA,WAAA,CAAA;AAAA,GAC7B;AACJ;;;;"}
\No newline at end of file