复制数组的时候加个clone

来源:互联网 发布:c语言字节数组 编辑:程序博客网 时间:2024/05/16 19:24

不然就是作死,以下是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

0 0
原创粉丝点击