Отображение полноэкранного фона в OpenGL
Мое приложение для Android должно отображать полноэкранное растровое изображение в качестве фона, а затем поверх этого отображать динамическую 3D-графику с использованием OpenGL ES (либо 1.1. или 2.0 - еще не решено). Фоновое изображение-это снимок компонента WebView в том же приложении, поэтому его размеры уже идеально подходят для экрана.
Я новичок в OpenGL, но знаю, что обычный способ отображения растрового изображения включает масштабирование его в текстуру POT (glTexImage2D), настройку матриц, создание некоторых вершины для прямоугольника и отображение этого с помощью glDrawArrays. Кажется, что это много дополнительной работы (с потерей качества при уменьшении масштаба изображения до размера банка), когда все, что нужно, это просто нарисовать растровое изображение на экране в масштабе 1:1.
У "настольного" GL есть glDrawPixels (), который, кажется, делает именно то, что нужно в этой ситуации, но это, по-видимому, отсутствует в GLES. Есть ли способ скопировать пиксели в буфер экрана в GLES, минуя 3D-конвейер? Или есть какие-то как нарисовать графику OpenGL поверх "плоского" фона, нарисованного обычными средствами Android? Или сделать полупрозрачный GLView (есть RSTextureView для отображения на основе Renderscript, но я не смог найти эквивалент для GL)?
1 ответ:
Тогда ваши знания устарели. Современные OpenGL (версии 2 и более поздние) прекрасно справляются с произвольными размерами изображений для своих текстур.Но я знаю, что обычный способ отображения растрового изображения включает масштабирование его в текстуру POT (glTexImage2D)
"настольный" GL имеет glDrawPixels (), который, кажется, делает именно то, что нужно в этой ситуации, но это, по-видимому, отсутствует в GLES.
Ну и современный "настольный" OpenGL, а именно версии 3 core и у меня тоже нет glDrawPixels.
Как бы привлекательна ни была эта функция,она предлагает только плохую производительность и имеет так много предостережений, что ее редко используют, когда ее использования можно избежать.
Просто загрузите свое изображение в текстуру, отключите MIP-маппинг и нарисуйте его на полноэкранном квадроцикле.
Comments