תחילת העבודה עם Vulkan

במסמך הזה מוסבר איך להתחיל להשתמש בספריית הגרפיקה של Vulkan על ידי הורדה, הידור והפעלה של אפליקציה לדוגמה של Khronos©.

דרישות מוקדמות

לפני שמתחילים, חשוב לוודא שיש לכם את גרסת החומרה והפלטפורמה המתאימה. צריך להשתמש במכשיר או באמולטור שתומך ב-Vulkan, עם Android מגרסה 7.0 (Nougat), API ברמה 24 ואילך.

כדי לבדוק איזו גרסת Android מותקנת במכשיר, עוברים לתפריט הגדרות. ובחירה באפשרות מידע על הטלפון > גרסת Android. אחרי שתוודאו אם הגדרתם את גרסת החומרה והפלטפורמה המתאימה, תוכלו להוריד את התוכנה המתאימה.

הורדה

לפני שמתחילים, צריך להוריד כמה כלים ותוכנות אחרות. שימו לב שבמארח של Windows, מומלץ להימנע מהיררכיית נתיבים עמוקה של קבצים עבור כלים וקוד מקור. היא נועדה לעקוף מגבלות נתיב קבצים בחלק מהגרסאות של Windows OS.

  1. אם עוד לא הורדתם את אפליקציית Android Studio, מורידים אותה. הגרסה הזו כוללת את Android SDK העדכני ביותר.
  2. התקנת NDK ו-CMake מתוך Android Studio או להוריד ולהתקין אותם בנפרד.
  3. יצירה והפעלה של דוגמת JNI של Hello כדי לוודא ש-Android Studio פועל כמו שצריך.
  4. התקנת python3 ורכיבים אחרים שמופיעים ב-build.md לפלטפורמת המארח שלכם.

ייבוא

בקטע הזה, מורידים את מאגר הדגימות של Khronos© Vulkan©, ויוצרים שדרוג ל-Android. בפרויקט הרלוונטי, ופותחים אותו בסביבת הפיתוח המשולבת Android Studio IDE.

  1. מגדירים את משתני הסביבה הבאים:
    export ANDROID_HOME=/path/to/sdk-directory
    export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/{your-ndk-version-dir}
    
  2. מוסיפים את CMake ל $PATH, שמשמש ליצירת סקריפטים של build ל-Android:
    export PATH=$PATH:$ANDROID_HOME/cmake/{your-cmake-version}/bin
    
  3. פותחים טרמינל ומורידים את קוד המקור לספריית הפיתוח:
    cd dev-directory
    git clone --recursive https://github.com/KhronosGroup/Vulkan-Samples.git
    
  4. יש לבצע את ההוראות הבאות (באתר Build.md) כדי ליצור את הפרויקט לדוגמה של Android:
    cd Vulkan-Samples
    ./scripts/generate.py android
    
  5. פותחים את Android Studio. בוחרים באפשרות File > (קובץ >) פתיחה ובחירה Vulkan-Samples/build/android_gradle/build.gradle. אחרי הטעינה של Android Studio אתם אמורים לראות משהו דומה לזה הפרויקט:
    מתבצע ייבוא של פרויקט לדוגמה אל Studio.

    איור 1. הפרויקט לדוגמה ב-Android Studio.

הידור

כל הדוגמאות במאגר הזה מאורגנות בפרויקט Android אחד. כדי להדר מבצעים אחת מהפעולות הבאות:

  • כדי להדר את המקורות בלבד, משתמשים בתפריט יצירה > יצירת פרויקט, או מקישים על מקש הקיצור Ctrl-F9.
  • כדי ליצור את קובץ ה-APK לדוגמה, בוחרים בתפריט Build > יצירת חבילות/חבילות APK > יצירת חבילות APK.

ההודעה על ה-build אמורה להופיע בחלון Build של Android Studio. אם מופיעות שגיאות, צריך לתקן אותן ולהידור מחדש.

המערכת אוספת פרויקט לדוגמה באמצעות Studio.

איור 2. build לדוגמה מוצלח.

ביצוע

לפני הרצת הפרויקט לדוגמה, עליך לוודא ש-Android Studio מזהה את מכשיר Vulkan או אמולטור Android מחובר. אתם אמורים לראות משהו כמו הבאים:

מתבצע חיבור של מכשיר הבדיקה ל-Studio.

איור 3. מחברים את מכשיר הבדיקה ל-Android Studio.

כדי להפעיל את הפרויקט:

  1. השתמש בתפריט הפעלה > מריצים את vulkan_sample או לוחצים על לחצן ההרצה בסרגל הכלים, ולהמתין ל- הדוגמה שצריך להתקין כדי להתקין ולהפעיל במכשיר המחובר.
  2. במכשיר Android המחובר, מאשרים את בקשות הגישה הנדרשות.
    • מפעילים את האפשרות הענקת גישה כדי לנהל את כל הקבצים, ואז מקישים על החץ לחצן 'הקודם'. כדי להחזיר את מסך ההתחלה הראשי לדוגמה.
    • מאפשרים גישה לדיסק:
      שמאפשרת גישה לדיסק.

      איור 4. מפעילים גישה לדיסק.

  3. אתם אמורים לראות את מסך התפריט הראשי לדוגמה, באופן הבא:
    תפריט ראשי לדוגמה.

    איור 5. תפריט ראשי לדוגמה.

  4. מעיינים ברשימת הדוגמאות ובוחרים כמה דוגמאות להרצה. אם זו הפעם הראשונה שאתם מפתחים את Vulkan, תוכלו להתחיל עם דוגמאות 'API'. לדוגמה, הקשה על 'משולש שלום' אמורה להציג משולש מעובד דומה לנוסחה:
    משולש

    איור 6. שלום לדוגמה של Triange.

מערכת הפיתוח שלך מוגדרת עכשיו להרצת דוגמאות במכשיר הבדיקה.

דגימות Vulkan פותחו עבור מערכות הפעלה מרובות, כולל מערכות ההפעלה במחשבים שולחניים ובניידים. חלק מהדוגמאות בקטעים ביצועים, תוספים כלי עזר עלול להיות לא יציב ולקרוס במכשיר. יכולות להיות לכך כמה סיבות, כ:

  • התכונות הספציפיות של Vulkan לא תוכננו ל-Android.
  • אין תמיכה בגרסת Android OS במכשיר.
  • יכולת ה-GPU של פלטפורמת החומרה.

אפשרויות נוספות

הקטע Java בדוגמת Vulkan נגזר מהמחלקה NativeActivity. הוא עובר אפליקציה רגילה אירועים במחזור החיים, כמו יצירה, הפעלה, עצירה והשמדה של אפליקציה ל-C/C++ בקטע C/C++ שבדגימה, יש framework לדוגמה. שמטמיעה את פונקציונליות ההחלפה של דגימות משנה של זמן ריצה. במידה רבה ככלל, אירועים/הודעות במערכת Android עוברים את הנתיב הבא אל להגיע לקוד ה-Vulkan של האפליקציה לדוגמה:

  • NativeSampleActivity קטע של Java
  • NativeSampleActivity קטע C/C++
  • קוד אחד (android_native_glue)
  • android_main
  • מסגרת לדוגמה
  • קוד של תת-דוגמה בודדת

android_main הוא הגבול בין NativeSampleActivity לקוד האפליקציה, זו יכולה להיות נקודת ההתחלה שבה תרצו לעקוב אחרי הקוד לדוגמה. אם רק שרוצים להתמקד במקורות הספציפיים של Vulkan, אפשר לחקור את הקוד Vulkan_Samples\samples, שכולל את הפרטים הבאים:

  • דוגמאות של קטגוריית 'api'.
  • דוגמאות לקטגוריות 'ביצועים'.
  • דוגמאות של קטגוריות 'תוספים'.
  • דוגמאות של 'כלים'.

מכשירי Vulkan_Samples\shaders הם הבית לכל תוכנות ההצללה.

תוכלו להתחיל לעיין בדוגמאות של קטגוריות API כדי להכיר את שימוש ב-Vulkan וה-framework לדוגמה. לאחר מכן תוכלו להתקדם דוגמאות לקטגוריות 'ביצועים' ו'תוספים'. לקוד של תוכנת ההצללה, אפשר להשתמש בתצוגה פרויקט ב-Android Studio.

תוכנת ההצללה (shader) של משולש.

איור 7. להתנסות בכלי ההצללה באמצעות Studio.

מקורות מידע נוספים

Vulkan API עבר כמה גרסאות, אז הוא בשלבי בוגר. הוולקן הוועדה הרגילה וקהילת Vulkan יצרו אוסף עשיר של Vulkan שמדגים את השימוש ב-API ואת השיטות המומלצות. הבאים מכילה כמה משאבים לפיתוח אפליקציות של Vulkan: