Các loại số RenderScript

Tổng quan

Các đại lượng vô hướng:

RenderScript hỗ trợ các kiểu số vô hướng sau đây:

8 bit 16 bit 32 bit 64 bit
Số nguyên: ký tự, int8_t ngắn, int16_t int32_t dài, dài, int64_t
Số nguyên chưa ký: uchar, uint8_t ushort, uint16_t uint, uint32_t ulong, uint64_t
Dấu phẩy động: hiệp số thực dấu phẩy động gấp đôi

Vectơ:

RenderScript hỗ trợ các vectơ kích thước cố định có độ dài 2, 3 và 4. Vectơ được khai báo bằng tên kiểu phổ biến, theo sau là 2, 3 hoặc 4. Ví dụ: float4, int3, double2, ulong4.

Để tạo giá trị cố định vectơ, hãy sử dụng loại vectơ theo sau là các giá trị nằm giữa các dấu ngoặc nhọn, ví dụ: (float3){1.0f, 2.0f, 3.0f}.

Có thể truy cập các mục vào của vectơ bằng cách sử dụng các kiểu đặt tên khác nhau.

Bạn có thể truy cập vào các mục nhập đơn lẻ bằng cách theo sau tên biến có dấu chấm và:

  • Các chữ cái x, y, z và w,
  • Chữ cái r, g, b, a,
  • Chữ cái s hoặc S, theo sau là chỉ số dựa trên 0.

Ví dụ: với int4 myVar;, các giá trị sau đây tương đương:
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

Bạn có thể truy cập nhiều mục của một vectơ cùng một lúc bằng cách sử dụng giá trị nhận dạng là chuỗi nối của nhiều chữ cái hoặc chỉ mục. Vectơ thu được có kích thước bằng với số mục nhập được đặt tên.

Với ví dụ trên, bạn có thể truy cập hai mục ở giữa bằng myVar.yz, myVar.gb, myVar.s12myVar.S12.

Các mục không nhất thiết phải liền nhau hoặc theo thứ tự tăng dần. Các mục nhập thậm chí có thể lặp lại, miễn là chúng ta không cố gắng gán cho nó. Bạn cũng không thể kết hợp các kiểu đặt tên.

Sau đây là ví dụ về những việc có thể hoặc không thể làm:
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

Ma trận và quaternion:

RenderScript hỗ trợ các ma trận vuông có kích thước cố định của các số thực có kích thước 2x2, 3x3 và 4x4. Các loại này được đặt tên là rs_ma trận2x2, rs_ma trận3x3rs_ma trận4x4. Hãy xem Hàm ma trận để biết danh sách các phép toán.

Quaternion cũng được hỗ trợ thông qua rs_quaternion. Hãy xem Hàm định kỳ để biết danh sách các phép toán.

Tóm tắt

Loại
ký tự2 Hai số nguyên 8 bit có dấu
ký tự 3 Ba số nguyên 8 bit có dấu
ký tự 4 Bốn số nguyên 8 bit có dấu
double2 Hai số thực 64 bit
đôi3 3 số thực 64 bit
đôi4 4 số thực 64 bit
float2 Hai số thực có độ chính xác đơn 32 bit
float3 3 số thực 32 bit
float4 4 số thực 32 bit
một nửa Giá trị dấu phẩy động 16 bit
half2 Hai số thực có độ chính xác đơn 16 bit
half3 3 số thực có độ chính xác đơn 16 bit
half4 4 số thực 16 bit
int16_t Số nguyên 16 bit đã ký
int2 Hai số nguyên 32 bit có dấu
int3 Ba số nguyên 32 bit có dấu
int32_t Số nguyên 32 bit đã ký
int4 Bốn số nguyên 32 bit có dấu
int64_t Số nguyên 64 bit đã ký
int8_t Số nguyên 8 bit đã ký
long2 Hai số nguyên 64 bit có dấu
long3 Ba số nguyên 64 bit có dấu
long4 Bốn số nguyên 64 bit có dấu
rs_ma trận2x2 Ma trận 2x2 của số thực 32 bit
rs_ma trận3x3 Ma trận 3x3 của số thực 32 bit
rs_ma trận4x4 Ma trận 4x4 của số thực 32 bit
rs_quaternion Quaternion
short2 Hai số nguyên 16 bit có dấu
short3 Ba số nguyên 16 bit có dấu
short4 Bốn số nguyên 16 bit có dấu
size_t Loại kích thước chưa ký
ssize_t (kích thước t) Loại kích thước đã ký
uchar Số nguyên 8 bit chưa ký
uchar2 Hai số nguyên 8 bit không dấu
uchar3 Ba số nguyên 8 bit không dấu
uchar4 Bốn số nguyên 8 bit không dấu
uint Số nguyên 32 bit chưa ký
uint16_t Số nguyên 16 bit chưa ký
uint2 Hai số nguyên 32 bit không dấu
uint3 Ba số nguyên 32 bit không dấu
uint32_t Số nguyên 32 bit chưa ký
uint4 Bốn số nguyên 32 bit không dấu
uint64_t Số nguyên 64 bit chưa ký
uint8_t Số nguyên 8 bit chưa ký
ulong Số nguyên 64 bit chưa ký
ulong2 Hai số nguyên 64 bit không dấu
ulong3 Ba số nguyên 64 bit không dấu
ulong4 Bốn số nguyên 64 bit không dấu
ngắn gọn Số nguyên 16 bit chưa ký
ushort2 Hai số nguyên 16 bit không dấu
ushort3 Ba số nguyên 16 bit không dấu
ushort4 Bốn số nguyên 16 bit không dấu

Loại

char2 : Hai số nguyên 8 bit đã ký

typedef của: char __attribute__((ext_vectơ_type(2)))

Vectơ gồm hai ký tự. Hai ký tự này được đóng gói trong một trường 16 bit duy nhất có độ căn chỉnh 16 bit.

char3 : Ba số nguyên 8 bit đã ký

typedef của: char __attribute__((ext_vectơ_type(3)))

Vectơ gồm ba ký tự. Ba ký tự này được đóng gói vào một trường 32 bit duy nhất có kiểu căn chỉnh 32 bit.

char4 : Bốn số nguyên 8 bit có dấu

typedef của: char __attribute__((ext_vectơ_type(4)))

Vectơ gồm bốn ký tự. 4 ký tự này được đóng gói vào một trường 32 bit duy nhất có kiểu căn chỉnh 32 bit.

double2 : Hai số thực 64 bit

typedef của: double __attribute__((ext_vectơ_type(2)))

Vectơ hai nhân. Hai trường kép này được đóng gói thành một trường 128 bit duy nhất có căn chỉnh 128 bit.

Double3 : Ba số thực 64 bit

typedef của: double __attribute__((ext_vectơ_type(3)))

Vectơ ba đôi. 3 trường kép này được đóng gói thành một trường 256 bit duy nhất có kiểu căn chỉnh 256 bit.

double4 : Bốn số thực 64 bit

typedef của: double __attribute__((ext_vectơ_type(4)))

Vectơ bốn nhân đôi. Bốn trường kép này được đóng gói thành một trường 256 bit duy nhất có căn chỉnh 256 bit.

float2 : Hai số thực 32 bit

typedef của: float __attribute__((ext_vectơ_type(2))))

Vectơ hai số thực. Hai số thực này được đóng gói vào một trường 64 bit duy nhất với cách căn chỉnh 64 bit.

Vectơ hai số thực. Hai số thực này được đóng gói vào một trường 64 bit duy nhất với cách căn chỉnh 64 bit.

float3 : Ba số thực 32 bit

typedef của: float __attribute__((ext_vectơ_type(3)))

Vectơ ba số phẩy động. Ba số thực này được đóng gói vào một trường 128 bit duy nhất với cách căn chỉnh 128 bit.

float4 : Bốn số thực 32 bit

typedef của: float __attribute__((ext_vectơ_type(4)))

Một vectơ gồm 4 kiểu số thực. Bốn số thực này được đóng gói vào một trường 128 bit duy nhất với cách căn chỉnh 128 bit.

nửa : giá trị dấu phẩy động 16 bit

Typedef của: __FP16 Đã thêm vào API cấp 23

Giá trị dấu phẩy động 16 bit.

half2 : Hai số thực 16 bit

Typedef của: nửa __attribute__((ext_vectơ_type(2))) Đã thêm vào API cấp 23

Phiên bản vectơ của kiểu nửa số thực. Cung cấp 2 nửa trường được đóng gói trong một trường 32 bit duy nhất theo chuẩn 32 bit.

half3 : Ba số thực 16 bit

typedef của: nửa __attribute__((ext_vectơ_type(3))) Đã thêm vào API cấp 23

Phiên bản vectơ của kiểu nửa số thực. Cung cấp 3 nửa trường được đóng gói trong một trường 64 bit duy nhất theo chuẩn 64 bit.

half4 : Bốn số thực 16 bit

Một typedef của: một nửa __attribute__((ext_vectơ_type(4))) Đã thêm vào API cấp 23

Phiên bản vectơ của kiểu nửa số thực. Cung cấp 4 trường được đóng gói trong một trường 64 bit duy nhất theo ngôn ngữ căn chỉnh 64 bit.

int16_t : Số nguyên 16 bit đã ký

Typedef của: short

Kiểu số nguyên 16 bit đã ký.

int2 : Hai số nguyên 32 bit đã ký

typedef của: int __attribute__((ext_vectơ_type(2)))

Vectơ hai int. Hai int này được đóng gói vào một trường 64 bit duy nhất có căn chỉnh 64 bit.

int3 : Ba số nguyên 32 bit đã ký

typedef của: int __attribute__((ext_vectơ_type(3)))

Vectơ ba int. 3 int này được đóng gói vào một trường 128 bit duy nhất với căn chỉnh 128 bit.

int32_t : Số nguyên 32 bit đã ký

Một typedef của: int

Kiểu số nguyên 32 bit đã ký.

int4 : Bốn số nguyên 32 bit có dấu

typedef của: int __attribute__((ext_vectơ_type(4)))

Vectơ gồm 4 int. Hai bốn số này được đóng gói trong một trường 128 bit duy nhất với căn chỉnh 128 bit.

int64_t : Số nguyên 64 bit đã ký

Typedef của: long long Đã xoá khỏi API cấp 21 trở lên

Một typedef của: long Đã thêm vào API cấp 21

Kiểu số nguyên 64 bit đã ký.

int8_t : số nguyên 8 bit đã ký

Typedef của: char

Kiểu số nguyên 8 bit đã ký.

long2 : Hai số nguyên 64 bit đã ký

typedef của: long __attribute__((ext_vectơ_type(2)))

Vectơ hai độ dài. Hai khoảng thời gian dài này được đóng gói trong một trường 128 bit duy nhất có căn chỉnh 128 bit.

long3 : Ba số nguyên 64 bit đã ký

typedef của: long __attribute__((ext_vectơ_type(3)))

Vectơ ba độ dài. 3 khoảng thời gian dài này được đóng gói vào một trường 256 bit duy nhất có căn chỉnh 256 bit.

long4 : Bốn số nguyên 64 bit có dấu

typedef của: long __attribute__((ext_vectơ_type(4)))

Vectơ bốn độ dài. Bốn khoảng thời gian này được đóng gói vào một trường 256 bit duy nhất với căn chỉnh 256 bit.

rs_Ma trận2x2 : Ma trận 2x2 với số thực 32 bit

Cấu trúc có các trường sau đây:     

số thực m[4]

Một ma trận vuông 2x2 gồm các số thực. Các mục nhập được lưu trữ trong mảng tại vị trí [hàng*2 + cột].

Xem Hàm ma trận.

rs_Ma trận3x3 : Ma trận 3x3 với số thực 32 bit

Cấu trúc có các trường sau đây:     

số thực m[9]

Một ma trận vuông 3x3 gồm các số thực. Các mục nhập được lưu trữ trong mảng tại vị trí [hàng*3 + cột].

Xem Hàm ma trận.

rs_ma44x4 : Ma trận 4x4 với số thực 32 bit

Cấu trúc có các trường sau đây:     

số thực m[16]

Một ma trận vuông 4x4 gồm các số thực. Các mục nhập được lưu trữ trong mảng tại vị trí [hàng*4 + cột].

Xem Hàm ma trận.

rs_quaternion : Quaternion

Một typedef của: float4

Một ma trận vuông 4x4 gồm các số thực biểu diễn một bộ 4.

Xem Hàm tuần tự.

short2 : Hai số nguyên 16 bit đã ký

typedef của: ngắn __attribute__((ext_vectơ_type(2)))

Vectơ hai video ngắn. Hai video ngắn này được đóng gói trong một trường 32 bit duy nhất có căn chỉnh 32 bit.

short3 : Ba số nguyên 16 bit đã ký

typedef của: ngắn __attribute__((ext_vectơ_type(3)))

Vectơ ba video ngắn. Ba trường ngắn này được đóng gói thành một trường 64 bit duy nhất có căn chỉnh 64 bit.

short4 : Bốn số nguyên 16 bit có dấu

typedef của: ngắn __attribute__((ext_vectơ_type(4)))

Vectơ vẽ 4 quần đùi. Bốn trường ngắn này được đóng gói thành một trường 64 bit duy nhất có kiểu căn chỉnh 64 bit.

size_t : Loại kích thước chưa được ký

Typedef của: uint64_t Khi biên dịch mã cho 64 bit.

Typedef của: uint32_t Khi biên dịch cho 32 bit.

Loại kích thước chưa được ký. Số lượng bit phụ thuộc vào cờ biên dịch.

ssize_t : Loại kích thước đã ký

Thuộc tính typedef của: int64_t Khi biên dịch mã cho 64 bit.

Thuộc tính typedef của: int32_t Khi biên dịch mã cho 32 bit.

Loại kích thước đã ký. Số lượng bit phụ thuộc vào cờ biên dịch.

uchar : số nguyên 8 bit chưa ký

Typedef của: uint8_t

Kiểu số nguyên 8 bit chưa ký.

uchar2 : Hai số nguyên 8 bit chưa ký

typedef của: uchar __attribute__((ext_vectơ_type(2)))

Vectơ hai dấu vân tay. Hai trường uchar này được đóng gói trong một trường 16 bit duy nhất có cách căn chỉnh 16 bit.

uchar3 : Ba số nguyên 8 bit chưa ký

typedef của: uchar __attribute__((ext_vectơ_type(3)))

Vectơ ba dấu gạch chéo. Ba trường uchar này được đóng gói thành một trường 32 bit duy nhất có cách căn chỉnh 32 bit.

uchar4 : 4 số nguyên 8 bit chưa ký

typedef của: uchar __attribute__((ext_vectơ_type(4)))

Vectơ gồm bốn con dấu. Bốn trường uchar này được đóng gói thành một trường 32 bit duy nhất có kiểu căn chỉnh 32 bit.

uint : Số nguyên 32 bit chưa ký

Typedef của: uint32_t

Kiểu số nguyên 32 bit chưa ký.

uint16_t : Số nguyên 16 bit chưa ký

typedef của: viết tắt không dấu

Kiểu số nguyên 16 bit chưa ký.

uint2 : Hai số nguyên 32 bit chưa ký

typedef của: uint __attribute__((ext_vectơ_type(2)))

Vectơ gồm hai uint. Hai phiên bản này được đóng gói vào một trường 64 bit duy nhất với cách căn chỉnh 64 bit.

uint3 : 3 số nguyên 32 bit chưa ký

typedef của: uint __attribute__((ext_vectơ_type(3)))

Vectơ gồm ba uint. 3 phiên bản này được đóng gói vào một trường 128 bit duy nhất với cách căn chỉnh 128 bit.

uint32_t : Số nguyên 32 bit chưa ký

Một typedef của: int chưa ký

Kiểu số nguyên 32 bit chưa ký.

uint4 : Bốn số nguyên 32 bit chưa ký

typedef của: uint __attribute__((ext_vectơ_type(4)))

Vectơ gồm bốn uint. Bốn phiên bản này được đóng gói vào một trường 128 bit duy nhất với căn chỉnh 128 bit.

uint64_t : Số nguyên 64 bit chưa ký

A typedef của: unsigned long long Bị xoá khỏi API cấp 21 trở lên

Một typedef của: unsigned long Đã thêm vào API cấp 21

Kiểu số nguyên 64 bit chưa ký.

uint8_t : Số nguyên 8 bit chưa ký

typedef của: ký tự không dấu

Kiểu số nguyên 8 bit chưa ký.

ulong : Số nguyên 64 bit chưa ký

Typedef của: uint64_t

Kiểu số nguyên 64 bit chưa ký.

ulong2 : Hai số nguyên 64 bit chưa ký

typedef của: ulong __attribute__((ext_vectơ_type(2)))

Vectơ gồm hai ulong. Hai ulong này được đóng gói trong một trường 128 bit duy nhất có căn chỉnh 128 bit.

ulong3 : 3 số nguyên 64 bit chưa ký

typedef của: ulong __attribute__((ext_vectơ_type(3)))

Vectơ gồm ba ô dài. Ba trường dài này được gói thành một trường 256 bit duy nhất có cách căn chỉnh 256 bit.

ulong4 : Bốn số nguyên 64 bit chưa ký

typedef của: ulong __attribute__((ext_vectơ_type(4)))

Vectơ gồm bốn ô dài. Bốn trường dài này được đóng gói trong một trường 256 bit duy nhất có căn chỉnh 256 bit.

ushort : Số nguyên 16 bit chưa ký

Typedef của: uint16_t

Kiểu số nguyên 16 bit chưa ký.

ushort2 : Hai số nguyên 16 bit chưa ký

Typedef của: ushort __attribute__((ext_vectơ_type(2)))

Vectơ hai chiếc quần ushorts. Hai trường ushort này được đóng gói thành một trường 32 bit duy nhất có cách căn chỉnh 32 bit.

ushort3 : Ba số nguyên 16 bit chưa ký

Typedef của: ushort __attribute__((ext_vectơ_type(3)))

Vectơ ba chiếc quần ushorts. Ba trường ushort này được đóng gói thành một trường 64 bit duy nhất có kiểu căn chỉnh 64 bit.

ushort4 : Bốn số nguyên 16 bit chưa ký

typedef của: ushort __attribute__((ext_vectơ_type(4)))

Vectơ gồm 4 chiếc quần ushorts. Bốn trường ushort này được đóng gói thành một trường 64 bit duy nhất có căn chỉnh 64 bit.