Android'de OpenGL ES ile bir tür fotoğraf görüntüleyici oluşturmaya çalışıyorum.Android'de bitmap'i yüklemek ve doku oluşturmak için hızlı yolu
Uygulamamda, temel olarak bir düğmeyi tıklattığımda, sdcard'daki tüm fotoğraf yolları listesini alın, bir fotoğraftan bitmap oluşturun ve bu bitmap olarak doku ayarlayın, ardından basit dörtlilere çizin. Ama bu oldukça yavaş ve böyle queueEvent()
kod parçacıklarını yüzden Dinleyici set GLTHREAD içinde çalışmalıdır doku yapım ve kullanımı
çalışırken bile GL görünümü donduruyor:
public void setTexture(Context context, final String string) {
Bitmap bitmap = null;
try {
Uri uri = Uri.fromFile(new File(string));
bitmap = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uri));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// upload texture by bitmap
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();
}
queueEvent(new Runnable() {
@Override
public void run() {
for (int i = 1; i < photos.size() - 1; i++) {
try {
exifInterface = new ExifInterface(photoList.get(i));
} catch (IOException e) {
e.printStackTrace();
}
String orientation = exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION);
Log.d(TAG, "photoOrientation: " + orientation);
photos.get(i).setOrientation(Integer.parseInt(orientation));
photos.get(i).setTexture(mContext, photoList.get(i));
}
}
});
Zamanı kontrol ediyorum, en çok zaman alan iş decodeStream()
'dur. Peki bunu nasıl geliştirebilirim? Bitmapi dokuya yüklemek için herhangi bir yol var mı? veya En azından GLView'i dondurmaktan nasıl sakınabilirim?