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.s12
và myVar.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ận3x3 và rs_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
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.