Hàm đặc điểm đối tượng RenderScript

Tổng quan

Bạn có thể dùng các hàm dưới đây để truy vấn các đặc điểm của đối tượng Phân bổ, Phần tử hoặc Trình lấy mẫu. Các đối tượng này được tạo qua Java. Bạn không thể tạo chúng từ một tập lệnh.

Lớp truyền dữ liệu giữa các nhân:

Allocations là phương thức chính dùng để truyền dữ liệu đến và đi qua hạt nhân RenderScript.

Đó là một tập hợp các ô có cấu trúc mà có thể dùng để lưu trữ bitmap, hoạ tiết, điểm dữ liệu tuỳ ý, v.v.

Tập hợp các ô này có thể có nhiều chiều (X, Y, Z, Array0, Array1, Array2, Array3), các mặt (đối với bản đồ lập phương) và cấp độ chi tiết (đối với mipmapping).

Xem android.renderscript.Allocation để biết thông tin chi tiết về cách tạo Allocations.

Phần tử:

Thuật ngữ "phần tử" được sử dụng một cách không rõ ràng trong RenderScript, vì cả hai loại thông tin cho các ô của Allocations và việc tạo thực thể của kiểu đó. Ví dụ:

  • rs_element là đối tượng xử lý cho thông số kỹ thuật loại và
  • Trong các hàm như rsGetElementAt(), "element" có nghĩa là tạo thực thể của loại, tức là một ô của Allocations.

Các hàm dưới đây cho phép bạn truy vấn các đặc điểm của thông số kỹ thuật kiểu.

Một phần tử có thể chỉ định một kiểu dữ liệu đơn giản có trong C, ví dụ: số nguyên, số thực có độ chính xác đơn hoặc boolean. Hàm này cũng có thể chỉ định một đối tượng xử lý cho đối tượng RenderScript. Hãy xem rs_data_type để biết danh sách các loại cơ bản.

Các phần tử có thể chỉ định các phiên bản vectơ kích thước cố định (có kích thước 2, 3 hoặc 4) của các kiểu cơ bản. Các phần tử có thể được nhóm lại với nhau thành các Phần tử phức tạp, tạo ra phần tử tương đương với định nghĩa cấu trúc C.

Các phần tử cũng có thể có một loại, đó là thông tin ngữ nghĩa dùng để diễn giải dữ liệu pixel. Xem rs_data_ kind.

Khi tạo Allocations của các phần tử phổ biến, bạn chỉ cần sử dụng một trong nhiều Phần tử được xác định trước, chẳng hạn như F32_2.

Để tạo các Phần tử phức tạp, hãy sử dụng lớp Java Element.Builder.

Trình lấy mẫu:

Đối tượng Samplers xác định cách Allocations có thể được đọc dưới dạng cấu trúc trong hạt nhân. Xem android.Renderscript.S.

Tóm tắt

Hàm
rsAllocationGetDimFaces Nhiều khuôn mặt xuất hiện
rsAllocationGetDimLOD Sự hiện diện của các cấp độ chi tiết
rsAllocationGetDimX Kích thước của phương diện X
rsAllocationGetDimY Kích thước của phương diện Y
rsAllocationGetDimZ Kích thước của phương diện Z
rsAllocationGetElement Lấy đối tượng mô tả ô của Allocations
rsClearObject Thả một đối tượng
rsElementGetBytesSize Kích thước của một phần tử
rsElementGetDataKind Loại phần tử
rsElementGetDataType Loại dữ liệu của một phần tử
rsElementGetSubElement Phần tử con của một phần tử phức
rsElementGetSubElementArraySize Kích thước mảng của một phần tử con trong một phần tử phức
rsElementGetSubElementCount Số lượng phần tử phụ
rsElementGetSubElementName Tên phần tử phụ
rsElementGetSubElementNameLength (Bộ tiêu chí xác định độ dài) Độ dài của tên phần tử phụ
rsElementGetSubElementOffsetBytes Mức chênh lệch của phần tử phụ được tạo bản sao
rsElementGetVectorSize Kích thước vectơ của Phần tử
rsIsObject Kiểm tra xem có tên người dùng trống không
rsSamplerGetAnisotropy Tính không đẳng hướng của Trình lấy mẫu
rsSamplerGetMagnification Giá trị phóng to của bộ lấy mẫu
rsSamplerGetMinification Giá trị giảm kích thước của bộ lấy mẫu
rsSamplerGetWrapS Giá trị S gói bộ lấy mẫu
rsSamplerGetWrapT Giá trị T gói bộ lấy mẫu
Hàm không dùng nữa
rsGetAllocation Không dùng nữa. Trả về Allocations cho một con trỏ cụ thể

Hàm

rsAllocationGetDimFaces : Sự hiện diện của nhiều khuôn mặt

uint32_t rsAllocationGetDimFaces(rs_allocation a);
Giá trị trả về
Trả về 1 nếu có nhiều khuôn mặt, nếu không thì trả về 0.

Nếu Allocation là một bản đồ khối, hàm này sẽ trả về 1 nếu có nhiều mặt. Trong mọi trường hợp khác, giá trị này sẽ trả về 0.

Sử dụng rsGetDimHasFaces() để lấy kích thước của một hạt nhân hiện đang chạy.

rsAllocationGetDimLOD : Sự hiện diện của các cấp độ chi tiết

uint32_t rsAllocationGetDimLOD(rs_allocation a);
Giá trị trả về
Trả về 1 nếu có nhiều LOD, trả về 0 nếu có nhiều LOD.

Truy vấn Allocations để biết sự hiện diện của nhiều Cấp độ chi tiết. Điều này rất hữu ích cho mipmap.

Sử dụng rsGetDimLod() để lấy kích thước của một hạt nhân hiện đang chạy.

rsAllocationGetDimX : Kích thước của chiều X

uint32_t rsAllocationGetDimX(rs_allocation a);
Giá trị trả về
Chiều X của Phân bổ.

Trả về kích thước chiều X của Phân bổ.

Sử dụng rsGetDimX() để lấy kích thước của một hạt nhân hiện đang chạy.

rsAllocationGetDimY : Kích thước của chiều Y

uint32_t rsAllocationGetDimY(rs_allocation a);
Giá trị trả về
Chiều Y của Phân bổ.

Trả về kích thước chiều Y của Allocations. Nếu Allocations có ít hơn 2 chiều, trả về 0.

Sử dụng rsGetDimY() để lấy kích thước của một hạt nhân hiện đang chạy.

rsAllocationGetDimZ : Kích thước của chiều Z

uint32_t rsAllocationGetDimZ(rs_allocation a);
Giá trị trả về
Chiều Z của Phân bổ.

Trả về kích thước chiều Z của Allocations. Nếu Allocations có ít hơn 3 chiều, trả về 0.

Dùng rsGetDimZ() để lấy kích thước của một hạt nhân hiện đang chạy.

rsAllocationGetElement : Lấy đối tượng mô tả ô của Allocations

rs_element rsAllocationGetElement(rs_allocation a);
Tham số
aPhân bổ để lấy dữ liệu.
Giá trị trả về
Phần tử mô tả bố cục Phân bổ.

Lấy đối tượng Phần tử mô tả loại, loại và các đặc điểm khác của một ô trong Allocations. Xem các hàm rsElement* dưới đây.

rsClearObject : Phát hành đối tượng

void rsClearObject(rs_allocation* dst);
void rsClearObject(rs_element* dst);
void rsClearObject(rs_font* dst); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
void rsClearObject(rs_grid* dst); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
void rsClearObject(rs_program_fragment* dst); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
void rsClearObject(rs_program_raster* dst); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
void rsClearObject(rs_program_store* dst); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
void rsClearObject(rs_program_vertex* dst); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
void rsClearObject(rs_sampler* dst);
void rsClearObject(rs_script* dst);
void rsClearObject(rs_type* dst);

Thông báo cho thời gian chạy rằng tên người dùng này sẽ không còn được dùng để truy cập vào đối tượng có liên quan. Nếu đây là lần xử lý cuối cùng cho đối tượng đó, thì có thể quá trình khôi phục tài nguyên sẽ diễn ra.

Sau khi gọi hàm này, *dst sẽ được đặt thành một tên người dùng trống. Xem rsIsObject().

rsElementGetBytesSize : Kích thước của một phần tử

uint32_t rsElementGetBytesSize(rs_element e); Đã thêm vào API cấp 16

Trả về kích thước tính bằng byte mà một bản sao của Phần tử này sẽ chiếm.

rsElementGetDataKind : Loại phần tử

rs_data_kind rsElementGetDataKind(rs_element e); Đã thêm vào API cấp 16

Trả về loại dữ liệu của Phần tử. API này được dùng để diễn giải dữ liệu pixel.

Xem rs_data_ kind.

rsElementGetDataType : Loại dữ liệu của một phần tử

rs_data_type rsElementGetDataType(rs_element e); Đã thêm vào API cấp 16

Trả về loại dữ liệu cơ sở của Phần tử. Đây có thể là loại tương tự như C/C++ (ví dụ: RS_TYPE_UNSIGNED_8), tên người dùng (ví dụ: RS_TYPE_ALLOCATION và RS_TYPE_ELEMENT) hoặc loại số phức tạp hơn (ví dụ: RS_TYPE_UNSIGNED_5_6_5 và RS_TYPE_MATRIX_4X4). Hãy xem rs_data_type.

Nếu Phần tử mô tả một vectơ, hàm này sẽ trả về loại dữ liệu của một trong các mục của vectơ. Sử dụng rsElementGetVectorSize để nhận kích thước của vectơ.

Nếu Phần tử mô tả một cấu trúc, thì RS_TYPE_NONE sẽ được trả về. Sử dụng các hàm rsElementGetSub* để khám phá Phần tử phức tạp này.

rsElementGetSubElement : Phần tử con của một phần tử phức tạp

rs_element rsElementGetSubElement(rs_element e, chỉ mục uint32_t); Đã thêm vào API cấp 16
Tham số
ePhần tử cần truy vấn.
chỉ mụcChỉ mục của phần tử phụ cần trả về.
Giá trị trả về
Phần tử con ở chỉ mục đã cho.

Đối với phần tử đại diện cho một cấu trúc, hàm này sẽ trả về phần tử phụ tại chỉ mục đã chỉ định.

Nếu Phần tử không phải là một cấu trúc hoặc chỉ mục lớn hơn hoặc bằng số lượng phần tử phụ, thì hàm xử lý không hợp lệ sẽ được trả về.

rsElementGetSubElementArraySize : Kích thước mảng của một phần tử con của một phần tử phức tạp

uint32_t rsElementGetSubElementArraySize(rs_element e, chỉ mục uint32_t); Đã thêm vào API cấp 16
Tham số
ePhần tử cần truy vấn.
chỉ mụcChỉ mục của phần tử phụ.
Giá trị trả về
Kích thước mảng của phần tử con.

Đối với các phần tử phức tạp, phần tử phụ có thể là các mảng có kích thước tĩnh. Hàm này trả về kích thước mảng của phần tử con tại chỉ mục. Sự lặp lại của phần tử phụ này khác với vectơ có kích thước cố định.

rsElementGetSubElementCount : Số phần tử phụ

uint32_t rsElementGetSubElementCount(rs_element e); Đã thêm vào API cấp 16
Tham số
ePhần tử để lấy dữ liệu.
Giá trị trả về
Số lượng phần tử phụ.

Các phần tử có thể đơn giản, chẳng hạn như số nguyên hoặc số thực có độ chính xác đơn, hoặc cấu trúc có nhiều phần tử phụ. Hàm này trả về 0 đối với Phần tử đơn giản và số lượng phần tử phụ cho Phần tử phức tạp.

rsElementGetSubElementName : Tên của một phần tử phụ

uint32_t rsElementGetSubElementName(rs_element e, chỉ mục uint32_t, tên char*, uint32_t nameLength); Đã thêm vào API cấp 16
Tham số
ePhần tử để lấy dữ liệu.
chỉ mụcChỉ mục của phần tử phụ.
tênĐịa chỉ của mảng để lưu trữ tên.
nameLength (Độ dài tên)Độ dài của mảng tên đã cho.
Giá trị trả về
Số ký tự được sao chép, ngoại trừ dấu kết thúc rỗng.

Đối với các phần tử phức tạp, hàm này sẽ trả về tên của phần tử phụ tại chỉ mục đã chỉ định.

rsElementGetSubElementNameLength : Độ dài của tên phần tử phụ

uint32_t rsElementGetSubElementNameLength(rs_element e, chỉ mục uint32_t); Đã thêm vào API cấp 16
Tham số
ePhần tử để lấy dữ liệu.
chỉ mụcChỉ mục của phần tử phụ.
Giá trị trả về
Độ dài của tên phần tử phụ, bao gồm cả dấu kết thúc rỗng.

Đối với phần tử phức tạp, hàm này sẽ trả về độ dài tên phần tử con tại chỉ mục đã chỉ định.

rsElementGetSubElementOffsetBytes : Mức chênh lệch của phần tử phụ được tạo thực thể

uint32_t rsElementGetSubElementOffsetBytes(rs_element e, chỉ mục uint32_t); Đã thêm vào API cấp 16
Tham số
ePhần tử để lấy dữ liệu.
chỉ mụcChỉ mục của phần tử phụ.
Giá trị trả về
Độ lệch tính bằng byte.

Hàm này trả về vị trí tương đối của bản sao thực thể của phần tử con được chỉ định trong quá trình tạo thực thể của Phần tử.

Ví dụ: nếu Phần tử mô tả số thực 32 bit theo sau là số nguyên 32 bit, thì giá trị bù trừ cho giá trị đầu tiên sẽ là 0 và số nguyên thứ hai là 4.

rsElementGetVectorSize : Kích thước vectơ của Phần tử

uint32_t rsElementGetVectorSize(rs_element e); Đã thêm vào API cấp 16
Tham số
ePhần tử để lấy dữ liệu.
Giá trị trả về
Độ dài của vectơ phần tử.

Trả về kích thước vectơ của Phần tử. Nếu Phần tử không đại diện cho một vectơ, thì hàm sẽ trả về 1.

rsGetAllocation : Trả về Allocations cho một con trỏ cụ thể

rs_allocation rsGetAllocation(const void* p);

Không dùng nữa. Hàm này không được dùng nữa và sẽ bị xoá khỏi SDK trong bản phát hành sau này.

Trả về Allocations cho một con trỏ cụ thể. Con trỏ phải trỏ trong một vị trí phân bổ hợp lệ. Kết quả không xác định nếu con trỏ không phải từ một Allocations hợp lệ.

rsIsObject : Kiểm tra xem có tên người dùng trống hay không

bool rsIsObject(rs_allocation v);
bool rsIsObject(rs_element v);
bool rsIsObject(rs_font v); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
bool rsIsObject(rs_grid v); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
bool rsIsObject(rs_program_fragment v); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
bool rsIsObject(rs_program_raster v); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
bool rsIsObject(rs_program_store v); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
bool rsIsObject(rs_program_vertex v); Khi biên dịch cho 32 bit. Đã xoá khỏi API cấp 23 trở lên
bool rsIsObject(rs_sampler v);
bool rsIsObject(rs_script v);
bool rsIsObject(rs_type v);

Trả về true nếu tên người dùng chứa tham chiếu không có giá trị null.

Hàm này không xác thực rằng con trỏ nội bộ dùng trong tay điều khiển trỏ đến một đối tượng thực sự hợp lệ; mà chỉ kiểm tra giá trị rỗng.

Có thể sử dụng hàm này để kiểm tra Phần tử được rsElementGetSubElement() trả về hoặc xem liệu rsClearObject() đã được gọi trên handle hay chưa.

rsSamplerGetAnisotropy : Tính không đẳng hướng của trình lấy mẫu

số thực rsSamplerGetAnisotropy(rs_sampler s); Đã thêm vào API cấp 16

Tải dữ liệu không đẳng hướng của Sampler.

Xem android.Renderscript.S.

rsSamplerGetMagnification : Giá trị phóng to của trình lấy mẫu

rs_sampler_value rsSamplerGetMagnification(rs_sampler s); Đã thêm vào API cấp 16

Lấy giá trị phóng to của Trình lấy mẫu.

Xem android.Renderscript.S.

rsSamplerGetMinification : Giá trị rút gọn của bộ lấy mẫu

rs_sampler_value rsSamplerGetMinification(rs_sampler s); Đã thêm vào API cấp 16

Lấy giá trị rút gọn của Trình lấy mẫu.

Xem android.Renderscript.S.

rsSamplerGetWrapS : Sampler gói giá trị S

rs_sampler_value rsSamplerGetWrapS(rs_sampler s); Đã thêm vào API cấp 16

Nhận giá trị S bao bọc của Trình lấy mẫu.

Xem android.Renderscript.S.

rsSamplerGetWrapT : Giá trị T gói của trình lấy mẫu

rs_sampler_value rsSamplerGetWrapT(rs_sampler s); Đã thêm vào API cấp 16

Nhận giá trị T bao bọc của trình lấy mẫu.

Xem android.Renderscript.S.