в GLES20 android, как загрузить 3D-объект, содержащий более 10 текстур?
Я новичок в GLES20 android, в моем проекте мне нужно визуализировать 3D-объект в GLES20, я сделал некоторую часть до загрузки одного текстурированного 3D-объекта, но когда я прихожу с более текстурированным объектом, он не работает, он берет первый файл текстуры, оставшиеся текстуры не рендеринг в нем.
for (int bytestring = 0; bytestring < objData.getTextureData().size(); bytestring++) {
// bytestring=7;
byte[] TexturebytestringData = objData.getTextureData().get(bytestring);
Integer textureId = textures.get(TexturebytestringData);
// Integer emissiveTextureId = textures.get(objData.getEmissiveTextureData());
if (textureId == null && objData.getTextureData() != null) {
Log.i("ModelRenderer","Loading texture '"+objData.getTextureFile().get(bytestring)+"'...");
ByteArrayInputStream textureIs = new ByteArrayInputStream(/*objData.getTextureData()*/TexturebytestringData);
// ByteArrayInputStream emissiveTextureIs = null;
// textureId = GLUtil.loadTexture(/*textureIs, emissiveTextureIs,*/objData.getTextureData());
final BitmapFactory.Options options = new BitmapFactory.Options();
// By default, Android applies pre-scaling to bitmaps depending on the resolution of your device and which
// resource folder you placed the image in. We don’t want Android to scale our bitmap at all, so to be sure,
// we set inScaled to false.
options.inScaled = false;
/* if(bitmap!=null)
bitmap.recycle();*/
// Read in the resource
final Bitmap bitmap = BitmapFactory.decodeStream(textureIs, null, options);
if (bitmap == null) {
throw new RuntimeException("couldnt load bitmap");
}
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle[bytestring]);
//.. call glTexParameter as needed
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
Thread.sleep(50);
textureIs.close();
}
textureId=textureHandle[bytestring];
if (textureId == null) {
textureId = -1;
}
GLES20.glDeleteTextures(textureHandle.length, textureHandle, 0);
при этом он отображает только первую текстуру и ее png.
не могли бы вы помочь, как загрузить или отрендерить 3D-объект, который имеет больше текстур и PNG. Заранее спасибо.