FileTextureProvider仅从"内部"

时间:2017-08-22 15:28:44

标签: android libgdx

我正在尝试加载包含.zip和所有必需纹理的已下载.g3db个文件。看起来.g3db文件正在使用loadModel()方法正常加载。但正如我所看到的,名为TextureProvider的{​​{1}}方法只能读取load()个文件。

如何强制Internal仅使用ModelLoader路径?

代码

加载模型

Absolute

FileTextureProvider load()方法

UBJsonReader jsonReader = new UBJsonReader();
G3dModelLoader modelLoader = new G3dModelLoader(jsonReader);
model = modelLoader.loadModel(Gdx.files.absolute(modelPath));

加载纹理时出错

@Override
public Texture load (String fileName) {
    Texture result = new Texture(Gdx.files.internal(fileName), useMipMaps);
    result.setFilter(minFilter, magFilter);
    result.setWrap(uWrap, vWrap);
    return result;
}

2 个答案:

答案 0 :(得分:0)

它说在libgdx文档中,对于Android,您需要将资产作为资源或资产文件夹。因此,如果您必须将资产放在android的assets文件夹中,那么强制加载器使用文件路径是没有意义的。

https://github.com/libgdx/libgdx/wiki/File-handling

答案 1 :(得分:0)

事实证明,您可以使用AssetManager加载存储为内部数据的文件。成功的关键是使用AbsoluteFileHandleResolver()

这是我从应用程序中自定义创建的文件夹中加载Model的方法。

private Model loadModelFromFile(File file) {
    AssetManager assets = new AssetManager(new AbsoluteFileHandleResolver());
    assets.load(file.getPath(), Model.class);
    assets.finishLoading();
    return assets.get(file.getPath(), Model.class);
}