טירגוט פורמטים של דחיסת נתוני טקסטורה בקובצי Android App Bundle

מרקמים הן תמונות שאפשר להחיל על פני השטח של מודל תלת-ממדי. מרקמים משמשים גם לעיבודים בדו-ממד כדי לצייר אלמנטים כמו דמויות sprite או רקעים. בדף הזה מתוארים פורמטים פופולריים של דחיסת נתוני טקסטורה שמשמשים במשחקים, ואיך לטרגט אותם בקובצי Android App Bundle. נקראו מידע על קובצי Android App Bundle ועל Play Asset Delivery לפני שמתחילים את הפעולה מותאמת אישית.

רקע

מעבדי GPU בדרך כלל תומכים בקבוצה של פורמטים לדחיסת נתוני טקסטורה. א' פורמט דחיסת נתונים של טקסטורה (או TCF) הוא פורמט קובץ שמותאם למעבדי GPU. ה-GPU נטען ומעבד את המרקם מהר יותר, ועם פחות זיכרון מאשר במקרה כזה השתמשו במערך של ערכי RGBA בזיכרון. התמיכה הזו ניתנת רמת החומרה: יצרן ה-GPU מטמיע רכיבים בכרטיסים הגרפיים צ'יפ שקורא, מבטל דחיסה ומעבד את הפורמטים הנתמכים.

בטבלה הבאה מפורטים הפורמטים הנפוצים של דחיסת טקסטורה בחומרה מודרנית לניידים:

  • ASTC: פורמט חדש שנועד להחליף פורמטים קודמים. גמיש יותר מ- הפורמטים הקודמים בגלל תמיכה בגדלים שונים של בלוקים. באמצעות הפורמט הזה היא דרך טובה לבצע אופטימיזציה לגודל המשחק.
  • ETC2: נתמך על ידי כל המכשירים שתומכים ב-OpenGL ES 3.0 ואילך. המספר הזה כולל כמעט את כל המכשירים הניידים עם Android פעילים.

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

פורמט דחיסת נתוני המרקם אחוז מכשירי Google Play עם תמיכה
ASTC >80%
ETC2 >95%

מעבדי GPU למחשבים שולחניים עם Google Play Games במחשב תומכים גם בפורמט הזה:

  • DDS או S3TC: נקרא לפעמים BCn, DXTC או DXTn.

פורמטים ישנים יותר של דחיסת טקסטורה שכבר לא מומלצים כוללים:

  • ETC1: נתמך ברוב המכשירים. בפורמט הזה אין תמיכה בשקיפות, אבל משחקים יכולים להשתמש בקובץ מרקם שני לרכיב האלפא.
  • PVRTC: פופולרי במשחקי iOS, ונתמך גם במכשירי Android מסוימים.

תמיכה ב-ETC1 היא רק דרישה למשחקים שתומכים מדור קודם מאוד מכשירים נבחרים או מכשירי Android TV נבחרים שלא תומכים ב-OpenGL ES 3.0 וגם גבוהה יותר.

פורמט ברירת מחדל

יש המון פורמטים זמינים (עם רמות שונות של תמיכה במכשירים), לא תדע באילו פורמטים להשתמש במהלך פיתוח המרקמים של המשחק שלך. בתור אמצעי הגנה, פורמט ה-App Bundle מאפשר לבחור דחיסת טקסטורה כברירת מחדל לכל חבילת נכסים. אם המכשיר לא תומך באפשרות שצוינה נכסים בפורמט ברירת המחדל הזה מותקנים.

אלא אם המודעות שלך מטורגטות לחומרת מכשירים ישנים מאוד, האפשרות ETC2 היא בחירה טובה. לפורמט ברירת מחדל. עליך להשתמש בפורמטים של ETC2 שמובטחים נתמך ב-OpenGL ES 3.0. הפורמטים האלה זמינים גם ב-Vulkan Graphics API.

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

אם המשחק תומך ב-Google Play Games במחשב ומשתמש ב-Vulkan, לכלול מרקמים של S3TC. הפורמטים של S3TC נתמכים על ידי את כל יחידות ה-GPU למחשב.

בניית App Bundle

ב-Google Play נעשה שימוש בקובצי Android App Bundle כדי ליצור ולהציג חבילות APK שעברו אופטימיזציה בשביל בהגדרת המכשיר של כל משתמש, כך שהמשתמשים יורידו רק את הקוד והמשאבים שהם צריכים כדי להפעיל את המשחק. חבילות ה-APK שעברו אופטימיזציה כוללות טקסטורה אחת נכסים, בפורמט של פורמט הדחיסה האופטימלי למכשיר.

אם המשחק לא ב-Unity, משתמשים ב-Gradle כדי ליצור App Bundle. משתמשים מתקדמים עשויים לרצות להשתמש ב-bundletool.

אם המשחק ב-Unity, יש תמיכה בקובצי App Bundle עם Play Asset Delivery זמינה ב-Unity מגרסה 2021.3 ואילך. מידע נוסף זמין במאמר מסמכי תיעוד של Unity. אפשר להשתמש בפלאגין של Unity כדי ליצור App Bundle עם גרסאות של Unity.

שימוש ב-Gradle

  1. מעדכנים את גרסת הפלאגין של Android Gradle בפרויקט build.gradle אל גרסה 4.1 ואילך (לדוגמה, com.android.tools.build:gradle:4.1.0).

  2. קובעים את קבוצת סוגי המכשירים שרוצים לטרגט במשחק, או אילו פורמטים של דחיסת טקסטורה הם תומכים (למידע נוסף על פורמטים נוספים, ראו רקע).

  3. ליצור גרסאות של הנכסים לכל פורמט דחיסה של טקסטורה לשלב הקודם. ייתכן שיהיה צורך ליצור גיליונות sprite באמצעות תוכנה לייק TexturePacker, או הרצת סקריפט שממיר נכסים גולמיים לנכסים בפורמט ספציפי (לדוגמה, astc-coder).

  4. יוצרים חבילות נכסים (מידע נוסף: Build for C++ או Java), שמכילים את נכסי המשחק ומשמשים את Play Asset Delivery. עבור לדוגמה, אפשר ליצור חבילת נכסים אחת לכל רמה או חבילות נכסים עבור חלקים שונים במשחק.

  5. בתוך חבילות הנכסים, מוסיפים ספריות לכל פורמט לדחיסת נתוני טקסטורה. שבה אתם רוצים לתמוך. הוספת סיומות נתמכות אל השמות של ספריית הטקסטורות שתואמים לדחיסת המרקמים בפורמט של הקבצים הכלולים.

    יוצרים ספרייה ללא סיומת בשם שלה (לדוגמה, common/src/main/assets/textures/). בספרייה הזו, מציבים את ברירת המחדל של נכסי הטקסטורה. פורמט ברירת המחדל צריך להיות נתמך על ידי רוב המכשירים (לדוגמה, ETC1 או ETC2). אם מכשיר לא תומך בפורמטים אחרים שצוינו (לדוגמה, PVRTC ו-ASTC בטבלה שבהמשך), חנות Google Play תתקין את הספרייה הזו במקום זאת.

    ספריה לפני ספרייה אחרי
    common חבילת נכסים:
    shared/build.gradle
    shared/src/main/assets/textures/...
    common חבילת נכסים:
    shared/build.gradle
    shared/src/main/assets/textures/...
    Common/src/main/assets/textures#tcf_astc/...
    Common/src/main/assets/textures#tcf_pvrtc/...
    level1 חבילת נכסים:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1 חבילת נכסים:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1/src/main/assets/textures#tcf_astc/...
    level1/src/main/assets/textures#tcf_pvrtc/...
    level2 חבילת נכסים:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2 חבילת נכסים:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2/src/main/assets/textures#tcf_astc/...
    level2/src/main/assets/textures#tcf_pvrtc/...
  6. עליך לעדכן את קובץ build.gradle של האפליקציה כדי להפעיל את הפיצול חבילות נכסים לכל טקסטורות.

    // In the app build.gradle file:
    android {
        ...
        bundle {
            texture {
                enableSplit true
            }
        }
    }
    
  7. ב-Android Studio, בוחרים באפשרות Build > (פיתוח >) יצירת חבילה / APK חתומה, או להפעיל את Gradle משימה משורת הפקודה עד יוצרים את החבילה.

שימוש בפלאגין של Google Play Unity

הורדת הפלאגין (או החבילה) של Unity ל-Play Asset Delivery כדי ליצור App Bundle עם חבילות נכסים מטורגטות לפי טקסטורה.

הכנת הנכסים

כדי להכין את נכסי הטקסטורה לבניית App Bundle, צריך לבצע את הפעולות הבאות:

  1. לארוז את הסצנה ואת הנכסים לכמה יחידות Unity AssetBundles.

  2. קובעים את קבוצת סוגי המכשירים שרוצים לטרגט במשחק, או אילו פורמטים של דחיסת טקסטורה הם תומכים (למידע נוסף על פורמטים נוספים, ראו רקע).

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

    using Google.Android.AppBundle.Editor;
    using UnityEditor;
    
    public class MyBundleBuilder
    {
       [MenuItem("Assets/Build AssetBundles TCF variants")]
       public static void BuildAssetBundles()
       {
           // Describe the AssetBundles to be built:
           var assetBundlesToBuild = new []
           {
               new AssetBundleBuild
               {
                   assetBundleName = "level1-textures",
                   assetNames = new[] {"level1/character-textures", "level1/background-textures"}
               },
               new AssetBundleBuild
               {
                   assetBundleName = "level2-textures",
                   assetNames = new[] {"level2/character-textures", "level2/background-textures"}
               }
           };
    
           // Describe where to output the asset bundles and in which formats:
           var outputPath = "Assets/AssetBundles";
           var defaultTextureFormat = MobileTextureSubtarget.ETC2;
           var additionalTextureFormats = new[] { MobileTextureSubtarget.ASTC, MobileTextureSubtarget.PVRTC }
           var allowClearDirectory = true;
    
           // Generate asset bundles:
           AssetBundleBuilder.BuildAssetBundles(
               outputPath,
               assetBundlesToBuild,
               BuildAssetBundleOptions.UncompressedAssetBundle,
               defaultTextureFormat,
               additionalTextureFormats,
               allowClearDirectory);
    
           // While in this example we're using the UI to configure the
           // AssetBundles, you can use the value returned by BuildAssetBundles
           // to configure the asset packs, if you want to build the bundle
           // entirely using the scripting API.
       }
    }
    
  4. מוודאים שכל נכס טקסטורה מתקבל בספרייה עם בשם הסיומת (לדוגמה, #tcf_astc).

    איך מוודאים שהפלט של ספרייה שאין לה סיומת בשם שלה (לדוגמה, Assets/AssetBundles/). ספרייה זו מכילה את פורמט ברירת המחדל של נכסי טקסטורה. רוב המכשירים אמורים לתמוך בפורמט ברירת המחדל הזה ( לדוגמה, ETC2). אם המכשיר לא תומך בפורמטים האחרים שצוינו (לדוגמה, ASTC בקוד מהשלב הקודם), ולאחר מכן Google Play Google Store מתקינה את הספרייה הזו במקום זאת.

    Assets/AssetBundles.meta
    Assets/AssetBundles/AssetBundles
    Assets/AssetBundles/AssetBundles.manifest
    Assets/AssetBundles/AssetBundles.manifest.meta
    Assets/AssetBundles/AssetBundles.meta
    Assets/AssetBundles/samplescene
    Assets/AssetBundles/samplescene.manifest
    Assets/AssetBundles/samplescene.manifest.meta
    Assets/AssetBundles/samplescene.meta
    Assets/AssetBundles/texturesbundle
    Assets/AssetBundles/texturesbundle.manifest
    Assets/AssetBundles/texturesbundle.manifest.meta
    Assets/AssetBundles/texturesbundle.meta
    Assets/AssetBundles#tcf_astc.meta
    Assets/AssetBundles#tcf_astc/AssetBundles
    Assets/AssetBundles#tcf_astc/AssetBundles.manifest
    Assets/AssetBundles#tcf_astc/AssetBundles.manifest.meta
    Assets/AssetBundles#tcf_astc/AssetBundles.meta
    Assets/AssetBundles#tcf_astc/samplescene
    Assets/AssetBundles#tcf_astc/samplescene.manifest
    Assets/AssetBundles#tcf_astc/samplescene.manifest.meta
    Assets/AssetBundles#tcf_astc/samplescene.meta
    Assets/AssetBundles#tcf_astc/texturesbundle
    Assets/AssetBundles#tcf_astc/texturesbundle.manifest
    Assets/AssetBundles#tcf_astc/texturesbundle.manifest.meta
    Assets/AssetBundles#tcf_astc/texturesbundle.meta
    
  5. בוחרים באפשרות Google > Android > העלאת נכסים

  6. לוחצים על הוספת תיקייה כדי להוסיף את התיקייה שמכילה את נכס ברירת המחדל חבילות. החבילות האלה מותקנות במכשירים שלא תומכים במכשיר האחר הפורמטים שאתם מגדירים.

    חשוב להגדיר את מצב ההעברה של AssetBundle.

    פורמט ברירת המחדל למסירה של Unity AssetBundle

  7. לוחצים על Add Folder (הוספת תיקייה) כדי להוסיף תיקייה שמכילה את AssetBundles שנוצרו עבור פורמט אחר (לדוגמה, ASTC). חוזרים על הפעולה לפי הצורך.

    חשוב להגדיר את מצב ההעברה לכל נכס AssetBundle.

    פורמט ASTC למסירה של Unity AssetBundle

Build

בוחרים באפשרות Google > בניית קובץ Android App Bundle להפעלת גרסת ה-build של Unity משחק. הוא גם מקבץ את AssetBundles לכמה חבילות נכסים שבהן כל השם AssetBundle מומר לחבילת נכסים אחת.

(מתקדם) שימוש ב-bundletool

מידע נוסף על bundletool זמין במאמר יצירת App Bundle באמצעות Bundletool.

כדי ליצור את ה-App Bundle, צריך לבצע את הפעולות הבאות:

  1. הורדה bundletool ממאגר ה-GitHub שלו.

  2. קובעים את קבוצת סוגי המכשירים שרוצים לטרגט במשחק, או אילו פורמטים של דחיסת טקסטורה הם תומכים (למידע נוסף על פורמטים נוספים, ראו רקע).

  3. ליצור גרסאות של הנכסים לכל פורמט דחיסה של טקסטורה לשלב הקודם. ייתכן שיהיה צורך ליצור גיליונות sprite באמצעות תוכנה לייק TexturePacker, או הרצת סקריפט שממיר נכסים גולמיים לנכסים בפורמט ספציפי (לדוגמה, astc-coder).

  4. יוצרים חבילות נכסים (מידע נוסף: Build for C++ או Java), שמכילים את נכסי המשחק ומשמשים את Play Asset Delivery. עבור לדוגמה, אפשר ליצור חבילת נכסים אחת לכל רמה או חבילות נכסים עבור חלקים שונים במשחק.

  5. בחבילות הנכסים השונות, מוסיפים סיומות נתמכות. לשמות של ספריית המרקמים שמתאימים לדחיסת נתוני הטקסטורה בפורמט של הקבצים הכלולים.

    יוצרים ספרייה ללא סיומת בשם שלה (לדוגמה, common/src/main/assets/textures/). בספרייה הזו, מציבים את ברירת המחדל של נכסי הטקסטורה. פורמט ברירת המחדל צריך להיות נתמך על ידי רוב המכשירים (לדוגמה, ETC1 או ETC2). אם מכשיר לא תומך בפורמטים אחרים שצוינו (לדוגמה, PVRTC ו-ASTC בטבלה שבהמשך), חנות Google Play תתקין את הספרייה הזו במקום זאת.

    ספריה לפני ספרייה אחרי
    common חבילת נכסים:
    shared/build.gradle
    shared/src/main/assets/textures/...
    common חבילת נכסים:
    shared/build.gradle
    shared/src/main/assets/textures/...
    Common/src/main/assets/textures#tcf_astc/...
    Common/src/main/assets/textures#tcf_pvrtc/...
    level1 חבילת נכסים:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1 חבילת נכסים:
    level1/build.gradle
    level1/src/main/assets/textures/...
    level1/src/main/assets/textures#tcf_astc/...
    level1/src/main/assets/textures#tcf_pvrtc/...
    level2 חבילת נכסים:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2 חבילת נכסים:
    level2/build.gradle
    level2/src/main/assets/textures/...
    level2/src/main/assets/textures#tcf_astc/...
    level2/src/main/assets/textures#tcf_pvrtc/...
  6. מוסיפים את המאפיין TCF אל קובץ מטא-נתונים של App Bundle (BundleConfig.json). שימוש ב-TEXTURE_COMPRESSION_FORMAT עבור value שדה:

    {
      ...
      "optimizations": {
        "splitsConfig": {
          "splitDimension": [
          ...
          {
             "value": "TEXTURE_COMPRESSION_FORMAT",
             "negate": false,
             "suffixStripping": {
               "enabled": true,
               "defaultSuffix": ""
              }
          }],
        }
      }
    }
    

    מגדירים את suffixStripping.enabled לערך true כדי להסיר את הסיומת (לדוגמה, #tcf_astc) משמות הספריות בזמן היצירה של חבילות הנכסים. הזה מאפשרת למשחק לקרוא קבצים משם ספרייה ידוע (כמו level1/assets/textures). חלק ממנועי המשחקים יכולים לזהות את הפורמט של כך שהמשחק יכול להיות שונה מהפורמט של נכסי טקסטורה באמצעותו הוא הותקן.

    suffixStripping.defaultSuffix מציין את סיומת הספרייה המוגדרת כברירת המחדל כאשר מערכת bundletool יוצרת חבילת APK עצמאית למכשירים שמותקן בהם Android 5.0 (API רמה 21) ומטה. בטבלה לדוגמה הקודמת, גרסת ברירת המחדל של נכסי הטקסטורה מותקנים במכשירים האלה. זו המטרה ברוב המקרים.

  7. יוצרים את ה-App Bundle:

    bundletool build-bundle --config=BUILD_CONFIG.json \
      --modules=level1.zip,level2.zip,common.zip,base.zip --output=MY_BUNDLE.aab
    

אימות התוכן של ה-App Bundle

אם עדיין לא עשיתם זאת, הורדה של bundletool ממאגר ב-GitHub.

אימות התוכן של קובץ ה-App Bundle של הפלט על ידי בניית חבילות APK ממנו ו ולבדוק אותם:

bundletool build-apks --output=APKS.apks --bundle=MY_BUNDLE.aab
zipinfo APKS.apks

הפלט אמור להיראות כך:

toc.pb
splits/base-master.apk
splits/base-armeabi_v7a.apk
splits/…
asset-slices/level1-astc.apk
asset-slices/level1-other_tcf.apk
asset-slices/level1-pvrtc.apk

השמות האלה מציינים שהטירגוט ב-TCF מיושם בצורה תקינה. אם מחלצים את תוכן ה-APK של הרמה (לדוגמה, asset-slices/level1-astc.apk), המערכת יכולה לאמת שקיימת רק ספרייה אחת בשם textures.

בדיקת ה-App Bundle

מחברים מכשיר ומתקינים את חבילות הנכסים הרלוונטיות:

bundletool install-apks --apks=APKS.apks

הפקודה הזו מתקינה רק את חבילות הנכסים שעומדות במפרט של המכשיר. המפרטים האלה כוללים את ממשק ה-ABI, דחיסות המסך, שפה את הפורמט הרלוונטי של דחיסת נתוני טקסטורה. הפעולה הזו מדמה את הפעולה חנות Google Play של המשחק שפרסמתם.

כדי לוודא שחבילות הנכסים הנכונות הותקנו, מבצעים אחת מהפעולות הבאות:

  • משתמשים בפקודה bundletool extract-apks כדי ליצור פלט של חבילות ה-APK שהותקנו עבור את המכשיר לספרייה ולאחר מכן לבדוק את הספרייה הזו.

    1. מחלצים את מפרט המכשיר:

      bundletool get-device-spec --output=MY_DEVICE_SPEC.json
      
    2. מריצים את bundletool extract-apks עם מפרט המכשיר הבא:

      bundletool extract-apks --apks=APKS.apks --device-spec=MY_DEVICE_SPEC.json \
          --output-dir out
      
    3. יש להציג את רשימת הקבצים בספרייה out ולוודא שחבילות הנכסים המתאימות מותקנות. השמות של חבילות הנכסים מסתיימים בשם של פורמט הטקסטורה (עבור לדוגמה, level1-astc.apk).

  • הוספת הצהרות יומן במשחק שמפיקות פלט של פורמט הטקסטורה בזמן הטעינה של טקסטורה.

  • צרו קבוצת בדיקה של טקסטורות (לדוגמה, החליפו מרקם במרקם בצבע בהיר אחד לפורמט נתון). צריך להפעיל את המשחק ולוודא כיום.

אם האפליקציה שלך מכילה on-demand או fast-follow חבילות נכסים, צריך להשתמש ב פתרון בדיקה מקומי להעברת נכסים.

סיומות נתמכות לשמות של ספריית טקסטורות

מערכת Google Play מבינה את הסיומות הבאות שנמצאות בשימוש בשמות של ספריית טקסטורות:

  • #tcf_astc לדחיסה של טקסטורה ניתנת להתאמה (ASTC)
  • #tcf_atc לדחיסת טקסטורה ATI (ATC)
  • #tcf_dxt1 לדחיסת טקסטורה S3 DXT1 (DXT1)
  • #tcf_latc לדחיסת טקסטורה מסוג Luminance-Alpha (LATC)
  • #tcf_paletted לדחיסת נתונים בצבעים גנריים
  • #tcf_pvrtc לדחיסת טקסטורה ב-PowerVR (PVRTC)
  • #tcf_etc1 לדחיסת המרקם של Ericsson (ETC1)
  • #tcf_etc2 לדחיסה של המרקם 2 של Ericsson (ETC2)
  • #tcf_s3tc לדחיסת טקסטורה S3 (S3TC)
  • #tcf_3dc לדחיסת טקסטורה ATI 3Dc (3Dc)

כללי הצגת מודעות ב-Google Play

Google Play בודקת את מחרוזות תוסף ה-OpenGL שבהן המכשיר משתמש גרסת OpenGL שנתמכת על ידי המכשיר. Google Play משתמשת במידע הזה כדי לקבוע את פורמט הטקסטורה המתאים שיש לשלוח למכשיר מ-Android קובץ App Bundle

Google Play מספקת את הפורמט הראשון, לפי הסדר הבא בטבלה שנתמכת על ידי המכשיר.

אם אף אחד מהפורמטים של הטקסטורה בקובץ ה-App Bundle לא נתמך במכשיר: Google Play מספקת את פורמטים של טקסטורה ארוזים בפורמט ברירת המחדל. (אלא אם הגדרת טירגוט לחומרה ספציפית של המכשיר, ETC1 או ETC2 מתאימים של פורמט ברירת המחדל). לקבלת מידע על אופן האריזה של נכסים פורמט ברירת המחדל מופיע במאמר שימוש ב-bundletool או משתמשים בפלאגין של Google Play Unity.

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

פורמט (מוגדר ב-tcf_xxxx) נתמך במכשירים עם OpenGL מחרוזת תוסף
ASCII GL_KHR_texture_compression_astc_ldr
Pvrtc GL_IMG_texture_compression_pvrtc
s3tc GL_EXT_texture_compression_s3tc
dxt1 GL_EXT_texture_compression_dxt1
latc GL_EXT_texture_compression_latc
ATC GL_AMD_compressed_ATC_texture
3DC GL_AMD_compressed_3DC_texture
וכו' לא ישים. המכשיר צריך תומכים ב-OpenGL ES גרסה 3.0 או מאוחר יותר.
וכו' GL_OES_compressed_ETC1_RGB8_texture
צבעים GL_OES_compressed_paletted_texture