खास जानकारी
स्केलर:
RenderScript, स्केलर संख्याओं के इन टाइप के साथ काम करता है:
8 बिट | 16 बिट | 32 बिट | 64 बिट | |
पूर्णांक: | char, int8_t | short, int16_t | int32_t | long, long long, int64_t |
बिना साइन वाला पूर्णांक: | uchar, uint8_t | ushort, uint16_t | uint, uint32_t | ulong, uint64_t |
फ़्लोटिंग पॉइंट: | हाफ़ | फ़्लोट | डबल |
वेक्टर:
RenderScript, तय साइज़ के वेक्टर के साथ काम करता है. इन वेक्टर की लंबाई 2, 3, और 4 हो सकती है. वेक्टर को सामान्य टाइप के नाम का इस्तेमाल करके डिक्लेयर्ड किया जाता है. इसके बाद, 2, 3 या 4 का इस्तेमाल किया जाता है. उदाहरण के लिए, float4, int3, double2, ulong4.
वैक्टर लिटरल बनाने के लिए, वैक्टर टाइप के बाद कर्ली ब्रैकेट के बीच वैल्यू डालें, जैसे कि (float3){1.0f, 2.0f, 3.0f}
.
किसी वेक्टर की एंट्री को नाम देने के अलग-अलग स्टाइल का इस्तेमाल करके ऐक्सेस किया जा सकता है.
वैरिएबल के नाम के बाद बिंदु लगाकर, सिंगल एंट्री को ऐक्सेस किया जा सकता है. इसके लिए:
- x, y, z, और w अक्षर,
- r, g, b, और a अक्षर,
- s या S अक्षर के बाद, शून्य पर आधारित इंडेक्स.
उदाहरण के लिए, int4 myVar;
के साथ ये एक जैसे हैं:
myVar.x == myVar.r == myVar.s0 == myVar.S0
myVar.y == myVar.g == myVar.s1 == myVar.S1
myVar.z == myVar.b == myVar.s2 == myVar.S2
myVar.w == myVar.a == myVar.s3 == myVar.S3
एक से ज़्यादा अक्षरों या इंडेक्स को जोड़कर बनाए गए आइडेंटिफ़ायर का इस्तेमाल करके, एक वेक्टर की कई एंट्री को एक साथ ऐक्सेस किया जा सकता है. इस वेक्टर का साइज़, नाम वाली एंट्री की संख्या के बराबर होता है.
ऊपर दिए गए उदाहरण में, बीच की दो एंट्री को myVar.yz
, myVar.gb
, myVar.s12
, और myVar.S12
का इस्तेमाल करके ऐक्सेस किया जा सकता है.
एंट्री, एक-दूसरे के बगल में या बढ़ते क्रम में होनी ज़रूरी नहीं है. एंट्री को तब तक दोहराया जा सकता है, जब तक हम उन्हें असाइन नहीं कर रहे हैं. नाम रखने के अलग-अलग स्टाइल भी नहीं इस्तेमाल किए जा सकते.
यहां कुछ उदाहरण दिए गए हैं. इनसे पता चलता है कि क्या किया जा सकता है और क्या नहीं:
float4 v4;
float3 v3;
float2 v2;
v2 = v4.xx; // Valid
v3 = v4.zxw; // Valid
v3 = v4.bba; // Valid
v3 = v4.s032; // Valid
v3.s120 = v4.S233; // Valid
v4.yz = v3.rg; // Valid
v4.yzx = v3.rg; // Invalid: mismatched sizes
v4.yzz = v3; // Invalid: z appears twice in an assignment
v3 = v3.xas0; // Invalid: can't mix xyzw with rgba nor s0...
v3 = v4.s034; // Invalid: the digit can only be 0, 1, 2, or 3
मैट्रिक्स और क्वार्टरनियन:
RenderScript, 2x2, 3x3, और 4x4 साइज़ के फ़्लोट के फ़िक्स साइज़ स्क्वेयर मैट्रिक्स के साथ काम करता है. इन टाइप का नाम rs_matrix2x2, rs_matrix3x3, और rs_matrix4x4 है. ऑपरेशन की सूची के लिए, मैट्रिक फ़ंक्शन देखें.
rs_quaternion के ज़रिए भी क्वार्टरनियन का इस्तेमाल किया जा सकता है. कार्रवाइयों की सूची के लिए, क्वार्टरन फ़ंक्शन देखें.
खास जानकारी
प्रकार | |
---|---|
char2 | दो 8-बिट साइन वाले इंटिजर |
char3 | तीन 8-बिट साइन किए गए इंटिजर |
char4 | चार 8-बिट साइन वाले इंटिजर |
double2 | दो 64 बिट फ़्लोट |
double3 | तीन 64 बिट फ़्लोट |
double4 | चार 64-बिट फ़्लोट |
float2 | दो 32-बिट फ़्लोट |
float3 | तीन 32-बिट फ़्लोट |
float4 | चार 32-बिट फ़्लोट |
आधा | 16-बिट फ़्लोटिंग पॉइंट वैल्यू |
half2 | दो 16-बिट फ़्लोट |
half3 | तीन 16-बिट फ़्लोट |
half4 | चार 16-बिट फ़्लोट |
int16_t | 16 बिट का साइन वाला इंटिजर |
int2 | दो 32-बिट साइन किए गए इंटिजर |
int3 | तीन 32-बिट साइन किए गए इंटिजर |
int32_t | 32 बिट का साइन वाला इंटिजर |
int4 | चार 32-बिट के साइन किए गए इंटिजर |
int64_t | 64 बिट का साइन वाला इंटिजर |
int8_t | 8 बिट का साइन वाला इंटिजर |
long2 | दो 64 बिट के साइन किए गए इंटिजर |
long3 | तीन 64-बिट साइन वाले इंटिजर |
long4 | चार 64-बिट साइन वाले इंटिजर |
rs_matrix2x2 | 32-बिट फ़्लोट की 2x2 मैट्रिक्स |
rs_matrix3x3 | 32-बिट फ़्लोट की 3x3 मैट्रिक्स |
rs_matrix4x4 | 32-बिट फ़्लोट का 4x4 मैट्रिक्स |
rs_quaternion | क्वार्टरन |
short2 | दो 16-बिट साइन किए गए इंटिजर |
short3 | तीन 16-बिट साइन किए गए इंटिजर |
short4 | चार 16-बिट साइन किए गए इंटिजर |
size_t | साइन न किए गए साइज़ का टाइप |
ssize_t | साइन किया गया साइज़ टाइप |
uchar | बिना हस्ताक्षर वाला 8-बिट इंटिजर |
uchar2 | दो 8-बिट के बिना हस्ताक्षर वाले पूर्णांक |
uchar3 | तीन 8-बिट के बिना हस्ताक्षर वाले पूर्णांक |
uchar4 | चार 8-बिट बिना हस्ताक्षर वाले पूर्णांक |
uint | 32 बिट का बिना हस्ताक्षर वाला इंटिजर |
uint16_t | 16 बिट का बिना हस्ताक्षर वाला इंटिजर |
uint2 | दो 32-बिट के बिना हस्ताक्षर वाले पूर्णांक |
uint3 | तीन 32-बिट के बिना हस्ताक्षर वाले पूर्णांक |
uint32_t | 32 बिट का बिना हस्ताक्षर वाला पूर्णांक |
uint4 | चार 32-बिट के बिना हस्ताक्षर वाले पूर्णांक |
uint64_t | 64 बिट का बिना हस्ताक्षर वाला पूर्णांक |
uint8_t | बिना हस्ताक्षर वाला 8-बिट इंटिजर |
ulong | 64 बिट का बिना हस्ताक्षर वाला पूर्णांक |
ulong2 | दो 64-बिट बिना हस्ताक्षर वाले पूर्णांक |
ulong3 | तीन 64-बिट बिना हस्ताक्षर वाले इंटिजर |
ulong4 | चार 64-बिट बिना हस्ताक्षर वाले पूर्णांक |
ushort | 16 बिट का बिना हस्ताक्षर वाला इंटिजर |
ushort2 | दो 16-बिट के बिना हस्ताक्षर वाले इंटिजर |
ushort3 | तीन 16-बिट बिना हस्ताक्षर वाले पूर्णांक |
ushort4 | चार 16-बिट के बिना हस्ताक्षर वाले इंटिजर |
प्रकार
char2 : दो 8 बिट के साइन किए गए पूर्णांक
typedef का इस्तेमाल करके बनाया गया: char __attribute__((ext_vector_type(2)))
दो वर्ण वाला वेक्टर. इन दोनों वर्णों को 16 बिट अलाइनमेंट के साथ, एक 16 बिट फ़ील्ड में पैक किया जाता है.
char3 : तीन 8 बिट के साइन किए गए पूर्णांक
typedef का इस्तेमाल करके बनाया गया: char __attribute__((ext_vector_type(3)))
तीन वर्ण वाला वेक्टर. इन तीन वर्णों को 32 बिट अलाइनमेंट के साथ, एक 32 बिट फ़ील्ड में पैक किया जाता है.
char4 : चार 8 बिट के साइन किए गए पूर्णांक
typedef का इस्तेमाल करके बनाया गया: char __attribute__((ext_vector_type(4)))
चार वर्णों का वेक्टर. इन चार वर्णों को 32 बिट अलाइनमेंट के साथ, एक 32 बिट फ़ील्ड में पैक किया जाता है.
double2 : दो 64 बिट फ़्लोट
typedef का इस्तेमाल करके बनाया गया: double __attribute__((ext_vector_type(2)))
दो डबल वैल्यू वाला वेक्टर. ये दोनों डबल फ़ील्ड, 128 बिट अलाइनमेंट वाले एक 128 बिट फ़ील्ड में पैक किए जाते हैं.
double3 : तीन 64 बिट फ़्लोट
typedef का इस्तेमाल करके बनाया गया: double __attribute__((ext_vector_type(3)))
तीन डबल का वेक्टर. ये तीन डबल फ़ील्ड, 256 बिट अलाइनमेंट वाले एक 256 बिट फ़ील्ड में पैक किए गए हैं.
double4 : चार 64 बिट फ़्लोट
typedef का इस्तेमाल करके बनाया गया: double __attribute__((ext_vector_type(4)))
चार डबल वैल्यू वाला वेक्टर. ये चार डबल फ़ील्ड, 256 बिट अलाइनमेंट वाले एक 256 बिट फ़ील्ड में पैक किए गए हैं.
float2 : दो 32 बिट फ़्लोट
typedef का इस्तेमाल करके बनाया गया: float __attribute__((ext_vector_type(2)))
दो फ़्लोट का वेक्टर. इन दोनों फ़्लोट को 64 बिट अलाइनमेंट के साथ, एक 64 बिट फ़ील्ड में पैक किया जाता है.
दो फ़्लोट का वेक्टर. इन दोनों फ़्लोट को 64 बिट अलाइनमेंट के साथ, एक 64 बिट फ़ील्ड में पैक किया जाता है.
float3 : तीन 32-बिट फ़्लोट
typedef का इस्तेमाल करके बनाया गया: float __attribute__((ext_vector_type(3)))
तीन फ़्लोट वाला वेक्टर. इन तीन फ़्लोट को 128 बिट अलाइनमेंट के साथ, एक 128 बिट फ़ील्ड में पैक किया जाता है.
float4 : चार 32 बिट फ़्लोट
typedef का इस्तेमाल करके बनाया गया: float __attribute__((ext_vector_type(4)))
चार फ़्लोट टाइप का वेक्टर. इन चार फ़्लोट को 128 बिट अलाइनमेंट के साथ, एक 128 बिट फ़ील्ड में पैक किया जाता है.
half : 16 बिट की फ़्लोटिंग पॉइंट वैल्यू
टाइपडेफ़ाइन: __fp16 एपीआई लेवल 23 में जोड़ा गया
16 बिट की फ़्लोटिंग पॉइंट वैल्यू.
half2 : दो 16-बिट फ़्लोट
half __attribute__((ext_vector_type(2))) का typedef एपीआई लेवल 23 में जोड़ा गया
हाफ़ फ़्लोट टाइप का वेक्टर वर्शन. यह फ़ंक्शन, 32-बिट अलाइनमेंट वाले एक 32-बिट फ़ील्ड में पैक किए गए दो आधे फ़ील्ड उपलब्ध कराता है.
half3 : तीन 16-बिट फ़्लोट
half __attribute__((ext_vector_type(3))) का typedef एपीआई लेवल 23 में जोड़ा गया
हाफ़ फ़्लोट टाइप का वेक्टर वर्शन. यह 64-बिट अलाइनमेंट के साथ, एक 64-बिट फ़ील्ड में पैक किए गए तीन हाफ़ फ़ील्ड उपलब्ध कराता है.
half4 : चार 16-बिट फ़्लोट
half __attribute__((ext_vector_type(4))) का typedef एपीआई लेवल 23 में जोड़ा गया
हाफ़ फ़्लोट टाइप का वेक्टर वर्शन. यह 64-बिट अलाइनमेंट के साथ, एक 64-बिट फ़ील्ड में पैक किए गए चार आधे फ़ील्ड उपलब्ध कराता है.
int16_t : 16 बिट का साइन वाला इंटिजर
short का typedef
16 बिट का साइन वाला इंटिजर टाइप.
int2 : दो 32-बिट साइन किए गए पूर्णांक
typedef का इस्तेमाल करके बनाया गया: int __attribute__((ext_vector_type(2)))
दो ints का वेक्टर. इन दोनों int को 64 बिट अलाइनमेंट वाले एक ही 64 बिट फ़ील्ड में पैक किया जाता है.
int3 : तीन 32-बिट के साइन किए गए पूर्णांक
int __attribute__((ext_vector_type(3))) का typedef
तीन ints का वेक्टर. इन तीन int को 128 बिट के अलाइनमेंट के साथ, एक 128 बिट फ़ील्ड में पैक किया जाता है.
int32_t : 32 बिट का साइन वाला इंटिजर
int का typedef
32-बिट का साइन वाला इंटिजर टाइप.
int4 : चार 32-बिट के साइन किए गए पूर्णांक
typedef का इस्तेमाल करके बनाया गया: int __attribute__((ext_vector_type(4)))
चार ints का वेक्टर. इन दोनों फ़ोर को 128 बिट अलाइनमेंट के साथ, एक 128 बिट फ़ील्ड में पैक किया जाता है.
int64_t : 64 बिट का साइन वाला इंटिजर
long long का typedef एपीआई लेवल 21 और उसके बाद के वर्शन से हटाया गया
long का टाइपडेफ़ाइन एपीआई लेवल 21 में जोड़ा गया
64 बिट का साइन वाला इंटिजर टाइप.
int8_t : 8 बिट का साइन वाला पूर्णांक
char का typedef
8 बिट का साइन वाला इंटिजर टाइप.
long2 : दो 64-बिट साइन वाले इंटिजर
long __attribute__((ext_vector_type(2))) का typedef
दो लॉन्ग का वेक्टर. इन दोनों लॉन्ग को 128 बिट अलाइनमेंट वाले एक 128 बिट फ़ील्ड में पैक किया जाता है.
long3 : तीन 64-बिट साइन वाले इंटिजर
long __attribute__((ext_vector_type(3))) का typedef
तीन लॉन्ग का वेक्टर. इन तीन लॉन्ग को 256 बिट अलाइनमेंट वाले एक 256 बिट फ़ील्ड में पैक किया जाता है.
long4 : चार 64-बिट साइन वाले इंटिजर
long __attribute__((ext_vector_type(4))) का typedef
चार लॉन्ग का वेक्टर. इन चार लॉन्ग को 256 बिट अलाइनमेंट वाले एक 256 बिट फ़ील्ड में पैक किया जाता है.
rs_matrix2x2 : 32 बिट फ़्लोट का 2x2 मैट्रिक्स
ऐसा स्ट्रक्चर जिसमें ये फ़ील्ड शामिल हों:
float m[4] |
---|
फ़्लोट का स्क्वेयर 2x2 मैट्रिक्स. एंट्री, ऐरे में [row*2 + col] जगह पर सेव की जाती हैं.
मैट्रिक फ़ंक्शन देखें.
rs_matrix3x3 : 32-बिट फ़्लोट का 3x3 मैट्रिक्स
ऐसा स्ट्रक्चर जिसमें ये फ़ील्ड शामिल हों:
float m[9] |
---|
फ़्लोट का 3x3 स्क्वेयर मैट्रिक्स. एंट्री, ऐरे में [row*3 + col] जगह पर सेव की जाती हैं.
मैट्रिक फ़ंक्शन देखें.
rs_matrix4x4 : 32 बिट फ़्लोट का 4x4 मैट्रिक्स
ऐसा स्ट्रक्चर जिसमें ये फ़ील्ड शामिल हों:
float m[16] |
---|
फ़्लोट का 4x4 स्क्वेयर मैट्रिक्स. एंट्री, ऐरे में [row*4 + col] जगह पर सेव की जाती हैं.
मैट्रिक फ़ंक्शन देखें.
rs_quaternion : क्वार्टरनियन
float4 का typedef
फ़्लोट का स्क्वेयर 4x4 मैट्रिक्स, जो क्वार्टरनियन दिखाता है.
क्वाटरनियन फ़ंक्शन देखें.
short2 : दो 16 बिट के साइन किए गए पूर्णांक
short __attribute__((ext_vector_type(2))) का typedef
दो शॉर्ट वीडियो का वेक्टर. इन दोनों शॉर्ट वीडियो को 32 बिट अलाइनमेंट वाले एक ही 32 बिट फ़ील्ड में पैक किया जाता है.
short3 : तीन 16-बिट साइन किए गए पूर्णांक
short __attribute__((ext_vector_type(3))) का typedef
तीन शॉर्ट वीडियो का वेक्टर. ये तीन छोटे फ़ील्ड, 64 बिट अलाइनमेंट वाले एक 64 बिट फ़ील्ड में पैक किए जाते हैं.
short4 : चार 16-बिट साइन किए गए पूर्णांक
short __attribute__((ext_vector_type(4))) का typedef
चार शॉर्ट वीडियो का वेक्टर. ये चार छोटे फ़ील्ड, 64 बिट अलाइनमेंट वाले एक 64 बिट फ़ील्ड में पैक किए जाते हैं.
size_t : साइज़ का बिना साइन वाला टाइप
64 बिट के लिए कंपाइल करते समय, uint64_t का typedef.
32 बिट के लिए कंपाइल करते समय, uint32_t का typedef.
साइज़ का बिना हस्ताक्षर वाला टाइप. बिट की संख्या, कंपाइलेशन फ़्लैग पर निर्भर करती है.
ssize_t : साइन किया गया साइज़ टाइप
64 बिट के लिए कंपाइल करते समय, int64_t का typedef.
32 बिट के लिए कंपाइल करते समय, int32_t का typedef.
साइन किया गया साइज़ टाइप. बिट की संख्या, कंपाइलेशन फ़्लैग पर निर्भर करती है.
uchar : 8 बिट का बिना साइन वाला पूर्णांक
uint8_t का typedef
बिना हस्ताक्षर वाला 8-बिट इंटिजर टाइप.
uchar2 : दो 8 बिट के बिना साइन वाले पूर्णांक
uchar __attribute__((ext_vector_type(2))) का typedef
दो यूचर का वेक्टर. ये दोनों uchar फ़ील्ड, 16 बिट अलाइनमेंट वाले एक 16 बिट फ़ील्ड में पैक किए गए हैं.
uchar3 : तीन 8-बिट बिना साइन वाले पूर्णांक
uchar __attribute__((ext_vector_type(3))) का typedef
तीन यूनिकोड वर्णों का वेक्टर. ये तीन uchar फ़ील्ड, 32 बिट अलाइनमेंट वाले एक 32 बिट फ़ील्ड में पैक किए जाते हैं.
uchar4 : चार 8 बिट के बिना साइन वाले पूर्णांक
uchar __attribute__((ext_vector_type(4))) का typedef
चार यूचर का वेक्टर. ये चार uchar फ़ील्ड, 32 बिट अलाइनमेंट वाले एक 32 बिट फ़ील्ड में पैक किए गए हैं.
uint : 32 बिट का बिना साइन वाला इंटिजर
uint32_t का typedef
32-बिट का बिना हस्ताक्षर वाला इंटिजर टाइप.
uint16_t : 16 बिट का बिना साइन वाला पूर्णांक
unsigned short का typedef
16 बिट का बिना हस्ताक्षर वाला इंटिजर टाइप.
uint2 : दो 32 बिट के बिना साइन वाले पूर्णांक
uint __attribute__((ext_vector_type(2))) का typedef
दो यूनिट का वेक्टर. इन दोनों यूआईएनटी को 64 बिट अलाइनमेंट के साथ, एक 64 बिट फ़ील्ड में पैक किया जाता है.
uint3 : तीन 32 बिट के बिना साइन वाले पूर्णांक
uint __attribute__((ext_vector_type(3))) का typedef
तीन यूनिट का वेक्टर. इन तीन यूनिट को 128 बिट अलाइनमेंट के साथ, एक 128 बिट फ़ील्ड में पैक किया जाता है.
uint32_t : 32 बिट का बिना साइन वाला इंटिजर
unsigned int का typedef
32-बिट का बिना हस्ताक्षर वाला इंटिजर टाइप.
uint4 : चार 32 बिट के बिना साइन वाले पूर्णांक
uint __attribute__((ext_vector_type(4))) का typedef
चार यूनिट का वेक्टर. इन चार यूनिट को 128 बिट अलाइनमेंट के साथ, एक 128 बिट फ़ील्ड में पैक किया जाता है.
uint64_t : 64 बिट का बिना साइन वाला इंटिजर
unsigned long long का typedef एपीआई लेवल 21 और उसके बाद के वर्शन से हटाया गया
unsigned long का typedef एपीआई लेवल 21 में जोड़ा गया
64 बिट का बिना हस्ताक्षर वाला पूर्णांक टाइप.
uint8_t : 8 बिट का बिना साइन वाला पूर्णांक
unsigned char का typedef
बिना हस्ताक्षर वाला 8-बिट इंटिजर टाइप.
ulong : 64 बिट का बिना साइन वाला पूर्णांक
uint64_t का typedef
64 बिट का बिना हस्ताक्षर वाला पूर्णांक टाइप.
ulong2 : दो 64-बिट के बिना साइन वाले पूर्णांक
ulong __attribute__((ext_vector_type(2))) का typedef
दो ulongs का वेक्टर. इन दोनों ulong को 128 बिट अलाइनमेंट के साथ, एक ही 128 बिट फ़ील्ड में पैक किया जाता है.
ulong3 : तीन 64 बिट के बिना साइन वाले पूर्णांक
ulong __attribute__((ext_vector_type(3))) का typedef
तीन ulongs का वेक्टर. ये तीन ulong फ़ील्ड, 256 बिट अलाइनमेंट वाले एक 256 बिट फ़ील्ड में पैक किए गए हैं.
ulong4 : चार 64 बिट के बिना साइन वाले पूर्णांक
ulong __attribute__((ext_vector_type(4))) का typedef
चार ulongs का वेक्टर. ये चार ulong फ़ील्ड, 256 बिट अलाइनमेंट वाले एक 256 बिट फ़ील्ड में पैक किए गए हैं.
ushort : 16 बिट का बिना साइन वाला पूर्णांक
uint16_t का typedef
16 बिट का बिना हस्ताक्षर वाला इंटिजर टाइप.
ushort2 : दो 16 बिट के बिना साइन वाले पूर्णांक
ushort __attribute__((ext_vector_type(2))) का typedef
दो ushorts का वेक्टर. ये दो ushort फ़ील्ड, 32 बिट अलाइनमेंट वाले एक 32 बिट फ़ील्ड में पैक किए जाते हैं.
ushort3 : तीन 16-बिट बिना साइन वाले पूर्णांक
ushort __attribute__((ext_vector_type(3))) का typedef
तीन शॉर्ट के वेक्टर. ये तीन ushort फ़ील्ड, 64 बिट अलाइनमेंट वाले एक 64 बिट फ़ील्ड में पैक किए जाते हैं.
ushort4 : चार 16-बिट बिना साइन वाले पूर्णांक
ushort __attribute__((ext_vector_type(4))) का typedef
चार शॉर्ट के वेक्टर. ये चार ushort फ़ील्ड, 64 बिट अलाइनमेंट वाले एक 64 बिट फ़ील्ड में पैक किए जाते हैं.