gpt4 book ai didi

android - 如何在 libgdx 3D 中使用来自 TextureAtlas 的纹理

转载 作者:太空狗 更新时间:2023-10-29 14:16:57 29 4
gpt4 key购买 nike

我正在尝试从单个纹理转变为对我的盒子使用纹理图集(它们都显示单个字母,用于类似拼字游戏的游戏)。我对此深信不疑,我找到的所有示例都是针对 2D Sprite 的。

如何使用来自 AtlasRegion 的正确映射坐标创建 Material 并将其分配给 3D 表面?

public void createModelInstance(TextureAtlas letterAtlas) {
AtlasRegion region = letterAtlas.findRegion(this.textureID);
Material mat = new Material(???);
modelInstance = new ModelInstance(modelTile);
modelInstance.nodes.get(0).parts.get(0).material.set(mat);
}

当为每个纹理使用单独的文件时:

Material mat = new Material(TextureAttribute.createDiffuse(
assetManager.get("textures/" + textureFile, Texture.class));

创建表面:

MeshPartBuilder tileBuilder;
tileBuilder = modelBuilder.part("top", GL10.GL_TRIANGLES, Usage.Position | Usage.Normal | Usage.TextureCoordinates, new Material(ColorAttribute.createDiffuse(Color.WHITE)));
tileBuilder.rect(-0.45f, 0.1f, 0.45f, 0.45f, 0.1f, 0.45f, 0.45f, 0.1f, -0.45f, -0.45f, 0.1f, -0.45f, 0f, 1f, 0f);
...

最佳答案

我认为目前无法以这种方式使用 TextureAtlas。创建 TextureAttribute 的唯一可能方法是提供 Texture。纹理是一个独立的 PixMap

TextureRegion 相反地描述了一个更大的 Texture 的区域。目前似乎没有办法从 API 中的 TextureRegion 创建 TextureTextureRegion.getTexture() 只会检索它来自的图集的完整纹理。

API 不提供这样的转换实际上是有道理的,因为它破坏了图集的目的。通过使所有区域单独纹理,您不会再获得任何性能。

TextureAttribute 目前似乎完全不支持纹理图集,否则它必须提供带有 TextureRegion 而不是 Textures 的方法。

关于android - 如何在 libgdx 3D 中使用来自 TextureAtlas 的纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21015729/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com