Làm quen với Vulkan

Tài liệu này phác thảo cách làm quen với thư viện đồ họa Vulkan bằng cách tải xuống, biên dịch và chạy ứng dụng mẫu Khronos©.

Điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo bạn có sẵn phần cứng và phiên bản nền tảng phù hợp. Bạn nên sử dụng một thiết bị hoặc trình mô phỏng hỗ trợ Vulkan, chạy Android 7.0 (Nougat), API cấp 24 trở lên.

Bạn có thể xác nhận phiên bản Android của mình bằng cách chuyển tới trình đơn Cài đặt, rồi chọn Giới thiệu về điện thoại > Phiên bản Android. Sau khi chắc chắn mình đã thiết lập phiên bản nền tảng và phần cứng phù hợp, bạn có thể tải phần mềm cần thiết xuống.

Tải xuống

Trước khi bắt đầu, bạn phải tải xuống một số công cụ và phần mềm khác. Lưu ý trên kênh lưu trữ Windows, bạn nên tránh sử dụng hệ thống phân cấp đường dẫn tệp sâu đối với các công cụ và mã nguồn. Việc này là để giải quyết các giới hạn đường dẫn tệp trên một số phiên bản hệ điều hành Windows.

  1. Nếu bạn chưa có Android Studio, hãy tải xuống. Đường liên kết này bao gồm cả SDK Android phiên bản mới nhất.
  2. Cài đặt NDK và CMake từ trong Android Studio hoặc tải xuống và cài đặt riêng.
  3. Tạo và Chạy mẫu Hello JNIđể đảm bảo Android Studio đang hoạt động đúng cách.
  4. Cài đặt python3 và các thành phần khác được liệt kê trong build.md cho nền tảng lưu trữ.

Nhập

Trong phần này, bạn tải kho lưu trữ mẫu Khronos© Vulkan© xuống, tạo một dự án Android gradle rồi mở nó bằng Android Studio IDE.

  1. Thiết lập các biến môi trường sau:
    export ANDROID_HOME=/path/to/sdk-directory
    export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/{your-ndk-version-dir}
    
  2. Thêm CMake vào $PATH (được dùng để tạo tập lệnh bản dựng Android):
    export PATH=$PATH:$ANDROID_HOME/cmake/{your-cmake-version}/bin
    
  3. Mở cửa sổ dòng lệnh rồi tải mã nguồn xuống thư mục phát triển của bạn:
    cd dev-directory
    git clone --recursive https://github.com/KhronosGroup/Vulkan-Samples.git
    
  4. Làm theo các hướng dẫn này (từ Build.md) để tạo dự án Android mẫu:
    cd Vulkan-Samples
    ./scripts/generate.py android
    
  5. Mở Android Studio Chọn File (Tệp) > Open (Mở) rồi chọn Vulkan-Samples/build/android_gradle/build.gradle. Bạn sẽ thấy nội dung tương tự như bên dưới sau khi Android Studio tải dự án:
    Đang nhập dự án mẫu vào Studio.

    Hình 1. Dự án mẫu trong Android Studio.

Biên dịch

Tất cả các mẫu trong kho lưu trữ này được sắp xếp thành một dự án Android. Để biên dịch dự án, hãy làm theo một trong những cách sau:

  • Để chỉ biên dịch các nguồn, hãy sử dụng trình đơn, Build (Tạo) > Make Project (Tạo dự án) hoặc nhập phím tắt Ctrl-F9.
  • Để tạo tệp APK mẫu, hãy chọn trình đơn Build > Build Bundle(s)/APK(s) > Build APK(s) (Tạo > Tạo gói/tệp APK > Tạo APK).

Bạn sẽ thấy thông báo bản dựng thành công trong cửa sổ Build (bản dựng) của Android Studio. Trong trường hợp có lỗi, hãy khắc phục và biên dịch lại.

Biên dịch dự án mẫu bằng Studio.

Hình 2. Một bản dựng mẫu thành công.

Thực thi

Trước khi chạy dự án mẫu, hãy đảm bảo Android Studio nhận dạng được thiết bị Vulkan được kết nối hoặc Trình mô phỏng Android. Bạn sẽ thấy nội dung tương tự như sau:

Đang kết nối thiết bị thử nghiệm với Studio.

Hình 3. Kết nối thiết bị thử nghiệm với Android Studio.

Để chạy dự án, hãy làm như sau:

  1. Sử dụng trình đơn Run > Run vulkan_sample (Chạy > Chạy vulkan_sample) hoặc nhấp vào nút chạy trên thanh công cụ, sau đó đợi mẫu được cài đặt và bắt đầu trên thiết bị mà bạn kết nối.
  2. Trên thiết bị Android được kết nối, hãy cho phép các yêu cầu truy cập cần thiết.
    • bật chế độ cài đặt Allow access to manage all files (Cho phép truy cập để quản lý tất cả các tệp), sau đó nhấn vào mũi tên Back button (nút Quay lại) để trở về mẫu màn hình bắt đầu chính.
    • cho phép truy cập vào ổ đĩa:
      đang cho phép truy cập vào ổ đĩa.

      Hình 4. Cho phép truy cập vào ổ đĩa.

  3. Bạn sẽ thấy mẫu màn hình trình đơn chính tương tự như sau:
    mẫu trình đơn chính.

    Hình 5. Mẫu trình đơn chính.

  4. Duyệt qua danh sách mẫu và chọn một vài mẫu để chạy. Nếu mới làm quen với Vulkan, bạn có thể bắt đầu bằng các mẫu “API”. Ví dụ: khi nhấn vào "Hello Triangle" thì màn hình sẽ hiển thị một tam giác kết xuất đồ hoạ tương tự như sau:
    Hình tam giác

    Hình 6. Mẫu Hello Triange.

Hệ thống phát triển của bạn hiện đã được thiết lập để chạy các mẫu trên thiết bị thử nghiệm.

Mẫu Vulkan được triển khai cho nhiều hệ điều hành, bao gồm cả hệ điều hành cho máy tính và thiết bị di động. Một số mẫu trong phần Performance (Hiệu suất), Extensions (Mở rộng) và Tooling (Công cụ) có thể không ổn định và gặp sự cố trên thiết bị của bạn. Có nhiều lý do, chẳng hạn như:

  • Nhiều tính năng cụ thể của Vulkan không được thiết kế dành cho Android.
  • Phiên bản hệ điều hành Android của bạn không được hỗ trợ.
  • Sức mạnh tính toán của GPU trong nền tảng phần cứng.

Khám phá

Phần Java của mẫu Vulkan bắt nguồn từ lớp NativeActivity. Lớp này sẽ truyền vào mã C/C++ các sự kiện thông thường trong vòng đời của ứng dụng, chẳng hạn như tạo, bắt đầu, dừng và huỷ ứng dụng. Trong phần C/C++ của mẫu, có bộ khung mẫu triển khai thời gian chạy mẫu phụ chuyển đổi chức năng. Ở cấp độ rất cao, các sự kiện/thông báo của hệ thống Android sẽ qua đường dẫn sau để truy cập vào mã Vulkan của ứng dụng mẫu:

  • Phần Java NativeSampleActivity
  • Phần C/C++ NativeSampleActivity
  • android_native_glue
  • android_main
  • Bộ khung mẫu
  • Mã của từng mẫu phụ

android_main là cầu nối giữa NativeSampleActivity và mã ứng dụng, có thể là điểm bắt đầu để bạn theo dõi mã mẫu. Nếu chỉ muốn tập trung vào các nguồn cụ thể của Vulkan, bạn có thể khám phá mã tại Vulkan_Samples\samples, trong đó có các thông tin sau:

  • Mẫu danh mục “api”.
  • Mẫu danh mục “performance” (hiệu suất).
  • Mẫu danh mục "extensions" (mở rộng).
  • Mẫu "tooling" (công cụ).

Vulkan_Samples\shaders là nơi dành cho tất cả các chương trình đổ bóng.

Bạn có thể bắt đầu duyệt mẫu danh mục “API” để làm quen với cách sử dụng Vulkan cơ bản và bộ khung mẫu. Sau đó, bạn có thể chuyển sang danh mục mẫu "Performance" (Hiệu suất) và "Extensions" (Mở rộng). Đối với mã đổ bóng, bạn có thể chọn chế độ xem Project (Dự án) trong Android Studio.

Chương trình đổ bóng hình tam giác.

Hình 7. Khám phá chương trình đổ bóng bằng Studio.

Tài nguyên khác

API Vulkan đã trải qua một vài phiên bản, do đó nó đã hoàn thiện. Uỷ ban tiêu chuẩn Vulkan và cộng đồng Vulkan đã tạo một bộ tài liệu phong phú về Vulkan, minh hoạ các phương pháp hay nhất và cách dùng API. Danh sách sau đây chứa một số tài nguyên cho việc phát triển ứng dụng Vulkan: