2

我目前正在学习适用于 Android 的 JPCT。在阅读了一些教程和示例之后,我注意到每个人都将他们的对象和纹理一一加载到场景中,如下所示:

cube = loadModel(getAssets().open("cube.3ds"), 1);
TextureManager.getInstance().addTexture("tex", new Texture(getAssets().open("text.png")));
cube.setTexture("tex");
cube.build();
world.addObject(cube);

这应该加载一个 3ds 文件(我在 Blender 上创建的),对其应用纹理,然后将其放在世界上。如果这个 3ds 文件有多个对象,它会将纹理应用到所有对象。好的,到目前为止还不错。

但是,如果我在同一个文件中有数百个对象来为游戏创建一个场景,每个对象都有自己的纹理怎么办?

我必须一一加载它们和它们的纹理吗?

有没有办法自动化这个?也许一些已经拥有纹理关系的文件格式或类似的东西?

任何帮助表示赞赏!

4

2 回答 2

3

自己找到了解决办法!

您实际上不必手动加载纹理,如

cube.setTexture("tex");

只要您在将纹理文件名添加到 TextureManager 时保持纹理文件名与 Blender 中指定的相同:

TextureManager.getInstance().addTexture("text.png", new Texture(getAssets().open("text.png")));

通过这样做,Load 方法将自行应用纹理!

于 2012-07-16T05:59:45.723 回答
0

你应该这样做:

Texture texture = new Texture(BitmapHelper.rescale(BitmapHelper.convert(getResources().getDrawable(R.drawable.image)), 64, 64)); TextureManager.getInstance().addTexture("texture", texture);

于 2015-08-06T18:10:49.760 回答