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;
}
: 넥서스 7와 갤럭시 넥서스 전화를, 나는 둘 사이에 큰 속도 차이를 느낄 여기 또한 로딩 텍스처 부분을 붙여 넣기하고있다. Nexus 7의 경우 드로어 부분은 약 170ms가 걸리지 만, 갤럭시 넥서스의 경우 459ms가 걸립니다. 시간이 많이 걸리는 작업은 텍스처로드이며 특히 texImage2D
호출입니다. 나는 그 장치가 느린 칩을 갖고 있다고 읽었습니다. texImage2D
- texSubImage2D
함수는 어떻게 그 장치인지를 알 수 있고, 같은 결과를 얻기 위해 어떻게 그러한 함수를 사용하지 않아도됩니까?
미리 감사드립니다.
// 편집 : glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)
전화도 전화 장치에서 상당히 느린 것 같습니다. 왜 이런 일이 일어나는 걸까요? 나는 그것을 어떻게 피할 수 있습니까?
FWIW, Grafika (https://github.com/google/grafika)에 'glTexImage2D()'타이밍 테스트를 추가했습니다. 대부분의 기기에서 512x512 RGBA 텍스처 업로드를 비교하는 간단한 방법이 있습니다. – fadden