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 Android API nivel 24 o superior.

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.

Cómo 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 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, navega hasta <ndk-root>/sources/third_party/shaderc/ y ejecuta el siguiente comando:
  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.

Cómo importar

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, se debe ver el panel Project 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. Para ello, selecciona File > Open, navega hasta el directorio de origen clonado y haz clic en OK.

Cómo compilar

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: Selección de un proyecto individual para compilarlo

Cómo ejecutar

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 drawcube, 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 la ejecución. 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

Cómo usar el cargador dinámico

En los ejemplos, se usa 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 mediante dlopen() y dlsym(). Lo hace en lugar de realizar una vinculación estática con vulkan.so.

El uso de este cargador permite la vinculación del código con API nivel 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