在我的Android 4.3應用程序中,我想從本地png將紋理加載到TextureView上。我不知道OpenGL,我正在使用GLTextureActivity硬件加速測試中的代碼。我在這裏也粘貼裝載質地部分:在某些設備上使用OpenGL ES 2.0進行Android繪圖紋理的速度較慢
private int loadTexture(int resource) {
int[] textures = new int[1];
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, textures, 0);
checkGlError();
int texture = textures[0];
glBindTexture(GL_TEXTURE_2D, texture);
checkGlError();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
Bitmap bitmap = BitmapFactory.decodeResource(mResources, resource);
GLUtils.texImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bitmap, GL_UNSIGNED_BYTE, 0);
checkGlError();
bitmap.recycle();
return texture;
}
我在兩臺設備上運行的代碼:的Nexus 7和Galaxy Nexus手機,而我注意到兩者之間的巨大的速度差。對於Nexus 7,繪圖部分大約需要170 ms,但對於Galaxy Nexus需要459 ms。最耗時的操作是加載紋理,尤其是texImage2D
調用。我已經讀過,有芯片的芯片在功能上很慢,但是如何能告訴別人哪些是這些設備,以及如何避免使用這些功能來獲得相同的結果?
預先感謝您。
//編輯:glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)
調用似乎也是在電話設備顯着較慢。這是爲什麼發生?我怎麼能避免它?
FWIW,我爲Grafika(https://github.com/google/grafika)添加了一個'glTexImage2D()'時間測試。主要有一個簡單的方法來比較跨設備的512x512 RGBA紋理上傳。 – fadden