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, 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 menu 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 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 Nó bao gồm cả SDK Android phiên bản mới nhất.
  2. Cài đặt NDK và CMake bên trong Android Studio hoặc tải xuống và cài đặt riêng cho chú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 mẫu Android:
    cd Vulkan-Samples
    ./bldsys/scripts/generate_android_gradle.sh
    
  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ư sau 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 Tạo > Tạo gói/tệp APK > Tạo tệp APK.

Bạn sẽ thấy thông báo bản dựng thành công trong cửa sổ 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 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 Chạy > Chạy vulkan_sample hoặc nhấp vào nút chạy trên thanh công cụ và đợi mẫu được cài đặt và bắt đầu trên thiết bị được kết nối của bạn.
  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 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 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 sử dụng tính năng phát triển Vulkan, bạn có thể bắt đầu bằng các mẫu “API”. Ví dụ: khi nhấn vào “Hello Triangle” sẽ hiển thị một tam giác kết xuất đồ hoạ tương tự như sau:
    Triangle

    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 Hiệu suất, Phần mở rộngCô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ợ.
  • Khả năng 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. Nó chuyển các sự kiện trong vòng đời ứng dụng thông thường, chẳng hạn như tạo ứng dụng, bắt đầu, dừng và hủy mã C/C++. 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 NativeSampleActivity Java
  • Phần NativeSampleActivity C/C++
  • 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 “hiệu suất”.
  • Mẫu danh mục "phần mở rộng".
  • Mẫu "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 "Hiệu suất" và "Mở rộng". Đối với mã đổ bóng, bạn có thể chọn chế độ xem 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. Ủy ban tiêu chuẩn Vulkan và cộng đồng Vulkan đã tạo một bộ tài liệu phong phú Vulkan, minh họa cách sử dụng và các phương pháp hay nhất về 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: