diff --git a/src/assets.ts b/src/assets.ts index b375d450..2e572bae 100644 --- a/src/assets.ts +++ b/src/assets.ts @@ -1,7 +1,14 @@ import * as io from "./io.ts"; import * as gfx from "./graphics.ts"; -export async function load_texture(path: string): Promise { - const buffer = await io.load(path); - return gfx.create_texture(buffer, path); +const LOADED_TEXTURES = new Map>(); + +export function load_texture(path: string): Promise { + let promise = LOADED_TEXTURES.get(path); + if (!promise) { + promise = io.load(path).then((buffer) => gfx.create_texture(buffer, path)); + LOADED_TEXTURES.set(path, promise); + } + + return promise; }