פונקציות של מאפייני אובייקטים ב-RenderScript

סקירה כללית

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

הקצאות:

הקצאות הן השיטה הראשית להעברת נתונים אל ליבות RenderScript ומהן.

הן אוסף של תאים מובְנים שאפשר להשתמש בהם לאחסון בימפטים, טקסטורות, נקודות נתונים שרירותיות וכו'.

לאוסף התאים הזה יכולות להיות הרבה מאפיינים (X,‏ Y,‏ Z,‏ Array0,‏ Array1,‏ Array2,‏ Array3), פנים (למפות קוביות) ורמת פירוט (למיפ-מאפינג).

פרטים על יצירת הקצאות זמינים במאמר android.renderscript.Allocation.

רכיבים:

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

  • rs_element הוא שם של מפרט סוג, ו-
  • בפונקציות כמו rsGetElementAt(), 'element' הוא יצירת המופע של הסוג, כלומר תא של הקצאה.

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

רכיב יכול לציין סוגי נתונים פשוטים כמו ב-C, למשל מספר שלם, מספר עשרוני או בוליאני. אפשר גם לציין כאן את ה-handle של אובייקט RenderScript. ברשימה rs_data_type מפורטת רשימה של סוגי נתונים בסיסיים.

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

לרכיבים יכול להיות גם סוג, שהוא מידע סמנטי שמשמש לפרש את נתוני הפיקסלים. ראו rs_data_kind.

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

כדי ליצור רכיבי Element מורכבים, משתמשים בכיתה Element.Builder ב-Java.

סמפלים:

אובייקטים של Samplers מגדירים איך אפשר לקרוא את הקצאות (Allocations) כמבנה בתוך ליבה. מידע נוסף זמין במאמר android.renderscript.S.

סיכום

פונקציות
rsAllocationGetDimFaces יש יותר מפנים אחד
rsAllocationGetDimLOD נוכחות של רמות פירוט
rsAllocationGetDimX הגודל של המאפיין X
rsAllocationGetDimY הגודל של המאפיין Y
rsAllocationGetDimZ הגודל של המאפיין Z
rsAllocationGetElement אחזור האובייקט שמתאר את התא של הקצאה
rsClearObject שחרור אובייקט
rsElementGetBytesSize גודל הרכיב
rsElementGetDataKind סוג הרכיב
rsElementGetDataType סוג הנתונים של רכיב
rsElementGetSubElement רכיב משנה של רכיב מורכב
rsElementGetSubElementArraySize גודל המערך של רכיב משנה של רכיב מורכב
rsElementGetSubElementCount מספר רכיבי המשנה
rsElementGetSubElementName שם של רכיב משנה
rsElementGetSubElementNameLength האורך של שם רכיב המשנה
rsElementGetSubElementOffsetBytes היסט של רכיב המשנה שנוצר
rsElementGetVectorSize גודל הווקטור של הרכיב
rsIsObject בדיקה אם הכינוי ריק
rsSamplerGetAnisotropy אנאיזוטרופיה של הסמפלר
rsSamplerGetMagnification ערך ההגדלה של ה-Sampler
rsSamplerGetMinification ערך המינימיזציה של הסמפלר
rsSamplerGetWrapS ערך S של Sampler wrap
rsSamplerGetWrapT ערך T של Sampler wrap
פונקציות שהוצאו משימוש
rsGetAllocation הוצא משימוש. החזרת ההקצאה של מצביע נתון

פונקציות

rsAllocationGetDimFaces : נוכחות של יותר מפנייה אחת

uint32_t rsAllocationGetDimFaces(rs_allocation a);
החזרות
הפונקציה מחזירה את הערך 1 אם יש יותר מפנים אחד, ואת הערך 0 במקרים אחרים.

אם הקצאת המיפוי היא מפת קוביות, הפונקציה הזו מחזירה 1 אם יש יותר מפני חזית. בכל שאר המקרים, הפונקציה מחזירה את הערך 0.

משתמשים ב-rsGetDimHasFaces() כדי לקבל את המאפיין של ליבה שפועלת כרגע.

rsAllocationGetDimLOD : נוכחות של רמות פירוט

uint32_t rsAllocationGetDimLOD(rs_allocation a);
החזרות
הפונקציה מחזירה את הערך 1 אם יש יותר מרמת פירוט אחת, אחרת היא מחזירה את הערך 0.

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

משתמשים ב-rsGetDimLod() כדי לקבל את המימד של ליבה שפועלת כרגע.

rsAllocationGetDimX : הגודל של המאפיין X

uint32_t rsAllocationGetDimX(rs_allocation a);
החזרות
המאפיין X של ההקצאה.

הפונקציה מחזירה את הגודל של המאפיין X של ההקצאה.

משתמשים ב-rsGetDimX() כדי לקבל את המימד של ליבה שפועלת כרגע.

rsAllocationGetDimY : הגודל של המאפיין Y

uint32_t rsAllocationGetDimY(rs_allocation a);
החזרות
המאפיין Y של ההקצאה.

הפונקציה מחזירה את הגודל של המאפיין Y של ההקצאה. אם ל-Allocation יש פחות משני מאפיינים, הפונקציה מחזירה 0.

משתמשים ב-rsGetDimY() כדי לקבל את המאפיין של ליבה שפועלת כרגע.

rsAllocationGetDimZ : הגודל של המאפיין Z

uint32_t rsAllocationGetDimZ(rs_allocation a);
החזרות
המאפיין Z של ההקצאה.

הפונקציה מחזירה את הגודל של המאפיין Z של ההקצאה. אם למכסה יש פחות משלושה מאפיינים, הפונקציה מחזירה 0.

משתמשים ב-rsGetDimZ() כדי לקבל את המאפיין של ליבה שפועלת כרגע.

rsAllocationGetElement : אחזור האובייקט שמתאר את התא של הקצאה

rs_element rsAllocationGetElement(rs_allocation a);
פרמטרים
aההקצאה שממנה רוצים לקבל נתונים.
החזרות
רכיב שמתאר את הפריסה של הקצאה.

אחזור של אובייקט Element שמתאר את הסוג, הסוג והמאפיינים האחרים של תא של הקצאה. עיינו בפונקציות rsElement* שבהמשך.

rsClearObject : שחרור אובייקט

void rsClearObject(rs_allocation* dst);
void rsClearObject(rs_element* dst);
void rsClearObject(rs_font* dst); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
void rsClearObject(rs_mesh* dst); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
void rsClearObject(rs_program_fragment* dst); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
void rsClearObject(rs_program_raster* dst); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
void rsClearObject(rs_program_store* dst); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
void rsClearObject(rs_program_vertex* dst); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
void rsClearObject(rs_sampler* dst);
void rsClearObject(rs_script* dst);
void rsClearObject(rs_type* dst);

הודעה לממשק זמן הריצה על כך שהאחזור הזה לא ישמש יותר לגישה לאובייקט הקשור. אם זה היה ה-handle האחרון לאובייקט הזה, יכול להיות שיתבצע שחזור המשאב.

אחרי הקריאה לפונקציה הזו, *dst יוגדר כידית ריקה. ראו rsIsObject().

rsElementGetBytesSize : הגודל של רכיב

uint32_t rsElementGetBytesSize(rs_element e); נוספה ב-רמת API 16

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

rsElementGetDataKind : סוג הרכיב

rs_data_kind rsElementGetDataKind(rs_element e); נוספה ב-רמת API 16

הפונקציה מחזירה את סוג הנתונים של הרכיב. הוא משמש לצורך פרשנות של נתוני הפיקסלים.

ראו rs_data_kind.

rsElementGetDataType : סוג הנתונים של רכיב

rs_data_type rsElementGetDataType(rs_element e); נוספה ב-רמת API 16

הפונקציה מחזירה את סוג הנתונים הבסיסי של הרכיב. זה יכול להיות טיפוס דומה ל-C/C++‏ (למשל RS_TYPE_UNSIGNED_8), אחיזה (למשל RS_TYPE_ALLOCATION ו-RS_TYPE_ELEMENT) או טיפוס מספרי מורכב יותר (למשל RS_TYPE_UNSIGNED_5_6_5 ו-RS_TYPE_MATRIX_4X4). rs_data_type

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

אם הרכיב מתאר מבנה, מוחזר הערך RS_TYPE_NONE. אפשר להשתמש בפונקציות rsElementGetSub* כדי לבחון את הרכיב המורכב הזה.

rsElementGetSubElement : רכיב משנה של רכיב מורכב

rs_element rsElementGetSubElement(rs_element e, uint32_t index); נוספה ב-רמת API 16
פרמטרים
eהאלמנט שרוצים לשלוח עליו שאילתה.
אינדקסהאינדקס של רכיב המשנה שיש להחזיר.
החזרות
רכיב משנה במיקום האינדקס הנתון.

עבור רכיבים שמייצגים מבנה, הפונקציה הזו מחזירה את רכיב המשנה במדד שצוין.

אם ה-Element הוא לא מבנה או שהאינדקס גדול או שווה למספר הרכיבים המשניים, המערכת מחזירה אחיזה לא חוקית.

rsElementGetSubElementArraySize : גודל המערך של רכיב משנה של רכיב מורכב

uint32_t rsElementGetSubElementArraySize(rs_element e, uint32_t index); נוספה ב-רמת API 16
פרמטרים
eהאלמנט שרוצים לשלוח עליו שאילתה.
אינדקסהאינדקס של רכיב המשנה.
החזרות
גודל המערך של רכיב המשנה.

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

rsElementGetSubElementCount : מספר הרכיבים המשניים

uint32_t rsElementGetSubElementCount(rs_element e); נוספה ב-רמת API 16
פרמטרים
eהרכיב שממנו רוצים לקבל נתונים.
החזרות
מספר רכיבי המשנה.

הרכיבים יכולים להיות פשוטים, כמו int או float, או מבנה עם כמה רכיבי משנה. הפונקציה הזו מחזירה אפס עבור רכיבים פשוטים ומספר רכיבי המשנה עבור רכיבים מורכבים.

rsElementGetSubElementName : שם של רכיב משנה

uint32_t rsElementGetSubElementName(rs_element e, uint32_t index, char* name, uint32_t nameLength); נוספה ב-רמת API 16
פרמטרים
eהרכיב שממנו רוצים לקבל נתונים.
אינדקסהאינדקס של רכיב המשנה.
שםהכתובת של המערך שבו השם יישמר.
nameLengthהאורך של מערך השמות שצוין.
החזרות
מספר התווים שהועתקו, לא כולל סימן הסיום null.

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

rsElementGetSubElementNameLength : אורך השם של רכיב משנה

uint32_t rsElementGetSubElementNameLength(rs_element e, uint32_t index); נוספה ב-רמת API 16
פרמטרים
eהרכיב שממנו רוצים לקבל נתונים.
אינדקסהאינדקס של רכיב המשנה.
החזרות
האורך של שם רכיב המשנה, כולל סימן הסיום null.

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

rsElementGetSubElementOffsetBytes : היסט של רכיב המשנה שנוצר

uint32_t rsElementGetSubElementOffsetBytes(rs_element e, uint32_t index); נוספה ב-רמת API 16
פרמטרים
eהרכיב שממנו רוצים לקבל נתונים.
אינדקסהאינדקס של רכיב המשנה.
החזרות
היסט בבייטים.

הפונקציה הזו מחזירה את המיקום היחסי של יצירת המופע של רכיב המשנה שצוין בתוך יצירת המופע של הרכיב.

לדוגמה, אם ה-Element מתאר מספר צף של 32 ביט ואחריו מספר שלם של 32 ביט, הערך שיוחזר עבור ההיסט של הראשון יהיה 0 והערך שיוחזר עבור ההיסט של השני יהיה 4.

rsElementGetVectorSize : גודל הווקטור של האלמנט

uint32_t rsElementGetVectorSize(rs_element e); נוספה ב-רמת API 16
פרמטרים
eהרכיב שממנו רוצים לקבל נתונים.
החזרות
אורך וקטור האלמנט.

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

rsGetAllocation : החזרת ההקצאה של מצביע נתון

rs_allocation rsGetAllocation(const void* p);

הוצא משימוש. הפונקציה הזו הוצאה משימוש ותוסר מ-SDK בגרסה עתידית.

הפונקציה מחזירה את ההקצאה של מצביע נתון. הסמן צריך להצביע בתוך הקצאה חוקית. התוצאות לא מוגדרות אם ההצבעה לא מ-Allocation תקין.

rsIsObject : בדיקה אם הידית ריקה

bool rsIsObject(rs_allocation v);
bool rsIsObject(rs_element v);
bool rsIsObject(rs_font v); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
bool rsIsObject(rs_mesh v); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
bool rsIsObject(rs_program_fragment v); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
bool rsIsObject(rs_program_raster v); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
bool rsIsObject(rs_program_store v); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
bool rsIsObject(rs_program_vertex v); כשמפעילים הידור ל-32 ביט. הוסרו מ-רמת API ‏23 ואילך
bool rsIsObject(rs_sampler v);
bool rsIsObject(rs_script v);
bool rsIsObject(rs_type v);

הפונקציה מחזירה את הערך true אם הידית מכילה הפניה שאינה null.

הפונקציה הזו לא מאמתת שהמצביע הפנימי שמשמש ב-handle מצביע על אובייקט תקף בפועל, אלא רק בודקת אם הוא null.

אפשר להשתמש בפונקציה הזו כדי לבדוק את הרכיב שמוחזרים על ידי rsElementGetSubElement() או כדי לבדוק אם rsClearObject() הופעל על ידית.

rsSamplerGetAnisotropy : אנאיזוטרופיה של הסמפלר

float rsSamplerGetAnisotropy(rs_sampler s); נוספה ב-רמת API 16

אחזור של האניזוטרופיה של ה-Sampler.

מידע נוסף זמין במאמר android.renderscript.S.

rsSamplerGetMagnification : ערך ההגדלה של ה-Sampler

rs_sampler_value rsSamplerGetMagnification(rs_sampler s); נוספה ב-רמת API 16

אחזור ערך ההגדלה של ה-Sampler.

מידע נוסף זמין במאמר android.renderscript.S.

rsSamplerGetMinification : ערך המינימיזציה של ה-Sampler

rs_sampler_value rsSamplerGetMinification(rs_sampler s); נוספה ב-רמת API 16

אחזור ערך המינימציה של ה-Sampler.

מידע נוסף זמין במאמר android.renderscript.S.

rsSamplerGetWrapS : ערך S של Sampler wrap

rs_sampler_value rsSamplerGetWrapS(rs_sampler s); נוספה ב-רמת API 16

אחזור הערך של S ב-wrap של ה-Sampler.

מידע נוסף זמין במאמר android.renderscript.S.

rsSamplerGetWrapT : ערך T של Sampler wrap

rs_sampler_value rsSamplerGetWrapT(rs_sampler s); נוספה ב-רמת API 16

אחזור הערך של T ב-wrap של ה-sampler.

מידע נוסף זמין במאמר android.renderscript.S.