loadTextureImage method
Future<Texture?>
loadTextureImage(
- int textureIndex,
- int sourceIndex,
- TextureLoader loader
)
Implementation
Future<Texture?> loadTextureImage(int textureIndex, int sourceIndex, TextureLoader loader) async {
final parser = this;
final json = this.json;
final textureDef = json["textures"][textureIndex];
final sourceDef = json["images"][sourceIndex];
final cacheKey = '${(sourceDef["uri"] ?? sourceDef["bufferView"])}:${textureDef["sampler"]}';
if (textureCache[cacheKey] != null) {
// See https://github.com/mrdoob/three.js/issues/21559.
return textureCache[cacheKey];
}
loader.flipY = false;
Texture? texture = await loadImageSource(sourceIndex, loader);
texture?.flipY = false;
if (textureDef["name"] != null) texture?.name = textureDef["name"];
final samplers = json["samplers"] ?? {};
Map sampler = samplers[textureDef["sampler"]] ?? {};
texture?.magFilter = webglFilters[sampler["magFilter"]] ?? LinearFilter;
texture?.minFilter = webglFilters[sampler["minFilter"]] ?? LinearMipmapLinearFilter;
texture?.wrapS = webglWrappings[sampler["wrapS"]] ?? RepeatWrapping;
texture?.wrapT = webglWrappings[sampler["wrapT"]] ?? RepeatWrapping;
parser.associations[texture] = {"textures": textureIndex};
textureCache[cacheKey] = texture;
return texture;
}