Introducción a Vulkan

En este documento, se hace una introducción al uso de la biblioteca de gráficos de Vulkan mediante la descarga, la compilación y la ejecución de la app de muestra de Khronos©.

Requisitos previos

Antes de comenzar, asegúrate de tener el hardware adecuado y la versión correcta de la plataforma preparados. Debes usar un dispositivo o emulador compatible con Vulkan que ejecute Android 7.0 (Nougat) con un nivel de API 24 o superior.

Para confirmar la versión de Android, ve al menú Configuración y selecciona Acerca del teléfono > Versión de Android. Una vez que confirmes que tienes configurados el hardware y la versión de la plataforma correctos, puedes descargar el software necesario.

Descargar

Antes de comenzar, debes descargar varias herramientas y otros elementos de software. Ten en cuenta que, en un host de Windows, se recomienda evitar una jerarquía de ruta de acceso de archivo profunda para las herramientas y el código fuente. Esto es para evitar límites de ruta de acceso de archivo en algunas versiones del SO Windows.

  1. Si aún no tienes Android Studio, descárgalo. Esto incluye el SDK de Android más reciente.
  2. Instala el NDK y CMake desde Android Studio o descárgalos e instálalos por separado.
  3. Compila y ejecuta la muestra Hello JNI para asegurarte de que Android Studio funcione correctamente.
  4. Instala python3 y otros componentes enumerados en build.md para tu plataforma de host.

Importa

En esta sección, descargarás el repositorio de muestra de Khronos© Vulkan©, generarás un proyecto de Gradle para Android y lo abrirás con el IDE de Android Studio.

  1. Configura las siguientes variables del entorno:
    export ANDROID_HOME=/path/to/sdk-directory
    export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/{your-ndk-version-dir}
    
  2. Agrega CMake a $PATH, que se utiliza para generar secuencias de comandos de compilación de Android:
    export PATH=$PATH:$ANDROID_HOME/cmake/{your-cmake-version}/bin
    
  3. Abre una terminal y descarga el código fuente en tu directorio de desarrollo:
    cd dev-directory
    git clone --recursive https://github.com/KhronosGroup/Vulkan-Samples.git
    
  4. Sigue estas instrucciones (de Build.md) para generar el proyecto de muestra de Android:
    cd Vulkan-Samples
    ./scripts/generate.py android
    
  5. Abre Android Studio. Selecciona File > Open y, luego, Vulkan-Samples/build/android_gradle/build.gradle. Verás algo similar a lo siguiente después de que Android Studio cargue el proyecto:
    Importación del proyecto de muestra a Studio

    Figura 1: El proyecto de muestra dentro de Android Studio

Compila

Todas las muestras de este repositorio se organizan en un proyecto de Android. Para compilar el proyecto, debes realizar una de las siguientes acciones:

  • Para compilar las fuentes, usa el menú Build > Make Project o ingresa la combinación de teclas Ctrl-F9.
  • Para generar el APK de muestra, selecciona el menú Build > Build Bundle(s)/APK(s) > Build APK(s).

Deberías ver el mensaje de compilación exitosa en la ventana Build de Android Studio. En caso de que aparezcan errores, corrígelos y vuelve a compilar.

Compilación de un proyecto de muestra con Studio

Figura 2: Una compilación de muestra exitosa

Ejecuta

Antes de ejecutar el proyecto de ejemplo, asegúrate de que Android Studio reconozca tu dispositivo Vulkan conectado o Android Emulator. Deberías ver un resultado similar al siguiente:

Conectando el dispositivo de prueba a Studio.

Figura 3: Conexión del dispositivo de prueba a Android Studio

Para ejecutar el proyecto, haz lo siguiente:

  1. Usa el menú Run > Run vulkan_sample o haz clic en el botón de ejecución en la barra de herramientas y espera a que se instale y comience la muestra en tu dispositivo conectado.
  2. En el dispositivo Android conectado, autoriza las solicitudes de acceso necesarias.
    • Habilita Permitir administrar todos los archivos y, luego, presiona la flecha botón Atrás para mostrar la pantalla de inicio principal de muestra.
    • Permite el acceso al disco:
      Permitiendo el acceso al disco.

      Figura 4: Habilitación al acceso al disco

  3. Deberías ver la pantalla del menú principal de muestra, similar a la siguiente:
    Menú principal de muestra

    Figure 5: Menú principal de muestra

  4. Explora la lista de muestra y selecciona algunas opciones para ejecutar. Si eres nuevo en el desarrollo de Vulkan, puedes comenzar con ejemplos de "API". Por ejemplo, si presionas "Hello Triangle" debería mostrarse un triángulo renderizado similar al siguiente:
    Triangle

    Figura 6: Muesta de Hello Triangle

El sistema de desarrollo ya está configurado para ejecutar muestras en tu dispositivo de prueba.

Los ejemplos de Vulkan se desarrollan para varios sistemas operativos, incluidos los de computadoras de escritorio y dispositivos móviles. Algunas muestras en Rendimiento, Extensiones y Herramientas pueden ser inestables y fallar en tu dispositivo. Esto puede deberse a varios motivos, como los siguientes:

  • Las funciones específicas de Vulkan no se diseñaron para Android.
  • Tu versión del SO Android no es compatible.
  • La capacidad de la GPU de tu plataforma de hardware.

Explorar

La sección Java de la muestra de Vulkan deriva de la clase NativeActivity. Pasa eventos del ciclo de vida típicos de la aplicación, como la creación, el inicio, la detención y la destrucción del código C/C++. En la sección C/C++ de la muestra, hay un framework de muestra que implementa la funcionalidad de cambio de submuestra de tiempo de ejecución. En un nivel muy alto, los eventos y los mensajes del sistema Android pasan por la siguiente ruta para alcanzar el código de Vulkan de la app de muestra:

  • Sección NativeSampleActivity de Java
  • Sección NativeSampleActivity de C/C++
  • android_native_glue código
  • android_main
  • Framework de muestra
  • Código de la submuestra individual

android_main es el puente entre NativeSampleActivity y el código de la app, que puede ser el punto de partida para que sigas el código de muestra. Si solo deseas enfocarte en las fuentes específicas de Vulkan, puedes explorar el código en Vulkan_Samples\samples, que contiene lo siguiente:

  • Las muestras de la categoría "API"
  • Las muestras de la categoría "performance" (rendimiento)
  • Las muestras de la categoría "extensions" (extensiones)
  • Las muestras de "tooling" (herramientas)

Vulkan_Samples\shaders aloja a todos los sombreadores.

Puedes comenzar a explorar las muestras de la categoría "API" para familiarizarte con el uso básico de Vulkan y el framework de muestra. Luego, puede pasar a las muestras de la categoría "Performance" y "Extensions". Para el código del sombreador, puedes usar la vista Project en Android Studio.

Triangle shader

Figura 7: Explora el sombreador con Studio

Recursos adicionales

La API de Vulkan pasó por algunas versiones, por lo que está en desarrollo. El comité estándar de Vulkan y la comunidad de Vulkan crearon un amplio conjunto de material de Vulkan para demostrar el uso y las prácticas recomendadas de la API. En la siguiente lista, se incluyen algunos recursos para el desarrollo de aplicaciones de Vulkan: