Работа с графическими объектами в Android
Нажав кнопку «Далее», вы найдете перевод четырех небольших учебных материалов, посвященных различным техникам обработки и генерации изображений в Android; в трех из них имеется исходный код тестовых программ и справочный материал к нему. На наш взгляд, эти пособия могут оказаться полезными всем, кто занимается разработкой приложений и игр под Android.Под катом находятся следующие статьи: Пример кластеризованного шейдинга в Android Знакомство с RenderScript. Учебное пособие Знакомство с OpenCL для Android. Учебное пособие Тесселяция для OpenGL ES 3.1 на Android Пример кластеризованного шейдинга в Android В данном примере для Android реализованы и сравнены несколько техник шейдинга сцен, содержащих множество источников света. Полный исходный код доступен на GitHub, его также можно скачать по прямой ссылке. Наиболее эффективный метод, показанный в примере — кластеризованный шейдинг, описанный в данном документе. Данный пример — портированная на Android более продвинутая версия для Windows, доступная для скачивания отсюда.В примере применены следующие методы: Прямой рендеринг. В этом методе сцена рендерится, как обычно, и шейдер фрагментов проходит по всему списку источников света, применяя соответствующие к каждому фрагменту, подлежащему шейдингу. Отложенный шейдинг. В этом методе сцена сначала рендерится в G-буфер, и освещенность вычисляется в процессе пост-процессинга. Шейдер фрагментов проходит по всему списку источников света для каждого фрагмента. Шейдинг четырехугольниками. Это также отложенная техника, но в отличие от предыдущего, каждый источник света рендерится как четырехугольник, вклад каждого суммируется в буфер. Кластеризованный шейдинг. В этом режиме все источники света сначала кластеризуются на трехмерной сетке. Далее сцена растеризуется. Шейдер фрагментов сперва определяет, в какую ячейку сетки попадает данный фрагмент и далее проходит по списку источников света, связанных с этим элементом, суммируя влияние каждого. CS ячейки. Этот метод сочетает отложенный шейдинг и кластеризацию света. Освещение вычисляется шейдером вычислений, который суммирует вклад каждого источника. Заметьте, что эта техника работает только в случае доступности OpenGLES 3.1. В нашем примере генерируется следующая картинка:
В папке примеров имеется два решения для Visual Studio:
ClusteredShadingWindows.sln — решение для Windows, которое может быть собрано как обычное приложение Windows ClusteredShadingAndroid.sln — решение для Android. Чтобы его собрать, вам понадобится плагин Visual GDB для Visual Studio. Его можно скачать с сайта visualgdb.com. Если вы не хотите устанавливать Visual GDB, следуйте инструкциям, указанным в файле readme.txt из папки примеров, чтобы собрать его вручную.Оригинал статьи.Знакомство с RenderScript. Учебное пособие Учебное пособие по RenderScript для Android освещает основные принципы использования RenderScript в разработке приложения для Android 4.2.2 и выше.Основное внимание в пособии уделено RenderScript, его базовому языку и Java API. Поскольку в пособии используется только Java, хотя и существуют нативные C/C++ аналоги для RenderScript API, и поскольку RenderScript использует метод динамической компиляции (JIT), скомпилированное в результате приложение может быть запущено на любом устройстве с нужной версией Android.Учебное приложение имеет минималистический графический интерфейс, отображающий результаты вычислений и статистику. Оно реализует простой алгоритм обработки полноэкранного изображения, с которым можно взаимодействовать с помощью прикосновений.Целевая платформа: Эмуляторы и устройства с Android 4.2.2 и вышеПлатформа разработки: ЛюбаяУровень сложности: Новичок
Для получения дополнительной информации о примере обратитесь к руководству пользователя, находящемуся внутри тестового архива.Скачать исходный код / документацию.Оригинал статьи
Знакомство с OpenCL для Android. Учебное пособие Учебное пособие по OpenCL для Android знакомит с основными принципами использования OpenCL в Android-приложениях. Учебное приложение представляет собой средство интерактивной обработки изображений.Основное внимание в пособии сосредоточено на том, как использовать OpenCL в Android-приложении, с чего начать писать OpenCL код и как прилинковаться к рантайму OpenCL. Пособие демонстрирует типичную последовательность вызовов OpenCL API и обычный порядок действий для создания простого обработчика изображений с анимацией для устройства OpenCL. Более сложные темы, такие как эффективное совместное использование данных или вопросы производительности OpenCL для Android в данном пособии не рассматриваются.Уровень сложности: НовичокПлатформа разработки: ЛюбаяЦелевая платформа: Устройства с Android 4.2.2 и вышеЦелевое устройство: Устройство GPU на устройстве AndroidЗамечание. Эмулятор Android не поддерживает GPU OpenCL устройство. Чтобы запустить код примера на эмуляторе, измените целевое устройство GPU на CPU путем замены CL_DEVICE_TYPE_GPU на CL_DEVICE_TYPE_CPU в строке 451 файла jni/step.cpp.
Для получения дополнительной информации о примере обратитесь к руководству пользователя, находящемуся внутри тестового архива.Скачать исходный код / документацию.Оригинал статьи
Тесселяция для OpenGL ES 3.1 на Android В данной статье обсуждается, как реализовать и использовать тесселяцию в OpenGL ES 3 на Android. Тесселяция — аппаратное средство, позволяющее графическому процессору (GPU) динамически подразделять примитивы. Она также позволяет управлять размещением новых вершин.Обычное использование тесселяции — динамическое масштабирование уровня детализации местности в зависимости от расстояния до камеры. Таким образом высокая четкость плотно триангулированной территории сочетается с хорошей производительностью.Для поддержки данной техники, шейдеры тесселяции в настоящее время добавлены в DirectX 11 и OpenGL 4.0. OpenGL ES пока не имеет шейдеров тесселяции, однако платформа Intel Bay Trail имеет расширение, позволяющее использовать тесселяцию в OpenGL ES 3.0.Следующие шаги показывают, как GPU использует тесселяцию для динамического масштабирования местности. Исходная местность состоит из сетки низкого разрешения и текстуры карты высот высокого разрешения.Шейдер управления тесселяцией подсчитывает расстояние между текущим треугольником и камерой и устанавливает уровень тесселяции в зависимости от вычисленной величины. Чем ближе камера к треугольнику, тем выше уровень тесселяции. Шейдер вычисления тесселяции добавляет новые вершины треугольников и перемещает их вверх или вниз в зависимости от значений карты высот высокого разрешения. В результате треугольники тесселяции, близкие к камере, уточняют карту высот более тонкими деталями и добавляют маленькие углубления и выпуклости там, где камера может их видеть.Тесселяция выключена
Тесселяция включена
OpenGL ES TessellationОригинал статьи.