Funções de características de objetos do RenderScript

Visão geral

As funções abaixo podem ser usadas para consultar as características de um objeto de alocação, elemento ou Sampler. Esses objetos são criados em Java. Não é possível criá-los a partir de um script.

Alocações:

As alocações são o método principal usado para transmitir dados de e para os kernels do RenderScript.

Elas são uma coleção estruturada de células que podem ser usadas para armazenar bitmaps, texturas, pontos de dados arbitrários etc.

Esse conjunto de células pode ter muitas dimensões (X, Y, Z, Array0, Array1, Array2, Array3), rostos (para mapas cubos) e níveis de detalhes (para mipmapping).

Consulte android.renderscript.Allocation para ver detalhes sobre a criação de alocações.

Elementos:

O termo "elemento" é usado de forma ambígua no RenderScript, já que tanto informações de tipo para as células de uma alocação quanto a instanciação desse tipo. Por exemplo:

  • rs_element é um handle para uma especificação de tipo.
  • Em funções como rsGetElementAt(), "element" significa a instanciação do tipo, ou seja, uma célula de uma alocação.

As funções abaixo permitem consultar as características da especificação de tipo.

Um elemento pode especificar tipos de dados simples, como encontrados em C, por exemplo, um número inteiro, um ponto flutuante ou um booleano. Ele também pode especificar um identificador para um objeto do RenderScript. Consulte rs_data_type para uma lista de tipos básicos.

Os elementos podem especificar versões de vetor de tamanho fixo (de 2, 3 ou 4) dos tipos básicos. Os elementos podem ser agrupados em elementos complexos, criando o equivalente às definições de estrutura C.

Os elementos também podem ter um tipo, que é uma informação semântica usada para interpretar dados de pixel. Consulte rs_data_Kind.

Ao criar alocações de elementos comuns, basta usar um dos muitos elementos predefinidos, como F32_2.

Para criar elementos complexos, use a classe Java Element.Builder.

Amostras:

Os objetos de amostra definem como as alocações podem ser lidas como estrutura dentro de um kernel. Consulte android.renderscript.S.

Resumo

Funções
rsAllocationGetDimFaces Presença de mais de um rosto
rsAllocationGetDimLOD. Presença de níveis de detalhes
rsAllocationGetDimX (em inglês) Tamanho da dimensão X
rsAllocationGetDimY. Tamanho da dimensão Y
rsAllocationGetDimZ (link em inglês) Tamanho da dimensão Z
rsAllocationGetElement (link em inglês) Acessa o objeto que descreve a célula de uma alocação
rsClearObject (link em inglês) Liberar um objeto
rsElementGetBytesSize (em inglês) Tamanho de um elemento
rsElementGetDataKind (em inglês) Tipo de elemento
rsElementGetDataType (em inglês) Tipo de dados de um elemento
rsElementGetSubElement (link em inglês) Subelemento de um elemento complexo
rsElementGetSubElementArraySize (em inglês) Tamanho da matriz de um subelemento de um elemento complexo
rsElementGetSubElementCount (em inglês) Número de subelementos
rsElementGetSubElementName (link em inglês) Nome de um subelemento
rsElementGetSubElementNameLength (em inglês) Comprimento do nome de um subelemento
rsElementGetSubElementOffsetBytes (em inglês) Deslocamento do subelemento instanciado
rsElementGetVectorSize (em inglês) Tamanho do vetor do elemento
rsIsObject (link em inglês) Verificar se há um identificador vazio
rsSamplerGetAnisotropy. Anisotropia do Sampler
rsSamplerGetMagnification (em inglês) Valor de ampliação do Sampler
rsSamplerGetMinification (link em inglês) Valor de minificação do Sampler
rsSamplerGetWrapS (em inglês) Valor S de wrapper do Sampler
rsSamplerGetWrapT (link em inglês) Valor T de agrupamento do Sampler
Funções descontinuadas
rsGetAllocation. Descontinuado. Retornar a alocação de um determinado ponteiro

Funções

rsAllocationGetDimFaces : presença de mais de um rosto

uint32_t rsAllocationGetDimFaces(rs_allocation a);
Retorna
Retorna 1 se mais de um rosto estiver presente. Caso contrário, retorna 0.

Se a alocação for um cubemap, essa função vai retornar 1 quando houver mais de uma face presente. Em todos os outros casos, retorna 0.

Use rsGetDimHasFaces() para receber a dimensão de um kernel em execução no momento.

rsAllocationGetDimLOD : presença de níveis de detalhes

uint32_t rsAllocationGetDimLOD(rs_allocation a);
Retorna
Retorna 1 se mais de um LOD estiver presente. Caso contrário, retorna 0.

Consultar uma alocação para detectar a presença de mais de um nível de detalhes. Isso é útil para mipmaps.

Use rsGetDimLod() para receber a dimensão de um kernel em execução no momento.

rsAllocationGetDimX : tamanho da dimensão X

uint32_t rsAllocationGetDimX(rs_allocation a);
Retorna
X da alocação.

Retorna o tamanho da dimensão X da alocação.

Use rsGetDimX() para receber a dimensão de um kernel em execução no momento.

rsAllocationGetDimY : tamanho da dimensão Y

uint32_t rsAllocationGetDimY(rs_allocation a);
Retorna
Dimensão Y da alocação.

Retorna o tamanho da dimensão Y da alocação. Se a alocação tiver menos de duas dimensões, retorna 0.

Use rsGetDimY() para receber a dimensão de um kernel em execução no momento.

rsAllocationGetDimZ : tamanho da dimensão Z

uint32_t rsAllocationGetDimZ(rs_allocation a);
Retorna
Dimensão Z da alocação.

Retorna o tamanho da dimensão Z da alocação. Se a alocação tiver menos de três dimensões, retorna 0.

Use rsGetDimZ() para receber a dimensão de um kernel em execução no momento.

rsAllocationGetElement : recebe o objeto que descreve a célula de uma alocação

rs_element rsAllocationGetElement(rs_allocation a);
Parâmetros
aAlocação da qual receber dados.
Retorna
Elemento que descreve o layout de alocação.

Acessa o objeto Element que descreve o tipo, o tipo e outras características de uma célula de uma alocação. Consulte as funções rsElement* abaixo.

rsClearObject : liberar um objeto

void rsClearObject(rs_allocation* dst);
void rsClearObject(rs_element* dst);
void rsClearObject(rs_font* dst); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
void rsClearObject(rs_mesh* dst); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
void rsClearObject(rs_program_fragment* dst); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
void rsClearObject(rs_program_raster* dst); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
void rsClearObject(rs_program_store* dst); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
void rsClearObject(rs_program_vertex* dst); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
void rsClearObject(rs_sampler* dst);
void rsClearObject(rs_script* dst);
void rsClearObject(rs_type* dst);

Informa ao ambiente de execução que esse identificador não será mais usado para acessar o objeto relacionado. Se este foi o último identificador para esse objeto, a recuperação do recurso pode acontecer.

Após chamar esta função, *dst será definido como um identificador vazio. Consulte rsIsObject().

rsElementGetBytesSize : tamanho de um elemento

uint32_t rsElementGetBytesSize(rs_element e); Adicionado no nível 16 da API.

Retorna o tamanho em bytes que uma instanciação desse elemento ocupará.

rsElementGetDataKind : tipo de elemento

rs_data_Kind rsElementGetDataKind(rs_element e); Adicionado no nível 16 da API.

Retorna o tipo de dados do elemento. É usado para interpretar dados de pixels.

Consulte rs_data_Kind.

rsElementGetDataType : tipo de dados de um elemento

rs_data_type rsElementGetDataType(rs_element e); Adicionado no nível 16 da API.

Retorna o tipo de dados base do elemento. Pode ser um tipo semelhante a C/C++ (por exemplo, RS_TYPE_UNSIGNED_8), um identificador (por exemplo, RS_TYPE_ALLOCATION e RS_TYPE_ELEMENT) ou um tipo numérico mais complexo (por exemplo, RS_TYPE_UNSIGNED_5_6_5 e RS_TYPE_MATRIX_4X4). Consulte rs_data_type.

Se o elemento descreve um vetor, essa função retorna o tipo de dado de um de seus itens. Use rsElementGetVectorSize para ver o tamanho do vetor.

Se o elemento descrever uma estrutura, RS_TYPE_NONE será retornado. Use as funções rsElementGetSub* para explorar esse elemento complexo.

rsElementGetSubElement : subelemento de um elemento complexo

rs_element rsElementGetSubElement(rs_element e, índice uint32_t); Adicionado no nível 16 da API.
Parâmetros
eElemento a ser consultado.
indexÍndice do subelemento a ser retornado.
Retorna
Subelemento no índice especificado.

Para elementos que representam uma estrutura, essa função retorna o subelemento no índice especificado.

Se o elemento não for uma estrutura ou o índice for maior ou igual ao número de subelementos, um identificador inválido será retornado.

rsElementGetSubElementArraySize : tamanho da matriz de um subelemento de um elemento complexo

uint32_t rsElementGetSubElementArraySize(rs_element e, índice uint32_t); Adicionado no nível 16 da API.
Parâmetros
eElemento a ser consultado.
indexÍndice do subelemento.
Retorna
Tamanho da matriz do subelemento.

Para elementos complexos, os subelementos podem ser matrizes de tamanho estático. Essa função retorna o tamanho da matriz do subelemento no índice. Essa repetição de subelemento é diferente dos vetores de tamanho fixo.

rsElementGetSubElementCount : número de subelementos

uint32_t rsElementGetSubElementCount(rs_element e); Adicionado no nível 16 da API.
Parâmetros
eElemento do qual os dados serão obtidos.
Retorna
Número de subelementos.

Os elementos podem ser simples, como um int ou um ponto flutuante, ou uma estrutura com vários subelementos. Ela retorna zero para elementos simples e o número de subelementos para elementos complexos.

rsElementGetSubElementName : nome de um subelemento

uint32_t rsElementGetSubElementName(rs_element e, índice uint32_t, nome do char*, uint32_t nameLength); Adicionado no nível 16 da API.
Parâmetros
eElemento do qual os dados serão obtidos.
indexÍndice do subelemento.
nameEndereço da matriz em que o nome vai ser armazenado.
NomeComprimentoTamanho da matriz de nomes fornecida.
Retorna
Número de caracteres copiados, exceto o terminador nulo.

Para elementos complexos, essa função retorna o nome do subelemento no índice especificado.

rsElementGetSubElementNameLength : comprimento do nome de um subelemento

uint32_t rsElementGetSubElementNameLength(rs_element e, uint32_t index); Adicionado no nível 16 da API.
Parâmetros
eElemento do qual os dados serão obtidos.
indexÍndice do subelemento.
Retorna
Comprimento do nome do subelemento, incluindo o terminador nulo.

Para elementos complexos, essa função retorna o comprimento do nome do subelemento no índice especificado.

rsElementGetSubElementOffsetBytes : deslocamento do subelemento instanciado

uint32_t rsElementGetSubElementOffsetBytes(rs_element e, índice uint32_t); Adicionado no nível 16 da API.
Parâmetros
eElemento do qual os dados serão obtidos.
indexÍndice do subelemento.
Retorna
Deslocamento em bytes.

Essa função retorna a posição relativa da instanciação do subelemento especificado na instanciação do elemento.

Por exemplo, se o elemento descrever um ponto flutuante de 32 bits seguido por um número inteiro de 32 bits, o retorno de deslocamento do primeiro será 0 e do segundo, 4.

rsElementGetVectorSize : tamanho de vetor do elemento

uint32_t rsElementGetVectorSize(rs_element e); Adicionado no nível 16 da API.
Parâmetros
eElemento do qual os dados serão obtidos.
Retorna
Comprimento do vetor do elemento.

Retorna o tamanho do vetor do elemento. Se o elemento não representar um vetor, será retornado 1.

rsGetAllocation : retorna a alocação de um determinado ponteiro

rs_allocation rsGetAllocation(const void* p);

Obsoleto. Esta função foi descontinuada e vai ser removida do SDK em uma versão futura.

Retorna a alocação de um determinado ponteiro. O ponteiro precisa apontar dentro de uma alocação válida. Os resultados são indefinidos se o ponteiro não é de uma alocação válida.

rsIsObject : verificar se há um identificador vazio

bool rsIsObject(rs_allocation v);
bool rsIsObject(rs_element v);
bool rsIsObject(rs_font v); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
bool rsIsObject(rs_mesh v); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
bool rsIsObject(rs_program_fragment v); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
bool rsIsObject(rs_program_raster v); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
bool rsIsObject(rs_program_store v); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
bool rsIsObject(rs_program_vertex v); Ao compilar para 32 bits. Removido da API de nível 23 e mais recentes.
bool rsIsObject(rs_sampler v);
bool rsIsObject(rs_script v);
bool rsIsObject(rs_type v);

Retorna verdadeiro se o identificador contiver uma referência não nula.

Essa função não valida se o ponteiro interno usado no identificador aponta para um objeto válido real. Ela apenas verifica se há valores nulos.

Essa função pode ser usada para verificar o elemento retornado por rsElementGetSubElement() ou ver se rsClearObject() foi chamado em um identificador.

rsSamplerGetAnisotropy : anisotropia do Sampler

float rsSamplerGetAnisotropy(rs_sampler s); Adicionado no nível 16 da API.

Veja a anisotropia do Sampler.

Consulte android.renderscript.S.

rsSamplerGetMagnification : valor de ampliação do Sampler

rs_sampler_value rsSamplerGetMagnification(rs_sampler s); Adicionado no nível 16 da API.

Extrai o valor de ampliação do Sampler.

Consulte android.renderscript.S.

rsSamplerGetMinification : valor de minificação do Sampler

rs_sampler_value rsSamplerGetMinification(rs_sampler s); Adicionado no nível 16 da API.

Extrai o valor de minificação do Sampler.

Consulte android.renderscript.S.

rsSamplerGetWrapS : valor S do agrupamento de amostra

rs_sampler_value rsSamplerGetWrapS(rs_sampler s); Adicionado no nível 16 da API.

Extrai o valor de wrap do S do Sampler.

Consulte android.renderscript.S.

rsSamplerGetWrapT : valor de T wrap do Sampler

rs_sampler_value rsSamplerGetWrapT(rs_sampler s); Adicionado no nível 16 da API.

Extrai o valor de wrap do sampler.

Consulte android.renderscript.S.