Configuración de Vulkan

En este documento, te explicamos la manera de dar los primeros pasos con la biblioteca de gráficos de Vulkan mediante la descarga, compilación y ejecución de varias apps de ejemplo.

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

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

Descarga

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 archivo profunda para las herramientas y el código fuente; esto es para evitar límites de ruta 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 desde Android Studio o descárgalo manualmente.
  3. Para compilar Shaderc, desplázate a <ndk-root>/sources/third_party/shaderc/ y ejecuta el comando a continuación.
  4. En Mac o Linux:

        $ ../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk \
         APP_ABI=all APP_PLATFORM=android-24 APP_STL:=c++_static \
         -j8 clean libshaderc_combined
        

    En Windows:

        ..\..\..\ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk ^
         APP_ABI=all APP_PLATFORM=android-24 APP_STL=c++_static ^
         -j8 clean libshaderc_combined
        

    Consulta el artículo Compiladores de sombreadores para obtener documentación adicional sobre Shaderc.

Importa

Puedes importar ejemplos de la API de Vulkan© en Android Studio con uno de estos métodos:

  1. Automáticamente con Android Studio: Selecciona File > New > Import Sample y luego NDK > Vulkan API Samples.

    Es posible que veas errores relacionados con componentes faltantes o una versión de SDK faltante. Cuando aparezcan estos mensajes, sigue las indicaciones de instalación en Android Studio. Esos pasos deberían servir para corregir los errores automáticamente.

    Después de varios minutos, el panel Project debe verse como la ventana que se muestra en la figura 1.

    Panel Project después de la importación de ejemplos a Android Studio

    Figura 1: Panel Project donde se muestran los ejemplos una vez importados.

  2. Manualmente con una terminal:
    • Descarga el código fuente:
      git clone https://github.com/googlesamples/vulkan-basic-samples.git
    • Abre los ejemplos con Android Studio. Selecciona File > Open, navega hasta el directorio de origen clonado y haz clic en OK.

Compila

Para compilar tu proyecto, sigue estos pasos:

  1. Selecciona tu proyecto en el panel Project de Android Studio.
  2. Desde el menú Build, selecciona Make Module <module-name> o elige Build APK para generar el APK.
  3. Resuelve los problemas de dependencia y luego realiza la compilación. Como se muestra en la figura 2, puedes seleccionar proyectos individuales para la compilación seleccionándolos de la lista desplegable de configuración.
  4. Cómo seleccionar el proyecto del cubo 3D desde el menú desplegable de configuración

    Figura 2: Selecciona un proyecto individual para compilarlo.

Nota: Los ejemplos adicionales del tutorial ilustran el uso de sombreadores compilados con compilación sin conexión integrada a Android Studio. Para que resulte más simple, cada tutorial es independiente y realiza la compilación conforme a los procedimientos estándar de Android Studio.

Ejecuta

Para ejecutar tu proyecto, elige el APK que ejecutarás en Run > Run <project-name>.

Para depurar un APK, selecciona Run > Debug <project-name>. Por ejemplo, para el cubo 3D, ejecuta 15-draw_cube.

La mayoría de los ejemplos tienen funcionalidad simple para demostrar cómo usar una API y se detienen automáticamente después de ejecutarse. El ejemplo del cubo 3D es uno de los más interesantes en términos visuales. Cuando lo ejecutes, deberá mostrar la imagen que aparece en la figura 3.

. Si la ejecución es exitosa, se mostrará un cubo multicolor.

Figura 3: El programa compilado exitosamente se ejecuta y genera una representación.

Uso del cargador dinámico

Los ejemplos usan una función de ayuda llamada cargador dinámico que se define en vulkan_wrapper.h/cpp para recuperar punteros de la API de Vulkan usando dlopen() y dlsym(). Hace esto en lugar de vincularlos de forma estática con vulkan.so.

El uso de este cargador permite la vinculación del código con el nivel de API 23 y versiones anteriores de la plataforma. Esas versiones anteriores no incluyen la biblioteca compartida vulkan.so, pero pueden ejecutarse en dispositivos compatibles con la API de Vulkan.

En el siguiente fragmento, se muestra la manera de usar el cargador dinámico.

    #include "vulkan_wrapper.h" // Include Vulkan_wrapper and dynamically load symbols.
    ...
    // Before any Vulkan API usage,
    InitVulkan();
    

Recursos adicionales