Итак, я делаю приложение для Android 2.2, которое использует GLSurfaceView.Мой вопрос заключается в том, что, поскольку OpenGL имеет тенденцию буферизовать команды, означает ли это, что ему требуется связанная память (например, растровое изображение в вызове glTexSubImage2D ()), пока он не будет выполнен?Или он сам делает копию любой памяти, необходимой для буферизованных команд?
Я спрашиваю, так как этот код имеет тенденцию вызывать длительное зависание и возможный сбой на аппаратном обеспечении (HTC Desrire), но не на эмуляторе:
//bm is a Bitmap stored in a vector from previous commands
//pt is a Point stored at the same time
GLUtils.texSubImage2D(GL10.GL_TEXTURE_2D, 0, pt.x, pt.y, bm);
bm.recycle();
Теперь, если я добавлю glFlush () примерно так:
//bm is a Bitmap stored in a vector from previous commands
//pt is a Point stored at the same time
GLUtils.texSubImage2D(GL10.GL_TEXTURE_2D, 0, pt.x, pt.y, bm);
**AGL.glFlush();** //or glFinish
bm.recycle();
Кажется, это прекрасно работает.Теперь это актуальная функциональность для glFlush / glFinish, чтобы предотвратить очистку памяти из-под OpenGL?