ภาพรวม
ฟังก์ชันด้านล่างนี้ใช้เพื่อค้นหาลักษณะของออบเจ็กต์การจัดสรร องค์ประกอบ หรือเครื่องสุ่มตัวอย่างได้ ออบเจ็กต์เหล่านี้สร้างขึ้นจาก 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