Funzioni dell'oggetto RenderScript

Panoramica

Le funzioni seguenti possono essere utilizzate per eseguire query sulle caratteristiche di un oggetto Allocazione, Elemento o Sampler. Questi oggetti vengono creati da Java. Non puoi crearle da uno script.

Allocazioni:

Le allocazioni sono il metodo principale utilizzato per passare dati da e verso i kernel RenderScript.

Sono una raccolta strutturata di celle che può essere utilizzata per archiviare bitmap, texture, punti dati arbitrari e così via.

Questa raccolta di celle può avere molte dimensioni (X, Y, Z, Array0, Array1, Array2, Array3), facce (per le mappe cubiche) e livelli di dettagli (per mipmapping).

Consulta android.renderscript.Allocation per avere informazioni dettagliate sulla creazione di allocazioni.

Elementi:

Il termine "elemento" è utilizzato in modo un po' ambiguo in RenderScript, come informazioni di tipo per le celle di un'allocazione e per la creazione di un'istanza di quel tipo. Ecco alcuni esempi:

  • rs_element è un handle di una specifica di tipo e
  • In funzioni come rsGetElementAt(), "element" indica l'istanza del tipo, ovvero una cella di un'allocazione.

Le funzioni riportate di seguito consentono di eseguire query sulle caratteristiche della specifica del tipo.

Un elemento può specificare tipi di dati semplici, come quelli presenti in C, ad esempio un numero intero, un numero in virgola mobile o un valore booleano. Può anche specificare un handle per un oggetto RenderScript. Consulta rs_data_type per un elenco dei tipi di base.

Gli elementi possono specificare versioni vettoriali a dimensioni fisse (di dimensioni 2, 3 o 4) dei tipi di base. Gli elementi possono essere raggruppati in elementi complessi, creando l'equivalente delle definizioni della struttura C.

Gli elementi possono anche avere un tipo, ovvero informazioni semantiche utilizzate per interpretare i dati dei pixel. Consulta rs_data_kind.

Quando crei allocazioni di elementi comuni, puoi semplicemente utilizzare uno dei molti elementi predefiniti, ad esempio F32_2.

Per creare elementi complessi, utilizza la classe Java Element.Builder.

Sampler:

Gli oggetti Samplers definiscono il modo in cui le allocazioni possono essere lette come struttura all'interno di un kernel. Vedi android.renderscript.S.

Riepilogo

Funzioni
rsAllocationGetDimFaces Presenza di più volti
rsAllocationGetDimLOD Presenza di livelli di dettaglio
rsAllocationGetDimX Dimensione della dimensione X
rsAllocationGetDimY Dimensione della dimensione Y
rsAllocationGetDimZ Dimensione della dimensione Z
rsAllocationGetElement Ottieni l'oggetto che descrive la cella di un'allocazione
rsClearObject Rilascia un oggetto
rsElementGetBytesSize Dimensioni di un elemento
rsElementGetDataKind Tipo di elemento
rsElementGetDataType Tipo di dati di un elemento
rsElementGetSubElement Elemento secondario di un elemento complesso
rsElementGetSubElementArraySize Dimensione array di un elemento secondario di un elemento complesso
rsElementGetSubElementCount Numero di elementi secondari
rsElementGetSubElementName Nome di un elemento secondario
rsElementGetSubElementNameLength Lunghezza del nome di un elemento secondario
rsElementGetSubElementOffsetBytes Offset del sottoelemento istanziato
rsElementGetVectorSize Dimensione vettoriale dell'elemento
rsIsObject Verifica la presenza di un handle vuoto
rsSamplerGetAnisotropy Anisotropia del campionatore
rsSamplerGetMagnification Valore di ingrandimento del campionatore
rsSamplerGetMinification Valore di minimizzazione del campionamento
rsSamplerGetWrapS Valore S a capo del campionatore
rsSamplerGetWrapT Valore T a capo del campionatore
Funzioni deprecate
rsGetAllocation Obsoleta. Restituire l'allocazione di un puntatore specifico

Funzioni

rsAllocationGetDimFaces : presenza di più volti

uint32_t rsAllocationGetDimFaces(rs_allocation a);
Ritorni
Restituisce 1 se è presente più di una faccia, altrimenti 0.

Se l'allocazione è una mappa cubica, questa funzione restituisce 1 se sono presenti più facciate. In tutti gli altri casi, restituisce 0.

Utilizza rsGetDimHasFaces() per ottenere la dimensione di un kernel attualmente in esecuzione.

rsAllocationGetDimLOD : presenza di livelli di dettaglio

uint32_t rsAllocationGetDimLOD(rs_allocation a);
Ritorni
Restituisce 1 se è presente più di un LOD, altrimenti 0.

Eseguire una query su un'allocazione per verificare la presenza di più livelli di dettaglio. È utile per le mipmap.

Utilizza rsGetDimLod() per ottenere la dimensione di un kernel attualmente in esecuzione.

rsAllocationGetDimX : dimensioni della dimensione X

uint32_t rsAllocationGetDimX(rs_allocation a);
Ritorni
X dell'allocazione.

Restituisce la dimensione della dimensione X dell'allocazione.

Utilizza rsGetDimX() per ottenere la dimensione di un kernel attualmente in esecuzione.

rsAllocationGetDimY : dimensione della dimensione Y

uint32_t rsAllocationGetDimY(rs_allocation a);
Ritorni
Dimensione Y dell'allocazione.

Restituisce la dimensione della dimensione Y dell'allocazione. Se l'allocazione ha meno di due dimensioni, restituisce 0.

Utilizza rsGetDimY() per ottenere la dimensione di un kernel attualmente in esecuzione.

rsAllocationGetDimZ : dimensione della dimensione Z

uint32_t rsAllocationGetDimZ(rs_allocation a);
Ritorni
Dimensione Z dell'allocazione.

Restituisce la dimensione della dimensione Z dell'allocazione. Se l'allocazione ha meno di tre dimensioni, restituisce 0.

Utilizza rsGetDimZ() per ottenere la dimensione di un kernel attualmente in esecuzione.

rsAllocationGetElement : ottiene l'oggetto che descrive la cella di un'allocazione

rs_element rsAllocationGetElement(rs_allocation a);
Parametri
aAllocazione da cui ottenere i dati.
Ritorni
Elemento che descrive il layout di allocazione.

Ottieni l'oggetto Element che descrive il tipo, il tipo e altre caratteristiche di una cella di un'allocazione. Consulta le funzioni rsElement* riportate di seguito.

rsClearObject : rilascia un oggetto

void rsClearObject(rs_allocation* dst);
void rsClearObject(rs_element* dst);
void rsClearObject(rs_font* dst); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
void rsClearObject(rs_mesh* dst); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
void rsClearObject(rs_program_fragment* dst); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
void rsClearObject(rs_program_raster* dst); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
void rsClearObject(rs_program_store* dst); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
void rsClearObject(rs_program_vertex* dst); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
void rsClearObject(rs_sampler* dst);
void rsClearObject(rs_script* dst);
void rsClearObject(rs_type* dst);

Comunica al tempo di esecuzione che questo handle non verrà più utilizzato per accedere all'oggetto correlato. Se questo è stato l'ultimo handle per quell'oggetto, potrebbe verificarsi il ripristino delle risorse.

Dopo aver chiamato questa funzione, *dst verrà impostato su un handle vuoto. Vedi rsIsObject().

rsElementGetBytesSize : dimensioni di un elemento

uint32_t rsElementGetBytesSize(rs_element e); Aggiunto al livello API 16

Restituisce le dimensioni in byte occupate da un'istanza di questo elemento.

rsElementGetDataKind : tipo di elemento

rs_data_kind rsElementGetDataKind(rs_element e); Aggiunto al livello API 16

Restituisce il tipo di dati dell'elemento. Questo dato viene utilizzato per interpretare i dati relativi ai pixel.

Consulta rs_data_kind.

rsElementGetDataType : tipo di dati di un elemento

rs_data_type rsElementGetDataType(rs_element e); Aggiunto al livello API 16

Restituisce il tipo di dati di base dell'elemento. Può essere un tipo simile a C/C++ (ad es. RS_TYPE_UNSIGNED_8), un handle (ad es. RS_TYPE_ALLOCATION e RS_TYPE_ELEMENT) o un tipo numerico più complesso (ad es. RS_TYPE_UNSIGNED_5_6_5 e RS_TYPE_MATRIX_4X4). Vedi rs_data_type.

Se l'Elemento descrive un vettore, questa funzione restituisce il tipo di dati di uno dei suoi elementi. Utilizza rsElementGetVectorSize per ottenere la dimensione del vettore.

Se l'elemento descrive una struttura, viene restituito RS_TYPE_NONE. Utilizza le funzioni rsElementGetSub* per esplorare questo elemento complesso.

rsElementGetSubElement : elemento secondario di un elemento complesso

rs_element rsElementGetSubElement(rs_element e, indice uint32_t); Aggiunto al livello API 16
Parametri
eElemento su cui eseguire la query.
indiceIndice dell'elemento secondario da restituire.
Ritorni
Elemento secondario nell'indice specificato.

Per Elementi che rappresentano una struttura, questa funzione restituisce il sottoelemento nell'indice specificato.

Se l'elemento non è una struttura o se l'indice è maggiore o uguale al numero di elementi secondari, viene restituito un handle non valido.

rsElementGetSubElementArraySize : dimensione array di un elemento secondario di un elemento complesso

uint32_t rsElementGetSubElementArraySize(rs_element e, uint32_t index); Aggiunto al livello API 16
Parametri
eElemento su cui eseguire la query.
indiceIndice dell'elemento secondario.
Ritorni
Dimensione array dell'elemento secondario.

Nel caso di elementi complessi, gli elementi secondari possono essere array con dimensioni statiche. Questa funzione restituisce le dimensioni dell'array del sottoelemento nell'indice. La ripetizione di questo elemento secondario è diversa dai vettori a dimensione fissa.

rsElementGetSubElementCount : numero di elementi secondari

uint32_t rsElementGetSubElementCount(rs_element e); Aggiunto al livello API 16
Parametri
eElemento da cui ottenere i dati.
Ritorni
Numero di elementi secondari.

Gli elementi possono essere semplici, come un numero intero o un numero in virgola mobile, oppure una struttura con più elementi secondari. Questa funzione restituisce zero per gli elementi semplici e il numero di elementi secondari per gli elementi complessi.

rsElementGetSubElementName : nome di un elemento secondario

uint32_t rsElementGetSubElementName(rs_element e, uint32_t index, char* name, uint32_t nameLength); Aggiunto al livello API 16
Parametri
eElemento da cui ottenere i dati.
indiceIndice dell'elemento secondario.
nomeIndirizzo dell'array in cui archiviare il nome.
Lunghezza nomeLunghezza dell'array di nomi fornito.
Ritorni
Numero di caratteri copiati, escluso il carattere di terminazione null.

Per gli elementi complessi, questa funzione restituisce il nome del sottoelemento nell'indice specificato.

rsElementGetSubElementNameLength : lunghezza del nome di un elemento secondario

uint32_t rsElementGetSubElementNameLength(rs_element e, indice uint32_t); Aggiunto al livello API 16
Parametri
eElemento da cui ottenere i dati.
indiceIndice dell'elemento secondario.
Ritorni
Lunghezza del nome dell'elemento secondario incluso il carattere di terminazione null.

Per gli elementi complessi, questa funzione restituisce la lunghezza del nome dell'elemento secondario nell'indice specificato.

rsElementGetSubElementOffsetBytes : offset del sottoelemento istanziato

uint32_t rsElementGetSubElementOffsetBytes(rs_element e, indice uint32_t); Aggiunto al livello API 16
Parametri
eElemento da cui ottenere i dati.
indiceIndice dell'elemento secondario.
Ritorni
Offset in byte.

Questa funzione restituisce la posizione relativa dell'istanza del sottoelemento specificato all'interno di quella dell'elemento.

Ad esempio, se l'elemento descrive un numero in virgola mobile a 32 bit seguito da un numero intero a 32 bit, l'offset restituito per il primo sarà 0 e il secondo 4.

rsElementGetVectorSize : dimensione vettoriale dell'elemento

uint32_t rsElementGetVectorSize(rs_element e); Aggiunto al livello API 16
Parametri
eElemento da cui ottenere i dati.
Ritorni
Lunghezza del vettore dell'elemento.

Restituisce la dimensione vettoriale dell'elemento. Se l'elemento non rappresenta un vettore, viene restituito 1.

rsGetAllocation : restituisce l'allocazione per un determinato puntatore

rs_allocation rsGetAllocation(const void* p);

Obsoleta. Questa funzione è deprecata e verrà rimossa dall'SDK in una release futura.

Restituisce l'allocazione di un puntatore specifico. Il puntatore deve puntare in un'allocazione valida. I risultati non sono definiti se il puntatore non proviene da un'allocazione valida.

rsIsObject : verifica se è presente un handle vuoto

bool rsIsObject(rs_allocation v);
bool rsIsObject(rs_element v);
bool rsIsObject(rs_font v); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
bool rsIsObject(rs_mesh v); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
bool rsIsObject(rs_program_fragment v); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
bool rsIsObject(rs_program_raster v); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
bool rsIsObject(rs_program_store v); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
bool rsIsObject(rs_program_vertex v); Durante la compilazione a 32 bit. Rimossa dal livello API 23 e successivi
bool rsIsObject(rs_sampler v);
bool rsIsObject(rs_script v);
bool rsIsObject(rs_type v);

Restituisce true se l'handle contiene un riferimento diverso da null.

Questa funzione non convalida che il puntatore interno utilizzato nell'handle punti a un oggetto valido effettivo; verifica solo che sia nullo.

Questa funzione può essere utilizzata per controllare l'elemento restituito da rsElementGetSubElement() o vedere se rsClearObject() è stato richiamato su un handle.

rsSamplerGetAnisotropy : anisotropia del campionatore

float rsSamplerGetAnisotropy(rs_sampler s); Aggiunto al livello API 16

Ottieni l'anisotropia del Sampler.

Vedi android.renderscript.S.

rsSamplerGetMagnification : valore di ingrandimento del campionatore

rs_sampler_value rsSamplerGetMagnification(rs_sampler s); Aggiunto al livello API 16

Ottieni il valore di ingrandimento del Sampler.

Vedi android.renderscript.S.

rsSamplerGetMinification : valore di minimizzazione del campionatore

rs_sampler_value rsSamplerGetMinification(rs_sampler s); Aggiunto al livello API 16

Ottieni il valore di minimizzazione del Sampler.

Vedi android.renderscript.S.

rsSamplerGetWrapS : valore S a capo del campionatore

rs_sampler_value rsSamplerGetWrapS(rs_sampler s); Aggiunto al livello API 16

Ottieni il valore a capo S del Sampler.

Vedi android.renderscript.S.

rsSamplerGetWrapT : valore T a capo del campionatore

rs_sampler_value rsSamplerGetWrapT(rs_sampler s); Aggiunto al livello API 16

Recupera il valore T a capo del Sampler.

Vedi android.renderscript.S.