Как непрерывно отображать растровые изображения в OpenGL

1

Я слежу за этим руководством для отображения растрового изображения в OpenGL

http://obviam.net/index.php/texture-mapping-opengl-android-displaying-images-using-opengl-and-squares/

Однако у меня есть очередь битмапов, которые я хочу отображать по одному.

Должен ли я создавать новую текстуру каждый раз в onDrawFrame для Bitmap я имею в качестве главы очереди, как в onDrawFrame:

Bitmap bitmap = ...

// generate one texture pointer
gl.glGenTextures(1, textures, 0);
// ...and bind it to our array
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);

// create nearest filtered texture
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);

// Use Android GLUtils to specify a two-dimensional texture image from our bitmap
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);

// Clean up
bitmap.recycle();

Или я могу как-то сделать только часть этих операций, перемещая некоторые другие операции над onSurfaceChanged возможно?

Теги:
opengl-es
glsurfaceview
bitmap

1 ответ

2
Лучший ответ

Если вы хотите заменить текстуру другой текстурой (и у вас нет намерения сохранить первую текстуру), то вызов glTexImage2D или GLUtils.texImage2D - это единственное, что вам нужно сделать во второй раз. Это просто заменяет существующие данные текстуры новыми данными. Вы можете вызвать это из любого места, где у вас есть действующий контекст OpenGL.

Если текстуры имеют одинаковый размер, я бы предположил, что использование glTexSubImage2D будет улучшением, так как оно не изменит размер текстуры, а затем, вероятно, может избежать выделения памяти на gpu (просто повторяет одну и ту же память).

  • 0
    Большое спасибо, сейчас работает
  • 0
    @Tim Ты пишешь "и у тебя нет намерения сохранять первую текстуру" .. Как мне изменить текстуру, если я хочу сохранить старую одну или две. Я хочу переключаться между двумя каждые несколько секунд.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню