libgdx在预纹理模型上更改纹理

时间:2014-05-13 14:58:30

标签: opengl model libgdx textures

我已经从blender导出了一个模型,但我想让一些实例使用不同的纹理

       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);
    }
}

除其他外......

1 个答案:

答案 0 :(得分: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 !!!