Funciones de características del objeto de RenderScript

Descripción general

Las siguientes funciones se pueden usar para consultar las características de un objeto de asignación, elemento o muestrar. Estos objetos se crean a partir de Java. No puedes crearlas a partir de una secuencia de comandos.

Asignaciones:

Las asignaciones son el método principal que se usa para pasar datos hacia y desde kernels de RenderScript.

Son una colección estructurada de celdas que se puede usar para almacenar mapas de bits, texturas, datos arbitrarios, etcétera.

Esta colección de celdas puede tener muchas dimensiones (X, Y, Z, Array0, Array1, Array2, Array3), caras (para cubemaps) y niveles de detalles (para mipmapping).

Consulta android.renderscript.Allocation para obtener información detallada sobre cómo crear asignaciones.

Elementos:

El término "elemento" se usa de manera un poco ambigua en RenderScript, ya que tanto la información de tipo para las celdas de una asignación como la creación de instancias de ese tipo. Por ejemplo:

  • rs_element es un controlador para una especificación de tipo.
  • En funciones como rsGetElementAt(), "element" se refiere a la creación de instancias del tipo, es decir, la celda de una asignación.

Las siguientes funciones te permiten consultar las características de la especificación del tipo.

Un elemento puede especificar tipos de datos simples, como se encuentran en C, p.ej., un número entero, un número de punto flotante o un valor booleano. También puede especificar un controlador para un objeto RenderScript. Consulta rs_data_type para ver una lista de los tipos básicos.

Los elementos pueden especificar versiones de vectores de tamaño fijo (de tamaño 2, 3 o 4) de los tipos básicos. Los elementos se pueden agrupar en elementos complejos, lo que crea el equivalente de las definiciones de estructura de C.

Los elementos también pueden tener un tipo, que es la información semántica que se usa para interpretar los datos de los píxeles. Consulta rs_data_kind.

Cuando creas asignaciones de elementos comunes, simplemente puedes usar uno de los numerosos elementos predefinidos, como F32_2.

Para crear elementos complejos, usa la clase de Java Element.Builder.

Samples:

Los objetos de muestra definen cómo se pueden leer las asignaciones como estructuras dentro de un kernel. Consulta android.renderscript.S.

Resumen

Funciones
rsAllocationGetDimFaces Presencia de más de un rostro
rsAllocationGetDimLOD Presencia de niveles de detalle
rsAllocationGetDimX Tamaño de la dimensión X
rsAllocationGetDimY Tamaño de la dimensión Y
rsAllocationGetDimZ Tamaño de la dimensión Z
rsAllocationGetElement Obtén el objeto que describe la celda de una asignación
rsClearObject; Libera un objeto
rsElementGetBytesSize. Tamaño de un elemento
rsElementGetDataKind Tipo de elemento
rsElementGetDataType Tipo de datos de un elemento
rsElementGetSubElement. Subelemento de un elemento complejo
rsElementGetSubElementArraySize Tamaño de matriz de un subelemento de un elemento complejo
rsElementGetSubElementCount Cantidad de subelementos
rsElementGetSubElementName Nombre de un subelemento
rsElementGetSubElementNameLength Longitud del nombre de un subelemento
rsElementGetSubElementOffsetBytes Compensación del subelemento con instancia
rsElementGetVectorSize. Tamaño del vector del elemento
rsIsObject Comprueba si hay un identificador vacío
rsSamplerObtenerAnisotropía Anisotropía del sampler
rsSamplerGetMagnification Valor de ampliación de la muestra
rsSamplerGetMinification Valor de reducción de la muestra
rsSamplerGetWrapS Valor S de ajuste de muestra
rsSamplerGetWrapT Valor T de ajuste de muestra
Funciones obsoletas
rsGetAllocation Obsoleto. Cómo mostrar la asignación para un puntero determinado

Funciones

rsAllocationGetDimFaces : Presencia de más de un rostro

uint32_t rsAllocationGetDimFaces(rs_allocation a);
Devuelve
Muestra 1 si hay más de un rostro presente, de lo contrario, muestra 0.

Si la asignación es un cubemap, esta función muestra 1 si hay más de un rostro presente. En todos los demás casos, muestra 0.

Usa rsGetDimHasFaces para obtener la dimensión de un kernel que se esté ejecutando.

rsAllocationGetDimLOD : Presencia de niveles de detalle

uint32_t rsAllocationGetDimLOD(rs_allocation a);
Devuelve
Muestra 1 si hay más de un nivel de detalle, de lo contrario, muestra 0.

Consulta una asignación para ver la presencia de más de un nivel de detalle. Esto es útil para mipmaps.

Usa rsGetDimLod() para obtener la dimensión de un kernel que se esté ejecutando.

rsAllocationGetDimX : Es el tamaño de la dimensión X.

uint32_t rsAllocationGetDimX(rs_allocation a);
Devuelve
X de la asignación.

Muestra el tamaño de la dimensión X de la asignación.

Usa rsGetDimX() para obtener la dimensión de un kernel que se esté ejecutando.

rsAllocationGetDimY : Tamaño de la dimensión Y

uint32_t rsAllocationGetDimY(rs_allocation a);
Devuelve
Dimensión Y de la asignación.

Muestra el tamaño de la dimensión Y de la asignación. Si la asignación tiene menos de dos dimensiones, muestra 0.

Usa rsGetDimY() para obtener la dimensión de un kernel que se esté ejecutando.

rsAllocationGetDimZ : Tamaño de la dimensión Z

uint32_t rsAllocationGetDimZ(rs_allocation a);
Devuelve
Dimensión Z de la asignación.

Muestra el tamaño de la dimensión Z de la asignación. Si la asignación tiene menos de tres dimensiones, muestra 0.

Usa rsGetDimZ() para obtener la dimensión de un kernel que se esté ejecutando.

rsAllocationGetElement : Obtén el objeto que describe la celda de una asignación.

rs_element rsAllocationGetElement(rs_allocation a);
Parámetros
pañalAsignación de la que se obtienen datos.
Devuelve
Elemento que describe el diseño de asignación.

Obtén el objeto de elemento que describe el tipo, la categoría y otras características de una celda de una asignación. Consulta las funciones rsElement* a continuación.

rsClearObject : Libera un objeto

void rsClearObject(rs_allocation* dst);
void rsClearObject(rs_element* dst);
void rsClearObject(rs_font* dst); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
void rsClearObject(rs_mesh* dst); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
void rsClearObject(rs_program_fragment* dst); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
void rsClearObject(rs_program_raster* dst); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
void rsClearObject(rs_program_store* dst); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
void rsClearObject(rs_program_vertex* dst); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
void rsClearObject(rs_sampler* dst);
void rsClearObject(rs_script* dst);
void rsClearObject(rs_type* dst);

Indica el tiempo de ejecución que este controlador ya no se usará para acceder al objeto relacionado. Si este fue el último controlador de ese objeto, es posible que se recupere el recurso.

Después de llamar a esta función, *dst se establecerá como un controlador vacío. Consulta rsIsObject().

rsElementGetBytesSize : tamaño de un elemento

uint32_t rsElementGetBytesSize(rs_element e); Se agregó en el nivel de API 16.

Muestra el tamaño en bytes que ocupará una instancia de este elemento.

rsElementGetDataKind : Tipo de elemento

rs_data_kind rsElementGetDataKind(rs_element e); Se agregó en el nivel de API 16.

Muestra el tipo de datos del elemento. Se usa para interpretar datos de píxeles.

Consulta rs_data_kind.

rsElementGetDataType : Tipo de datos de un elemento

rs_data_type rsElementGetDataType(rs_element e); Se agregó en el nivel de API 16.

Muestra el tipo de datos base del elemento. Puede ser un tipo similar a C/C++ (p.ej., RS_TYPE_UNSIGNED_8), un controlador (p.ej., RS_TYPE_ALLOCATION y RS_TYPE_ELEMENT), o un tipo numérico más complejo (p.ej., RS_TYPE_UNSIGNED_5_6_5 y RS_TYPE_MATRIX_4X4). Consulta rs_data_type.

Si el elemento describe un vector, esta función muestra el tipo de datos de uno de sus elementos. Usa rsElementGetVectorSize para obtener el tamaño del vector.

Si el elemento describe una estructura, se muestra RS_TYPE_NONE. Usa las funciones rsElementGetSub* para explorar este elemento complejo.

rsElementGetSubElement : Subelemento de un elemento complejo

rs_element rsElementGetSubElement(rs_element e, uint32_t índice); Se agregó en el nivel de API 16.
Parámetros
cElemento a consultar.
índiceÍndice del subelemento que se mostrará.
Devuelve
Subelemento en el índice dado.

En el caso de los elementos que representan una estructura, esta función muestra el subelemento en el índice especificado.

Si el elemento no es una estructura o si el índice es mayor o igual que la cantidad de subelementos, se muestra un controlador no válido.

rsElementGetSubElementArraySize : Tamaño del array de un subelemento de un elemento complejo

uint32_t rsElementGetSubElementArraySize(rs_element e, índice uint32_t); Se agregó en el nivel de API 16.
Parámetros
cElemento a consultar.
índiceÍndice del subelemento.
Devuelve
Tamaño de matriz del subelemento.

En el caso de los elementos complejos, los subelementos pueden ser arrays de tamaño estático. Esta función muestra el tamaño del array del subelemento en el índice. Esta repetición de subelementos es diferente de los vectores de tamaño fijo.

rsElementGetSubElementCount : Cantidad de subelementos

uint32_t rsElementGetSubElementCount(rs_element e); Se agregó en el nivel de API 16.
Parámetros
cElemento del que se obtienen los datos.
Devuelve
Cantidad de subelementos

Los elementos pueden ser simples, como un número entero o un número de punto flotante, o una estructura con varios subelementos. Esta función muestra cero para los elementos simples y la cantidad de subelementos para los elementos complejos.

rsElementGetSubElementName : Nombre de un subelemento

uint32_t rsElementGetSubElementName(rs_element e, índice uint32_t, nombre de char*, uint32_t nameLength); Se agregó en el nivel de API 16.
Parámetros
cElemento del que se obtienen los datos.
índiceÍndice del subelemento.
nombreDirección del array en el que se almacenará el nombre.
NombreLongitudEs la longitud del array de nombres proporcionado.
Devuelve
Cantidad de caracteres copiados, sin incluir el terminador nulo.

En el caso de los elementos complejos, esta función muestra el nombre del subelemento en el índice especificado.

rsElementGetSubElementNameLength : Longitud del nombre de un subelemento

uint32_t rsElementGetSubElementNameLength(rs_element e, índice uint32_t); Se agregó en el nivel de API 16.
Parámetros
cElemento del que se obtienen los datos.
índiceÍndice del subelemento.
Devuelve
Longitud del nombre del subelemento, incluido el terminador nulo.

En el caso de los elementos complejos, esta función muestra la longitud del nombre del subelemento en el índice especificado.

rsElementGetSubElementOffsetBytes : Compensación del subelemento con instancia

uint32_t rsElementGetSubElementOffsetBytes(rs_element e, índice uint32_t); Se agregó en el nivel de API 16.
Parámetros
cElemento del que se obtienen los datos.
índiceÍndice del subelemento.
Devuelve
Compensación en bytes.

Esta función muestra la posición relativa de la creación de instancias del subelemento especificado dentro de la creación de instancias del elemento.

Por ejemplo, si el elemento describe un número de punto flotante de 32 bits seguido de un número entero de 32 bits, el retorno de desplazamiento del primero será 0 y el segundo, 4.

rsElementGetVectorSize : Tamaño del vector del elemento

uint32_t rsElementGetVectorSize(rs_element e); Se agregó en el nivel de API 16.
Parámetros
cElemento del que se obtienen los datos.
Devuelve
Longitud del vector de elementos.

Muestra el tamaño del vector del elemento. Si el elemento no representa un vector, se muestra 1.

rsGetAllocation : Muestra la asignación de un puntero determinado

rs_allocation rsGetAllocation(const void* p);

Obsoleto. Esta función está obsoleta y se quitará del SDK en una versión futura.

Muestra la asignación para un puntero determinado. El puntero debe apuntar dentro de una asignación válida. Los resultados no están definidos si el puntero no es de una asignación válida.

rsIsObject : Busca un controlador vacío

bool rsIsObject(rs_allocation v);
bool rsIsObject(rs_element v);
bool rsIsObject(rs_font v); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
bool rsIsObject(rs_mesh v); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
bool rsIsObject(rs_program_fragment v); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
bool rsIsObject(rs_program_raster v); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
bool rsIsObject(rs_program_store v); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
bool rsIsObject(rs_program_vertex v); Cuando compilas para 32 bits. Se quitó del nivel de API 23 y versiones posteriores.
bool rsIsObject(rs_sampler v);
bool rsIsObject(rs_script v);
bool rsIsObject(rs_type v);

El resultado es verdadero si el controlador contiene una referencia no nula.

Esta función no valida que el puntero interno que se usa en el controlador apunte a un objeto válido real; solo verifica el valor nulo.

Esta función se puede usar para verificar el elemento que muestra rsElementGetSubElement() o ver si se llamó a rsClearObject() en un controlador.

rsSamplerGetAnisotropy : anisotropía del sampler

float rsSamplerGetAnisotropy(rs_sampler s); Se agregó en el nivel de API 16.

Obtén la anisotropía del sampler.

Consulta android.renderscript.S.

rsSamplerGetMagnification : valor de ampliación de la muestra

rs_sampler_value rsSamplerGetMagnification(rs_sampler s); Se agregó en el nivel de API 16.

Obtiene el valor de ampliación del Sampler.

Consulta android.renderscript.S.

rsSamplerGetMinification : Valor de reducción de la muestra

rs_sampler_value rsSamplerGetMinification(rs_sampler s); Se agregó en el nivel de API 16.

Obtén el valor de reducción del Sampler.

Consulta android.renderscript.S.

rsSamplerGetWrapS : Valor S de unión de muestra

rs_sampler_value rsSamplerGetWrapS(rs_sampler s); Se agregó en el nivel de API 16.

Obtén el valor S de ajuste de la muestra.

Consulta android.renderscript.S.

rsSamplerGetWrapT : Valor T de unión de la muestra

rs_sampler_value rsSamplerGetWrapT(rs_sampler s); Se agregó en el nivel de API 16.

Obtén el valor T de ajuste de la muestra.

Consulta android.renderscript.S.