ฟังก์ชันลักษณะของออบเจ็กต์ RenderScript

ภาพรวม

ฟังก์ชันด้านล่างนี้ใช้เพื่อค้นหาลักษณะของออบเจ็กต์การจัดสรร องค์ประกอบ หรือเครื่องสุ่มตัวอย่างได้ ออบเจ็กต์เหล่านี้สร้างขึ้นจาก Java คุณสร้างจากสคริปต์ไม่ได้

การจัดสรร

การจัดสรรเป็นวิธีหลักที่ใช้ส่งข้อมูลจากและไปยังเคอร์เนล RenderScript

นั่นคือคอลเล็กชันเซลล์ที่มีโครงสร้างซึ่งสามารถใช้จัดเก็บบิตแมป พื้นผิว จุดข้อมูลที่กำหนดเอง ฯลฯ

คอลเล็กชันเซลล์นี้อาจมีมิติข้อมูลหลายรายการ (X, Y, Z, Array0, Array1, Array2, Array3), ใบหน้า (สำหรับภาพลูกบาศก์) และระดับรายละเอียด (สำหรับ MIP Mapping)

ดูรายละเอียดการสร้าง Allocation ได้ที่ android.renderscript.Allocation

องค์ประกอบ

คําว่า "องค์ประกอบ" ใช้อย่างคลุมเครือใน RenderScript เนื่องจากเป็นทั้งข้อมูลประเภทสําหรับเซลล์ของการจัดสรรและการสร้างอินสแตนซ์ของประเภทนั้น เช่น

  • rs_element คือแฮนเดิลสำหรับข้อกำหนดประเภท และ
  • ในฟังก์ชันอย่าง rsGetElementAt() "องค์ประกอบ" หมายถึงการสร้างอินสแตนซ์ของประเภท นั่นคือ เซลล์ของการจัดสรร

ฟังก์ชันด้านล่างช่วยให้คุณค้นหาลักษณะของข้อมูลจำเพาะของประเภทได้

องค์ประกอบสามารถระบุประเภทข้อมูลธรรมดาตามที่พบใน C เช่น จํานวนเต็ม ลอย หรือบูลีน และยังระบุแฮนเดิลไปยังออบเจ็กต์ RenderScript ได้ด้วย ดูรายการประเภทพื้นฐานได้ที่ rs_data_type

องค์ประกอบสามารถระบุเวกเตอร์ขนาดคงที่ (ขนาด 2, 3 หรือ 4) ของประเภทพื้นฐานได้ องค์ประกอบสามารถจัดกลุ่มเข้าด้วยกันเป็นองค์ประกอบที่ซับซ้อน ซึ่งจะสร้างการกําหนดโครงสร้าง C ที่เทียบเท่า

องค์ประกอบยังมีประเภทได้ด้วย ซึ่งเป็นข้อมูลเชิงความหมายที่ใช้ตีความข้อมูลพิกเซล โปรดดู rs_data_kind

เมื่อสร้างการแบ่งองค์ประกอบทั่วไป คุณก็ใช้องค์ประกอบที่กําหนดไว้ล่วงหน้าอย่าง F32_2 ได้

หากต้องการสร้างองค์ประกอบที่ซับซ้อน ให้ใช้คลาส Java Element.Builder

แซมเพลอร์

ออบเจ็กต์ Samplers จะกำหนดวิธีอ่าน Allocation เป็นโครงสร้างภายในเคอร์เนล ดูที่ android.renderscript.S

สรุป

ฟังก์ชัน
rsAllocationGetDimFaces มีใบหน้ามากกว่า 1 ใบหน้า
rsAllocationGetDimLOD ระดับรายละเอียด
rsAllocationGetDimX ขนาดของมิติข้อมูล X
rsAllocationGetDimY ขนาดของมิติข้อมูล Y
rsAllocationGetDimZ ขนาดของมิติข้อมูล Z
rsAllocationGetElement รับออบเจ็กต์ที่อธิบายเซลล์ของการแบ่งสรร
rsClearObject ปล่อยวัตถุ
rsElementGetBytesSize ขนาดขององค์ประกอบ
rsElementGetDataKind ประเภทองค์ประกอบ
rsElementGetDataType ประเภทข้อมูลขององค์ประกอบ
rsElementGetSubElement องค์ประกอบย่อยขององค์ประกอบที่ซับซ้อน
rsElementGetSubElementArraySize ขนาดอาร์เรย์ขององค์ประกอบย่อยขององค์ประกอบที่ซับซ้อน
rsElementGetSubElementCount จํานวนองค์ประกอบย่อย
rsElementGetSubElementName ชื่อองค์ประกอบย่อย
rsElementGetSubElementNameLength ความยาวของชื่อองค์ประกอบย่อย
rsElementGetSubElementOffsetBytes ส่วนต่างขององค์ประกอบย่อยที่สร้างขึ้น
rsElementGetVectorSize ขนาดเวกเตอร์ขององค์ประกอบ
rsIsObject ตรวจสอบแฮนเดิลที่ว่างเปล่า
rsSamplerGetAnisotropy ความไม่สมมาตรของแซมเพลอร์
rsSamplerGetMagnification ค่าการขยายของเครื่องมือวัด
rsSamplerGetMinification ค่าการลดขนาดของแซมเพลอร์
rsSamplerGetWrapS ค่า S ของการตัดขอบ Sampler
rsSamplerGetWrapT ค่า T ของการตัดขอบ Sampler
ฟังก์ชันที่เลิกใช้งาน
rsGetAllocation เลิกใช้งาน แสดงผลการจัดสรรสําหรับพอยน์เตอร์ที่ระบุ

ฟังก์ชัน

rsAllocationGetDimFaces : การมีใบหน้ามากกว่า 1 ใบหน้า

uint32_t rsAllocationGetDimFaces(rs_allocation a);
คิกรีเทิร์น
แสดงผล 1 หากมีใบหน้ามากกว่า 1 รายการ หรือไม่เช่นนั้นจะแสดงผล 0

หาก Allocation เป็น Cubemap ฟังก์ชันนี้จะแสดงผล 1 หากมีใบหน้ามากกว่า 1 หน้า ในกรณีอื่นๆ ทั้งหมด ระบบจะแสดงผลเป็น 0

ใช้ rsGetDimHasFaces() เพื่อรับมิติข้อมูลของเคิร์กัลที่ทำงานอยู่ในปัจจุบัน

rsAllocationGetDimLOD : ระดับรายละเอียด

uint32_t rsAllocationGetDimLOD(rs_allocation a);
คิกรีเทิร์น
แสดงผล 1 หากมี LOD มากกว่า 1 รายการ หรือไม่เช่นนั้นจะแสดงผล 0

ค้นหาการจัดสรรเพื่อดูว่ามีระดับรายละเอียดมากกว่า 1 ระดับหรือไม่ ซึ่งมีประโยชน์สำหรับ MIPMAP

ใช้ rsGetDimLod() เพื่อรับมิติข้อมูลของเคิร์กัลที่ทำงานอยู่ในปัจจุบัน

rsAllocationGetDimX : ขนาดของมิติข้อมูล X

uint32_t rsAllocationGetDimX(rs_allocation a);
คิกรีเทิร์น
มิติข้อมูล X ของการจัดสรร

แสดงขนาดของมิติข้อมูล X ของการแบ่งสรร

ใช้ rsGetDimX() เพื่อรับมิติข้อมูลของเคิร์กัลที่ทำงานอยู่ในปัจจุบัน

rsAllocationGetDimY : ขนาดของมิติข้อมูล Y

uint32_t rsAllocationGetDimY(rs_allocation a);
คิกรีเทิร์น
มิติข้อมูล Y ของการจัดสรร

แสดงผลขนาดของมิติข้อมูล Y ของการแบ่งสรร หากการแบ่งมีมิติข้อมูลน้อยกว่า 2 รายการ ระบบจะแสดงผล 0

ใช้ rsGetDimY() เพื่อรับมิติข้อมูลของเคิร์กัลที่ทำงานอยู่ในปัจจุบัน

rsAllocationGetDimZ : ขนาดของมิติข้อมูล Z

uint32_t rsAllocationGetDimZ(rs_allocation a);
คิกรีเทิร์น
มิติข้อมูล Z ของการจัดสรร

แสดงผลขนาดของมิติข้อมูล Z ของการแบ่งสรร หากการแบ่งมีมิติข้อมูลน้อยกว่า 3 รายการ ระบบจะแสดงผล 0

ใช้ rsGetDimZ() เพื่อรับมิติข้อมูลของเคิร์ดัลที่ทำงานอยู่ในปัจจุบัน

rsAllocationGetElement : รับออบเจ็กต์ที่อธิบายเซลล์ของ Allocation

rs_element rsAllocationGetElement(rs_allocation a);
พารามิเตอร์
aการจัดสรรที่จะดึงข้อมูล
คิกรีเทิร์น
องค์ประกอบที่อธิบายเลย์เอาต์การจัดสรร

รับออบเจ็กต์ Element ที่อธิบายประเภท ชนิด และลักษณะอื่นๆ ของเซลล์ใน Allocation ดูฟังก์ชัน rsElement* ด้านล่าง

rsClearObject : ปล่อยออบเจ็กต์

void rsClearObject(rs_allocation* dst);
void rsClearObject(rs_element* dst);
void rsClearObject(rs_font* dst); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
void rsClearObject(rs_mesh* dst); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
void rsClearObject(rs_program_fragment* dst); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
void rsClearObject(rs_program_raster* dst); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
void rsClearObject(rs_program_store* dst); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
void rsClearObject(rs_program_vertex* dst); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
void rsClearObject(rs_sampler* dst);
void rsClearObject(rs_script* dst);
void rsClearObject(rs_type* dst);

บอกรันไทม์ว่าจะไม่ใช้แฮนเดิลนี้เพื่อเข้าถึงออบเจ็กต์ที่เกี่ยวข้องอีกต่อไป หากนี่เป็นแฮนเดิลสุดท้ายไปยังออบเจ็กต์นั้น การกู้คืนทรัพยากรอาจเกิดขึ้น

หลังจากเรียกใช้ฟังก์ชันนี้ ระบบจะตั้งค่า *dst เป็นตัวแฮนเดิลว่าง โปรดดู rsIsObject()

rsElementGetBytesSize : ขนาดขององค์ประกอบ

uint32_t rsElementGetBytesSize(rs_element e); เพิ่มใน API ระดับ 16

แสดงผลขนาดเป็นไบต์ที่การสร้างอินสแตนซ์ขององค์ประกอบนี้จะครอบครอง

rsElementGetDataKind : ประเภทขององค์ประกอบ

rs_data_kind rsElementGetDataKind(rs_element e); เพิ่มใน API ระดับ 16

แสดงผลชนิดข้อมูลขององค์ประกอบ ซึ่งจะใช้เพื่อตีความข้อมูลพิกเซล

โปรดดู rs_data_kind

rsElementGetDataType : ประเภทข้อมูลขององค์ประกอบ

rs_data_type rsElementGetDataType(rs_element e); เพิ่มใน API ระดับ 16

แสดงผลประเภทข้อมูลพื้นฐานขององค์ประกอบ ซึ่งอาจเป็นประเภทที่คล้ายกับ C/C++ (เช่น RS_TYPE_UNSIGNED_8), แฮนเดิล (เช่น RS_TYPE_ALLOCATION และ RS_TYPE_ELEMENT) หรือประเภทตัวเลขที่ซับซ้อนมากขึ้น (เช่น RS_TYPE_UNSIGNED_5_6_5 และ RS_TYPE_MATRIX_4X4) โปรดดู rs_data_type

หากองค์ประกอบอธิบายเวกเตอร์ ฟังก์ชันนี้จะแสดงผลประเภทข้อมูลของรายการใดรายการหนึ่ง ใช้ rsElementGetVectorSize เพื่อรับขนาดของเวกเตอร์

หากองค์ประกอบอธิบายโครงสร้าง ระบบจะแสดงผล RS_TYPE_NONE ใช้ฟังก์ชัน rsElementGetSub* เพื่อสำรวจองค์ประกอบที่ซับซ้อนนี้

rsElementGetSubElement : องค์ประกอบย่อยขององค์ประกอบที่ซับซ้อน

rs_element rsElementGetSubElement(rs_element e, uint32_t index); เพิ่มใน API ระดับ 16
พารามิเตอร์
eองค์ประกอบที่จะค้นหา
ดัชนีดัชนีขององค์ประกอบย่อยที่จะแสดง
คิกรีเทิร์น
องค์ประกอบย่อยที่ดัชนีที่ระบุ

สำหรับองค์ประกอบที่แสดงโครงสร้าง ฟังก์ชันนี้จะแสดงผลองค์ประกอบย่อยที่อยู่ที่อินเด็กซ์ที่ระบุ

หากองค์ประกอบไม่ใช่โครงสร้างหรือดัชนีมากกว่าหรือเท่ากับจํานวนองค์ประกอบย่อย ระบบจะแสดงผลแฮนเดิลที่ไม่ถูกต้อง

rsElementGetSubElementArraySize : ขนาดอาร์เรย์ขององค์ประกอบย่อยขององค์ประกอบที่ซับซ้อน

uint32_t rsElementGetSubElementArraySize(rs_element e, uint32_t index); เพิ่มใน API ระดับ 16
พารามิเตอร์
eองค์ประกอบที่จะค้นหา
ดัชนีดัชนีขององค์ประกอบย่อย
คิกรีเทิร์น
ขนาดอาร์เรย์ขององค์ประกอบย่อย

สำหรับองค์ประกอบที่ซับซ้อน องค์ประกอบย่อยอาจเป็นอาร์เรย์ที่มีขนาดคงที่ ฟังก์ชันนี้จะแสดงขนาดอาร์เรย์ขององค์ประกอบย่อยที่อยู่ที่อินเด็กซ์ องค์ประกอบย่อยที่ซ้ำกันนี้แตกต่างจากเวกเตอร์ขนาดคงที่

rsElementGetSubElementCount : จํานวนองค์ประกอบย่อย

uint32_t rsElementGetSubElementCount(rs_element e); เพิ่มใน API ระดับ 16
พารามิเตอร์
eองค์ประกอบที่จะรับข้อมูล
คิกรีเทิร์น
จํานวนองค์ประกอบย่อย

องค์ประกอบอาจเป็นแบบง่าย เช่น int หรือ float หรือโครงสร้างที่มีองค์ประกอบย่อยหลายรายการ ฟังก์ชันนี้จะแสดงผล 0 สำหรับองค์ประกอบแบบง่าย และจำนวนองค์ประกอบย่อยสำหรับองค์ประกอบที่ซับซ้อน

rsElementGetSubElementName : ชื่อขององค์ประกอบย่อย

uint32_t rsElementGetSubElementName(rs_element e, uint32_t index, char* name, uint32_t nameLength); เพิ่มใน API ระดับ 16
พารามิเตอร์
eองค์ประกอบที่จะรับข้อมูล
ดัชนีดัชนีขององค์ประกอบย่อย
ชื่อที่อยู่ของอาร์เรย์ที่จะจัดเก็บชื่อ
nameLengthความยาวของอาร์เรย์ชื่อที่ระบุ
คิกรีเทิร์น
จํานวนของอักขระที่คัดลอก ยกเว้นตัวสิ้นสุด Null

สําหรับองค์ประกอบที่ซับซ้อน ฟังก์ชันนี้จะแสดงผลชื่อขององค์ประกอบย่อยที่ดัชนีที่ระบุ

rsElementGetSubElementNameLength : ความยาวของชื่อองค์ประกอบย่อย

uint32_t rsElementGetSubElementNameLength(rs_element e, uint32_t index); เพิ่มใน API ระดับ 16
พารามิเตอร์
eองค์ประกอบที่จะรับข้อมูล
ดัชนีดัชนีขององค์ประกอบย่อย
คิกรีเทิร์น
ความยาวของชื่อองค์ประกอบย่อย รวมถึงตัวสิ้นสุด Null

สําหรับองค์ประกอบที่ซับซ้อน ฟังก์ชันนี้จะแสดงผลความยาวของชื่อองค์ประกอบย่อยที่อยู่ที่อินเด็กซ์ที่ระบุ

rsElementGetSubElementOffsetBytes : ออฟเซตขององค์ประกอบย่อยที่สร้างขึ้น

uint32_t rsElementGetSubElementOffsetBytes(rs_element e, uint32_t index); เพิ่มใน API ระดับ 16
พารามิเตอร์
eองค์ประกอบที่จะรับข้อมูล
ดัชนีดัชนีขององค์ประกอบย่อย
คิกรีเทิร์น
ออฟเซ็ตเป็นไบต์

ฟังก์ชันนี้จะแสดงผลตําแหน่งสัมพัทธ์ของการสร้างอินสแตนซ์ขององค์ประกอบย่อยที่ระบุภายในการสร้างอินสแตนซ์ขององค์ประกอบ

เช่น หากองค์ประกอบอธิบายจำนวนทศนิยม 32 บิตตามด้วยจำนวนเต็ม 32 บิต ผลลัพธ์ออฟเซตของรายการแรกจะเป็น 0 และรายการที่ 2 จะเป็น 4

rsElementGetVectorSize : ขนาดเวกเตอร์ขององค์ประกอบ

uint32_t rsElementGetVectorSize(rs_element e); เพิ่มใน API ระดับ 16
พารามิเตอร์
eองค์ประกอบที่จะรับข้อมูล
คิกรีเทิร์น
ความยาวของเวกเตอร์องค์ประกอบ

แสดงผลขนาดเวกเตอร์ขององค์ประกอบ หากองค์ประกอบไม่ได้แสดงถึงเวกเตอร์ ระบบจะแสดงผล 1

rsGetAllocation : แสดงผล Allocation สําหรับ Pointer ที่ระบุ

rs_allocation rsGetAllocation(const void* p);

เลิกใช้งานแล้ว ฟังก์ชันนี้เลิกใช้งานแล้วและจะถูกนำออกจาก SDK ในรุ่นต่อๆ ไป

แสดงผลการจัดสรรสําหรับพอยน์เตอร์ที่ระบุ พ้อยเตอร์ควรชี้ภายในการจัดสรรที่ถูกต้อง ระบบจะไม่ระบุผลลัพธ์หากเคอร์เซอร์ไม่ได้มาจาก Allocation ที่ถูกต้อง

rsIsObject : ตรวจสอบแฮนเดิลว่าง

bool rsIsObject(rs_allocation v);
bool rsIsObject(rs_element v);
bool rsIsObject(rs_font v); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
bool rsIsObject(rs_mesh v); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
bool rsIsObject(rs_program_fragment v); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
bool rsIsObject(rs_program_raster v); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
bool rsIsObject(rs_program_store v); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
bool rsIsObject(rs_program_vertex v); เมื่อคอมไพล์สำหรับ 32 บิต นำออกจาก API ระดับ 23 ขึ้นไป
bool rsIsObject(rs_sampler v);
bool rsIsObject(rs_script v);
bool rsIsObject(rs_type v);

แสดงค่า "จริง" หากแฮนเดิลมีการอ้างอิงที่ไม่เท่ากับ Null

ฟังก์ชันนี้ไม่ได้ตรวจสอบว่าพอยน์เตอร์ภายในที่ใช้ในตัวแฮนเดิลชี้ไปยังออบเจ็กต์ที่ถูกต้องจริงหรือไม่ แต่ตรวจสอบเฉพาะค่า Null

ฟังก์ชันนี้ใช้ตรวจสอบองค์ประกอบที่ rsElementGetSubElement() แสดงหรือดูว่ามีการเรียกใช้ rsClearObject() ในตัวแฮนเดิลหรือไม่

rsSamplerGetAnisotropy : ความไม่สมมาตรของแซมเพลอร์

float rsSamplerGetAnisotropy(rs_sampler s); เพิ่มใน API ระดับ 16

รับค่า Anisotropy ของ Sampler

ดูที่ android.renderscript.S

rsSamplerGetMagnification : ค่าการขยายของเครื่องมือวัด

rs_sampler_value rsSamplerGetMagnification(rs_sampler s); เพิ่มใน API ระดับ 16

รับค่าการขยายของเครื่องมือเลือก

ดูที่ android.renderscript.S

rsSamplerGetMinification : มูลค่าการลดขนาด Sampler

rs_sampler_value rsSamplerGetMinification(rs_sampler s); เพิ่มใน API ระดับ 16

รับค่าการย่อขนาดของ Sampler

ดูที่ android.renderscript.S

rsSamplerGetWrapS : Sampler wrap S value

rs_sampler_value rsSamplerGetWrapS(rs_sampler s); เพิ่มใน API ระดับ 16

รับค่า S ของการตัดของ Sampler

ดูที่ android.renderscript.S

rsSamplerGetWrapT : Sampler wrap T value

rs_sampler_value rsSamplerGetWrapT(rs_sampler s); เพิ่มใน API ระดับ 16

รับค่า T ของการตัดของ Sampler

ดูที่ android.renderscript.S