Теперь я могу сохранить текстуру с помощью glReadPixels(), чтобы читать данные в framebuffer (FBO). Однако у меня возникли две проблемы.Как сохранить большую текстуру (эффективно) OpenGL ES 2.0 в Android
(1) Чтобы сохранить сохраненное качество изображения, размер будет больше, чем GL_MAX_TEXTURE_SIZE (большинство устройств - 4096). Если я создал большую текстуру (например: 4160x3120), я получил ошибку GL_FRAMEBUFFER_UNSUPPORTED при вызове glCheckFramebufferStatus() ....
(2) Если я создал небольшую текстуру (например: 3648x2736), все работает, кроме glReadPixels() будет очень медленным ....
Итак, вернемся к моему вопросу, можно ли преодолеть ограничение максимального размера текстуры и эффективно сохранить его? Спасибо.
Несжатая текстура RGBA 4160x3120px будет равна 50 МБ, насколько быстро вы ожидаете, что на устройстве? –
Вы пытались сделать текстуру. Вам все равно нужно будет скопировать изображение, но вы можете поменять буфер и запустить фоновый поток или, скорее, задачу Async, для обработки в фоновом режиме. – HPP