Android OpenGLES рендеринга в текстуру

Я пишу графические приложения для iPhone и пытаюсь перенести свое самое последнее приложение Layers на платформу Android. Layers - это приложение для рисования, которое позволяет пользователям рисовать на экране и создавать многослойные рисунки с различными кистями, цветами и т. Д. И экспортировать в PSD. У него есть синхронизация с рабочим столом, инструмент для удаления пятен, много всего хорошего ...http://www.layersforiphone.com/

В понедельник я начал смотреть на платформу Android и столкнулся с серьезной проблемой. Я использую OpenGL для рисования, потому что он предлагает лучшую производительность. Однако есть несколько мест, где мне нужно визуализировать текстуру, а затем использовать текстуру. Например:

Используйте текстуру кисти и линию спрайтов, чтобы создать черную мазку в текстуре AПоместите кисть color + alpha в glColor4f и затем нарисуйте текстуру A на экране.

На iPhone я делаю это постоянно, когда палец пользователя движется, и я могу достичь 12-15 кадров в секунду на iPod Touch 1-го поколения. Это необходимо, потому что применение цвета и альфа-канала к отдельным спрайтам, составляющим мазок кисти, не дает правильного результата (поскольку спрайты перекрываются и делают штрих слишком темным).

Платформа Android поддерживает OpenGL ES 1.0, но, похоже, не использует ключевые функции для работы с кадровыми буферами. Я не могу найти способ привязать текстуру к кадровому буферу и нарисовать ее с помощью OpenGL.

Вот как я обычно делаю это на iPhone:

// generate a secondary framebuffer and bind it to OpenGL so we don't mess with existing output.
glGenFramebuffers(1, &compositingFramebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, compositingFramebuffer);

// attach a texture to the framebuffer.
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);

// subsequent drawing operations are rendered into the texture

// restore the primary framebuffer and (possibly) draw the rendered texture
glBindFramebuffer(GL_FRAMEBUFFER, originalActiveFramebuffer);

Есть ли что-нибудь подобное на платформе Android? На iPhone OpenGL значительно быстрее, чем программный рисунок и является единственным жизнеспособным решением (поверьте мне - я тоже написал приложение для рисования CoreGraphics ...). Может быть, есть другой маршрут, который я мог бы выбрать на Android? Я готов прыгать через все необходимые обручи, но я не буду публиковать приложение, если производительность не будетхороший (10 кадров в секунду +, когда вы рисуете на экране).

Ответы на вопрос(1)

Ваш ответ на вопрос