【问题标题】:libgdx changing the texture on a pre textured modellibgdx 更改预纹理模型上的纹理
【发布时间】:2014-05-13 14:58:30
【问题描述】:

我已经从搅拌机中导出了一个模型,但我希望一些实例使用不同的纹理

       if (x % 2 == 0) {
            shipInstance.materials.clear();
            shipInstance.materials.add(new Material());
            shipInstance.materials.get(0).set(new TextureAttribute(TextureAttribute.Diffuse, enemyTexture));

很遗憾没用!

以类似的方式,我希望能够更改光泽度和平滑度等内容 (我猜你可以改变这样使用默认着色器的东西?)

我也(后来)尝试过这个......

Material mat = shipInstance.materials.get(m);
for (Iterator<Attribute> ai = mat.iterator(); ai.hasNext();){
    Attribute att=ai.next();
    if (att.type==TextureAttribute.Diffuse) {
       ((TextureAttribute)att).textureDescription.set(enemyTexture,TextureFilter.Linear,TextureFilter.Linear,TextureWrap.ClampToEdge,TextureWrap.ClampToEdge);
    }
}

除此之外……

【问题讨论】:

  • ShipInstance 是什么类型的?
  • 认为这是一个模型实例,但那是近 4 年前的事了......

标签: opengl model libgdx textures


【解决方案1】:

啊!

for(int m=0;m<shipInstance.materials.size;m++) {
    Material mat = shipInstance.materials.get(m);
    for (Iterator<Attribute> ai = mat.iterator(); ai.hasNext();){
        Attribute att=ai.next();                        
        if (att.type==TextureAttribute.Diffuse) {
            ((TextureAttribute)att).textureDescription.set(enemyTexture,TextureFilter.Linear,TextureFilter.Linear,TextureWrap.ClampToEdge,TextureWrap.ClampToEdge);
        }
    }
}

我的错误是从 materials.size 中减去 1 !!! (模型中的最后一种材料恰好是最明显的一种,在很多情况下,我尝试了不同的东西可能会起作用(接受最后一种材料)DoH!!!

【讨论】:

    猜你喜欢
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 2021-04-29
    • 1970-01-01
    • 2022-01-19
    • 2011-03-23
    相关资源
    最近更新 更多