RenderScript के अंकों वाले टाइप

खास जानकारी

स्केलर:

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 बिट फ़ील्ड में पैक किए जाते हैं.