Я пишу графические приложения для iPhone и собираюсь перенести последнее приложение «Слои» на платформу 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 кадров в секунду + при рисовании на экране).