Numerische RenderScript-Typen

Übersicht

Skalare:

RenderScript unterstützt die folgenden skalaren numerischen Typen:

8 Bit 16 Bit 32 Bit 64 Bit
Ganzzahl: char, int8_t kurz, int16_t int32_t long, long long, int64_t
Vorzeichenlose Ganzzahl: uchar, uint8_t ushort, uint16_t uint, uint32_t Ulong, uint64_t
Gleitkommawert: Spielhälfte schweben Doppelt

Vektoren:

RenderScript unterstützt Vektoren mit fester Größe in den Längen 2, 3 und 4. Vektoren werden mit dem allgemeinen Typnamen gefolgt von 2, 3 oder 4 deklariert. Beispiel: float4, int3, double2, ulong4.

Verwenden Sie zum Erstellen von Vektorliteralen den Vektortyp, gefolgt von den Werten in geschweiften Klammern, z.B. (float3){1.0f, 2.0f, 3.0f}.

Auf Einträge eines Vektors kann mithilfe verschiedener Namensstile zugegriffen werden.

Um auf einzelne Einträge zuzugreifen, folgen Sie dem Variablennamen mit einem Punkt und:

  • Die Buchstaben x, y, z und w
  • Die Buchstaben r, g, b und a,
  • Der Buchstabe „s“ oder „S“ gefolgt von einem nullbasierten Index.

Mit int4 myVar; ist beispielsweise Folgendes äquivalent:
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

Auf mehrere Einträge eines Vektors kann gleichzeitig zugegriffen werden, indem eine Kennung verwendet wird, die die Verkettung mehrerer Buchstaben oder Indizes ist. Der resultierende Vektor hat eine Größe, die der Anzahl der benannten Einträge entspricht.

Im Beispiel oben kann mit myVar.yz, myVar.gb, myVar.s12 und myVar.S12 auf die beiden mittleren Einträge zugegriffen werden.

Die Einträge müssen nicht fortlaufend oder in aufsteigender Reihenfolge sein. Einträge können sogar wiederholt werden, solange nicht versucht wird, sie zuzuweisen. Außerdem dürfen die Benennungsstile nicht gemischt werden.

Hier sind einige Beispiele dafür, was möglich ist und was nicht:
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

Matrizen und Quaternionen:

RenderScript unterstützt quadratische Matrizen mit fester Größe von Gleitkommazahlen der Größe 2 x 2, 3 x 3 und 4 x 4. Die Typen heißen rs_matrix2x2, rs_matrix3x3 und rs_matrix4x4. Eine Liste der Vorgänge finden Sie unter Matrixfunktionen.

Quaternion werden auch über rs_quaternion unterstützt. Die Liste der Vorgänge finden Sie unter Quaterionsfunktionen.

Zusammenfassung

Typen
char2 Zwei ganze 8-Bit-Ganzzahlen mit Vorzeichen
char3 Drei vorzeichenbehaftete 8-Bit-Ganzzahlen
char4 Vier ganze 8-Bit-Ganzzahlen mit Vorzeichen
Double2 Zwei 64-Bit-Gleitkommazahlen
double3 Drei 64-Bit-Gleitkommazahlen
Double4 Vier 64-Bit-Gleitkommazahlen
Gleitkommazahl2 Zwei 32-Bit-Gleitkommazahlen
Gleitkommazahl3 Drei 32-Bit-Gleitkommazahlen
Gleitkommazahl4 Vier 32-Bit-Gleitkommazahlen
die Hälfte 16-Bit-Gleitkommawert
Hälft2 Zwei 16-Bit-Gleitkommazahlen
Hälft3 Drei 16-Bit-Gleitkommazahlen
Hälft4 Vier 16-Bit-Gleitkommazahlen
int16_t Vorzeichenbehaftete 16-Bit-Ganzzahl
int2 Zwei ganze 32-Bit-Ganzzahlen mit Vorzeichen
int3 Drei vorzeichenbehaftete 32-Bit-Ganzzahlen
int32_t Vorzeichenbehaftete 32-Bit-Ganzzahl
int4 Vier ganze 32-Bit-Ganzzahlen mit Vorzeichen
int64_t Vorzeichenbehaftete 64-Bit-Ganzzahl
int8_t Vorzeichenbehaftete 8-Bit-Ganzzahl
long2 Zwei ganze 64-Bit-Ganzzahlen mit Vorzeichen
long3 Drei vorzeichenbehaftete 64-Bit-Ganzzahlen
long4 Vier ganze 64-Bit-Ganzzahlen mit Vorzeichen
rs_matrix2x2 2x2-Matrix aus 32-Bit-Gleitkommazahlen
rs_matrix3x3 3x3-Matrix aus 32-Bit-Gleitkommazahlen
rs_matrix4x4 4x4-Matrix aus 32-Bit-Gleitkommazahlen
rs_quaternion Quaternion
Kurz2 Zwei ganze 16-Bit-Ganzzahlen mit Vorzeichen
Kurz3 Drei vorzeichenbehaftete 16-Bit-Ganzzahlen
Kurz4 Vier Ganzzahlen mit Vorzeichen (16 Bit)
size_t [Größe] Nicht signierter Größentyp
ssize_t [Größe_T] Typ der signierten Größe
Uchar Vorzeichenlose 8-Bit-Ganzzahl
Uchar2 Zwei vorzeichenlose 8-Bit-Zahlen
Uchar3 Drei vorzeichenlose 8-Bit-Ganzzahlen
Uchar 4 Vier vorzeichenlose 8-Bit-Ganzzahlen
Uint Vorzeichenlose 32-Bit-Ganzzahl
uint16_t Vorzeichenlose 16-Bit-Ganzzahl
Uint2 Zwei vorzeichenlose 32-Bit-Zahlen
uint3 Drei vorzeichenlose 32-Bit-Zahlen
uint32_t Vorzeichenlose 32-Bit-Ganzzahl
uint4 Vier vorzeichenlose 32-Bit-Ganzzahlen
uint64_t Vorzeichenlose 64-Bit-Ganzzahl
uint8_t Vorzeichenlose 8-Bit-Ganzzahl
Ulong Vorzeichenlose 64-Bit-Ganzzahl
Ulong2 Zwei vorzeichenlose 64-Bit-Zahlen
Ulong3 Drei vorzeichenlose 64-Bit-Ganzzahlen
Ulong4 Vier vorzeichenlose 64-Bit-Ganzzahlen
Ushort Vorzeichenlose 16-Bit-Ganzzahl
Ushort2 Zwei vorzeichenlose 16-Bit-Zahlen
Ushort3 Drei vorzeichenlose 16-Bit-Ganzzahlen
Ushort4 Vier vorzeichenlose 16-Bit-Ganzzahlen

Typen

char2 : zwei vorzeichenbehaftete 8-Bit-Ganzzahlen

Ein typedef von: char __attribute__((ext_vector_type(2)))

Ein Vektor mit zwei Zeichen. Diese beiden Zeichen sind in einem einzelnen 16-Bit-Feld mit einer 16-Bit-Ausrichtung verpackt.

char3 : drei vorzeichenbehaftete 8-Bit-Ganzzahlen

Ein typedef von: char __attribute__((ext_vector_type(3)))

Ein Vektor mit drei Zeichen. Diese drei Zeichen sind in einem einzelnen 32-Bit-Feld mit einer 32-Bit-Ausrichtung verpackt.

char4 : Vier vorzeichenbehaftete 8-Bit-Ganzzahlen

Ein typedef von: char __attribute__((ext_vector_type(4)))

Ein Vektor mit vier Zeichen. Diese vier Zeichen sind in einem einzelnen 32-Bit-Feld mit einer 32-Bit-Ausrichtung verpackt.

double2 : Zwei 64-Bit-Gleitkommazahlen

Ein typedef von: double __attribute__((ext_vector_type(2)))

Ein Vektor von zwei Double-Werten. Diese beiden doppelten Felder, die in einem einzelnen 128-Bit-Feld mit einer 128-Bit-Ausrichtung verpackt sind.

double3 : Drei 64-Bit-Gleitkommazahlen

Ein typedef von: double __attribute__((ext_vector_type(3)))

Ein Vektor von drei Double-Werten. Diese drei Doppelfelder, die in einem einzelnen 256-Bit-Feld mit einer 256-Bit-Ausrichtung verpackt sind.

double4 : Vier 64-Bit-Gleitkommazahlen

Ein typedef-Wert von: double __attribute__((ext_vector_type(4)))

Ein Vektor von vier Double-Werten. Diese vier Doppelfelder, die in einem einzelnen 256-Bit-Feld mit einer 256-Bit-Ausrichtung verpackt sind.

Gleitkommazahl2 : Zwei 32-Bit-Gleitkommazahlen

Ein typedef von: float __attribute__((ext_vector_type(2)))

Ein Vektor von zwei Gleitkommazahlen. Diese beiden Gleitkommazahlen sind in einem einzelnen 64-Bit-Feld mit einer 64-Bit-Ausrichtung verpackt.

Ein Vektor von zwei Gleitkommazahlen. Diese beiden Gleitkommazahlen sind in einem einzelnen 64-Bit-Feld mit einer 64-Bit-Ausrichtung verpackt.

FLOAT3 : Drei 32-Bit-Gleitkommazahlen

Ein typedef von: float __attribute__((ext_vector_type(3)))

Ein Vektor aus drei Gleitkommazahlen. Diese drei Gleitkommazahlen sind in einem einzelnen 128-Bit-Feld mit einer 128-Bit-Ausrichtung verpackt.

float4 : Vier 32-Bit-Gleitkommazahlen

Ein typedef von: float __attribute__((ext_vector_type(4)))

Ein Vektor mit vier Gleitkommazahlen. Diese vier Gleitkommazahlen sind in einem einzelnen 128-Bit-Feld mit einer 128-Bit-Ausrichtung verpackt.

half : 16-Bit-Gleitkommawert

Typdef. __fp16 In API-Level 23 hinzugefügt.

Ein 16-Bit-Gleitkommawert.

half2 : Zwei 16-Bit-Gleitkommazahlen

Ein typedef-Wert von: half __attribute__((ext_vector_type(2))) In API-Ebene 23 hinzugefügt

Vektorversion des halben Gleitkommazahltyps. Stellt zwei halbe Felder in einem einzelnen 32-Bit-Feld mit 32-Bit-Ausrichtung bereit.

half3 : drei 16-Bit-Gleitkommazahlen

Ein typedef-Wert von: half __attribute__((ext_vector_type(3))) In API-Level 23 hinzugefügt

Vektorversion des halben Gleitkommazahltyps. Stellt drei halbe Felder in einem einzelnen 64-Bit-Feld mit 64-Bit-Ausrichtung bereit.

half4 : Vier 16-Bit-Gleitkommazahlen

Ein typedef von: half __attribute__((ext_vector_type(4))) In API-Ebene 23 hinzugefügt

Vektorversion des halben Gleitkommazahltyps. Stellt vier halbe Felder bereit, die in einem einzelnen 64-Bit-Feld mit 64-Bit-Ausrichtung zusammengefasst sind.

int16_t : 16-Bit-Ganzzahl mit Vorzeichen

Typdef-Wert: kurz

Ein vorzeichenbehafteter 16-Bit-Ganzzahltyp.

int2 : zwei vorzeichenbehaftete 32-Bit-Ganzzahlen

Ein typedef-Wert von: int __attribute__((ext_vector_type(2)))

Ein Vektor mit zwei Ganzzahlen. Diese beiden Ganzzahlen sind in einem einzelnen 64-Bit-Feld mit einer 64-Bit-Ausrichtung verpackt.

int3 : Drei vorzeichenbehaftete 32-Bit-Ganzzahlen

Ein typedef von: int __attribute__((ext_vector_type(3)))

Ein Vektor mit drei Ints. Diese drei Ganzzahlen sind in einem einzelnen 128-Bit-Feld mit einer 128-Bit-Ausrichtung verpackt.

int32_t : 32-Bit-Ganzzahl mit Vorzeichen

Typdef-Wert: int

Ein vorzeichenbehafteter 32-Bit-Ganzzahltyp.

int4: Vier 32-Bit-Ganzzahlen mit Vorzeichen

Ein typedef-Wert von: int __attribute__((ext_vector_type(4)))

Ein Vektor von vier Ints. Diese beiden Vier sind in einem einzelnen 128-Bit-Feld mit einer 128-Bit-Ausrichtung zusammengefasst.

int64_t: : 64-Bit-Ganzzahl mit Vorzeichen

typedef of: long long Aus API-Level 21 und höher entfernt

Ein typedef-Typ: long In API-Level 21 hinzugefügt

Ein vorzeichenbehafteter 64-Bit-Ganzzahltyp.

int8_t : 8-Bit-Ganzzahl mit Vorzeichen

Ein typedef-Wert von: char

Vorzeichenbehafteter 8-Bit-Ganzzahltyp.

long2 : zwei vorzeichenbehaftete 64-Bit-Ganzzahlen

Ein typedef von: long __attribute__((ext_vector_type(2)))

Ein Vektor von zwei Longs-Werten. Diese beiden Long-Werte sind in einem einzelnen 128-Bit-Feld mit einer 128-Bit-Ausrichtung verpackt.

long3 : drei vorzeichenbehaftete 64-Bit-Ganzzahlen

Ein typedef von: long __attribute__((ext_vector_type(3)))

Ein Vektor von drei Longs. Diese drei Longs sind in einem einzelnen 256-Bit-Feld mit einer 256-Bit-Ausrichtung zusammengefasst.

long4: 4 vorzeichenbehaftete 64-Bit-Ganzzahlen

Ein Typdef-Wert von: long __attribute__((ext_vector_type(4)))

Ein Vektor von vier Longs. Diese vier Long-Werte sind in einem einzelnen 256-Bit-Feld mit einer 256-Bit-Ausrichtung verpackt.

rs_matrix2x2 : 2x2-Matrix aus 32-Bit-Gleitkommazahlen

Eine Struktur mit den folgenden Feldern:     

Gleitkommazahl m[4]

Quadratische 2x2-Matrix aus Gleitkommazahlen. Die Einträge werden im Array am Speicherort [row*2 + col] gespeichert.

Siehe Matrixfunktionen.

rs_matrix3x3 : 3x3-Matrix aus 32-Bit-Gleitkommazahlen

Eine Struktur mit den folgenden Feldern:     

Gleitkommazahl m[9]

Eine quadratische 3 x 3-Matrix aus Gleitkommazahlen. Die Einträge werden im Array am Speicherort [row*3 + col] gespeichert.

Siehe Matrixfunktionen.

rs_matrix4x4 : 4x4-Matrix aus 32-Bit-Gleitkommazahlen

Eine Struktur mit den folgenden Feldern:     

Gleitkommazahl m[16]

Eine quadratische 4 x 4-Matrix aus Gleitkommazahlen. Die Einträge werden im Array am Speicherort [row*4 + col] gespeichert.

Siehe Matrixfunktionen.

rs_quaternion : Quaternion

Typdef. Gleitkommazahl4

Quadratische 4 x 4-Matrix aus Gleitkommazahlen, die ein Quaternion darstellen.

Siehe Quaternionsfunktionen.

short2 : Zwei 16-Bit-Ganzzahlen mit Vorzeichen

Typdef-Wert: kurz __attribute__((ext_vector_type(2)))

Ein Vektor von zwei Kurzvideos. Diese beiden Kurzfilme sind in einem einzelnen 32-Bit-Feld mit einer 32-Bit-Ausrichtung zusammengefasst.

short3 : Drei vorzeichenbehaftete 16-Bit-Ganzzahlen

Typdef-Wert: kurz __attribute__((ext_vector_type(3)))

Ein Vektor von drei Kurzvideos. Diese drei kurzen Felder, die in einem einzelnen 64-Bit-Feld mit einer 64-Bit-Ausrichtung zusammengefasst sind.

short4 : Vier Ganzzahlen mit Vorzeichen in 16 Bit

Ein typedef von: kurz __attribute__((ext_vector_type(4)))

Ein Vektor von vier Kurzvideos. Diese vier kurzen Felder, die in einem einzelnen 64-Bit-Feld mit einer 64-Bit-Ausrichtung zusammengefasst sind.

size_t : Größentyp ohne Vorzeichen

Ein typedef-Wert von: uint64_t Bei der Kompilierung über 64 Bit.

Ein typedef-Wert von: uint32_t Bei der Kompilierung über 32 Bit.

Nicht signierter Größentyp. Die Anzahl der Bits hängt von den Kompilierungs-Flags ab.

ssize_t : Typ der signierten Größe

Ein typedef-Wert von: int64_t Bei Kompilierung über 64 Bit.

Ein typedef-Wert von: int32_t Bei Kompilierung über 32 Bit.

Typ der signierten Größe. Die Anzahl der Bits hängt von den Kompilierungs-Flags ab.

uchar : 8-Bit-Ganzzahl ohne Vorzeichen

Ein typedef von: uint8_t

Vorzeichenloser 8-Bit-Ganzzahltyp

uchar2 : zwei vorzeichenlose 8-Bit-Ganzzahlen

Ein typedef von: uchar __attribute__((ext_vector_type(2)))

Ein Vektor von zwei Utarren. Diese beiden uchar-Felder, die in einem einzelnen 16-Bit-Feld mit einer 16-Bit-Ausrichtung zusammengefasst sind.

uchar3 : drei vorzeichenlose 8-Bit-Ganzzahlen

Ein typedef von: uchar __attribute__((ext_vector_type(3)))

Ein Vektor von drei Utar. Diese drei uchar-Felder, die in einem einzelnen 32-Bit-Feld mit einer 32-Bit-Ausrichtung zusammengefasst sind.

uchar4 : Vier vorzeichenlose 8-Bit-Ganzzahlen

Ein typedef von: uchar __attribute__((ext_vector_type(4)))

Ein Vektor von vier Utar. Diese vier uchar-Felder, die in einem einzelnen 32-Bit-Feld mit einer 32-Bit-Ausrichtung zusammengefasst sind.

uint : 32-Bit-Ganzzahl ohne Vorzeichen

Ein typedef von: uint32_t

Ein vorzeichenloser 32-Bit-Ganzzahltyp.

uint16_t: 16-Bit-Ganzzahl ohne Vorzeichen

Typdef-Wert: unsigniertes Kurzvideo

Ein vorzeichenloser 16-Bit-Ganzzahltyp.

uint2 : Zwei vorzeichenlose 32-Bit-Ganzzahlen

Ein typedef von: uint __attribute__((ext_vector_type(2)))

Ein Vektor von zwei Uints. Diese beiden Uints sind in einem einzelnen 64-Bit-Feld mit einer 64-Bit-Ausrichtung verpackt.

uint3 : drei vorzeichenlose 32-Bit-Ganzzahlen

Ein typedef von: uint __attribute__((ext_vector_type(3)))

Ein Vektor von drei Uints. Diese drei uints sind in einem einzelnen 128-Bit-Feld mit einer 128-Bit-Ausrichtung verpackt.

uint32_t : vorzeichenlose 32-Bit-Ganzzahl

Typdef-Wert: unsigniertes int

Ein vorzeichenloser 32-Bit-Ganzzahltyp.

uint4 : Vier vorzeichenlose 32-Bit-Ganzzahlen

Ein typedef von: uint __attribute__((ext_vector_type(4)))

Ein Vektor von vier Uints. Diese vier uints sind in einem einzelnen 128-Bit-Feld mit einer 128-Bit-Ausrichtung verpackt.

uint64_t : vorzeichenlose 64-Bit-Ganzzahl

Ein typedef-Wert von: unsigniert long long Aus API-Level 21 und höher entfernt

Ein typedef-Element: unsigniertes langes Zeichen In API-Level 21 hinzugefügt

Ein vorzeichenloser 64-Bit-Ganzzahltyp.

uint8_t : vorzeichenlose 8-Bit-Ganzzahl

Typdef-Wert: unsigniertes Zeichen

Vorzeichenloser 8-Bit-Ganzzahltyp

ulong: 64-Bit-Ganzzahl ohne Vorzeichen

Ein typedef von: uint64_t

Ein vorzeichenloser 64-Bit-Ganzzahltyp.

ulong2 : Zwei vorzeichenlose 64-Bit-Ganzzahlen

Ein typedef von: ulong __attribute__((ext_vector_type(2)))

Ein Vektor von zwei Ulongs. Diese beiden Ulongs sind in einem einzelnen 128-Bit-Feld mit einer 128-Bit-Ausrichtung verpackt.

ulong3: Drei vorzeichenlose 64-Bit-Ganzzahlen

Ein typedef von: ulong __attribute__((ext_vector_type(3)))

Ein Vektor von drei Ulongs. Diese drei ulong-Felder sind in einem einzelnen 256-Bit-Feld mit einer 256-Bit-Ausrichtung zusammengefasst.

ulong4 : Vier vorzeichenlose 64-Bit-Ganzzahlen

Ein typedef von: ulong __attribute__((ext_vector_type(4)))

Ein Vektor von vier Ulongs. Diese vier ulong-Felder, die in einem einzelnen 256-Bit-Feld mit einer 256-Bit-Ausrichtung verpackt sind.

ushort : 16-Bit-Ganzzahl ohne Vorzeichen

Ein typedef von: uint16_t

Ein vorzeichenloser 16-Bit-Ganzzahltyp.

ushort2 : Zwei 16-Bit-Ganzzahlen ohne Vorzeichen

Ein typedef von: ushort __attribute__((ext_vector_type(2)))

Ein Vektor von zwei Ushorts. Diese beiden ushort-Felder sind in einem einzelnen 32-Bit-Feld mit einer 32-Bit-Ausrichtung zusammengefasst.

ushort3: Drei vorzeichenlose 16-Bit-Ganzzahlen

Ein typedef von: ushort __attribute__((ext_vector_type(3)))

Ein Vektor von drei Ushorts. Diese drei ushort-Felder, die in einem einzelnen 64-Bit-Feld mit einer 64-Bit-Ausrichtung zusammengefasst sind.

ushort4: Vier 16-Bit-Ganzzahlen ohne Vorzeichen

Ein typedef von: ushort __attribute__((ext_vector_type(4)))

Ein Vektor von vier Ushorts. Diese vier ushort-Felder, die in einem einzelnen 64-Bit-Feld mit einer 64-Bit-Ausrichtung zusammengefasst sind.