复制数组的时候加个clone

不然就是作死,以下是obj的材质解析

private void SetupMaterial() {


try{
InputStream ins = resources.getAssets().open(mesh.strMeshName + ".mtl");
InputStreamReader insReader = new InputStreamReader(ins);
BufferedReader br = new BufferedReader(insReader);
String strTemp = null;

String mtlNameString = "";
int    mtlId = -1;

float[] arrKd = new float[3];
int index = 0;
while((strTemp = br.readLine())!= null){
String[] arrStr = strTemp.split("[ ]+");
if(arrStr[0] .trim().equals( "newmtl")){      //标示材质
if(index!=0){
Newmtl newmtl = new Newmtl(mtlId,arrKd.clone());//作死!注意加个clone,不然全是一个色
mesh.arrNewmtl.put(mtlNameString, newmtl);
}
index++;
mtlNameString = arrStr[1];
}
else if(arrStr[0] .trim().equals("Ka")){

}
else if(arrStr[0] .trim().equals("Kd")){
arrKd[0] = Float.parseFloat(arrStr[1]);
arrKd[1] = Float.parseFloat(arrStr[2]);
arrKd[2] = Float.parseFloat(arrStr[3]);
}
else if(arrStr[0] .trim().equals("Ks")){

}
else if(arrStr[0] .trim().equals("map_Kd")){  //纹理名
if(mtlNameString.length()!=0 && arrStr.length>=2){
mtlId = ToolFunction.CreateTexture(resources, arrStr[1]);
}
} //end if
}//end while



Newmtl newmtl = new Newmtl(mtlId,arrKd);
mesh.arrNewmtl.put(mtlNameString, newmtl);
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}//end class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值