Справочник по API среды выполнения RenderScript

Обзор

RenderScript — это высокопроизводительная среда выполнения, обеспечивающая вычислительные операции на собственном уровне. Код RenderScript компилируется на устройствах во время выполнения, что также обеспечивает независимость от платформы.

В этой справочной документации описаны API-интерфейсы среды выполнения RenderScript, которые можно использовать для написания кода RenderScript на C99. Файлы заголовков вычислений RenderScript добавляются автоматически.

Чтобы использовать RenderScript, вам необходимо использовать API-интерфейсы среды выполнения RenderScript, описанные здесь, а также API-интерфейсы платформы Android для RenderScript. Документацию по API платформы Android см. в справочнике по пакету android.renderscript .

Дополнительные сведения о том, как разрабатывать с помощью RenderScript и как взаимодействуют API-интерфейсы среды выполнения и платформы Android, см. в руководстве разработчика RenderScript и примерах RenderScript .

Числовые типы

Скаляры:

RenderScript поддерживает следующие скалярные числовые типы:

8 бит 16 бит 32 бита 64 бита
Целое число: символ, int8_t короче, int16_t int32_t длинный, длинный, int64_t
Беззнаковое целое число: Учар, uint8_t короче, uint16_t uint, uint32_t улонг, uint64_t
Плавающая точка: половина плавать двойной

Векторы:

RenderScript поддерживает векторы фиксированного размера длиной 2, 3 и 4. Векторы объявляются с использованием общего имени типа, за которым следует 2, 3 или 4. Например, float4 , int3 , double2 , ulong4 .

Чтобы создать векторные литералы, используйте векторный тип, за которым следуют значения, заключенные в фигурные скобки, например (float3){1.0f, 2.0f, 3.0f} .

Доступ к записям вектора можно получить, используя разные стили именования.

Доступ к отдельным записям можно получить, поставив после имени переменной точку и:

  • Буквы x, y, z и w,
  • Буквы р, г, б и а,
  • Буква s или S, за которой следует индекс, начинающийся с нуля.

Например, с int4 myVar; следующие эквивалентны:
myVar.x == myVar.r == myVar.s0 == myVar.S0
myVar.y == myVar.g == myVar.s1 == myVar.S1
myVar.z == myVar.b == myVar.s2 == myVar.S2
myVar.w == myVar.a == myVar.s3 == myVar.S3

Доступ к нескольким записям вектора можно получить одновременно, используя идентификатор, который представляет собой объединение нескольких букв или индексов. Результирующий вектор имеет размер, равный количеству названных записей.

В приведенном выше примере доступ к двум средним записям можно получить с помощью myVar.yz , myVar.gb , myVar.s12 и myVar.S12 .

Записи не обязательно должны быть последовательными или в возрастающем порядке. Записи могут даже повторяться, если мы не пытаемся их присвоить. Вы также не можете смешивать стили именования.

Вот примеры того, что можно или нельзя делать:
float4 v4;
float3 v3;
float2 v2;
v2 = v4.xx; // Valid
v3 = v4.zxw; // Valid
v3 = v4.bba; // Valid
v3 = v4.s032; // Valid
v3.s120 = v4.S233; // Valid
v4.yz = v3.rg; // Valid
v4.yzx = v3.rg; // Invalid: mismatched sizes
v4.yzz = v3; // Invalid: z appears twice in an assignment
v3 = v3.xas0; // Invalid: can't mix xyzw with rgba nor s0...
v3 = v4.s034; // Invalid: the digit can only be 0, 1, 2, or 3

Матрицы и кватернионы:

RenderScript поддерживает квадратные матрицы фиксированного размера с плавающей запятой размером 2x2, 3x3 и 4x4. Типы называются rs_matrix2x2 , rs_matrix3x3 и rs_matrix4x4 . Список операций см. в разделе «Матричные функции» .

Кватернионы также поддерживаются через rs_quaternion . Список операций см. в разделе «Функции кватерионов» .

Типы
char2 Два 8-битных целых числа со знаком
char3 Три 8-битных целых числа со знаком
char4 Четыре 8-битных целых числа со знаком
двойной2 Два 64-битных числа с плавающей точкой
двойной3 Три 64-битных числа с плавающей точкой
двойной4 Четыре 64-битных числа с плавающей запятой
поплавок2 Два 32-битных числа с плавающей точкой
поплавок3 Три 32-битных числа с плавающей запятой
поплавок4 Четыре 32-битных числа с плавающей запятой
половина 16-битное значение с плавающей запятой
половина2 Два 16-битных числа с плавающей запятой
половина3 Три 16-битных числа с плавающей точкой
половина4 Четыре 16-битных числа с плавающей точкой
int16_t 16-битное целое число со знаком
int2 Два 32-битных целых числа со знаком
int3 Три 32-битных целых числа со знаком
int32_t 32-битное целое число со знаком
int4 Четыре 32-битных целых числа со знаком
int64_t 64-битное целое число со знаком
int8_t 8-битное целое число со знаком
длинный2 Два 64-битных целых числа со знаком
длинный3 Три 64-битных целых числа со знаком
длинный4 Четыре 64-битных целых числа со знаком
rs_matrix2x2 Матрица 2x2 из 32-битных чисел с плавающей запятой
rs_matrix3x3 Матрица 3x3 из 32-битных чисел с плавающей запятой
rs_matrix4x4 Матрица 4x4 из 32-битных чисел с плавающей запятой
rs_quaternion Кватернион
короткий2 Два 16-битных целых числа со знаком
короткий3 Три 16-битных целых числа со знаком
короткий4 Четыре 16-битных целых числа со знаком
size_t Беззнаковый тип размера
ssize_t Тип размера со знаком
Учар 8-битное целое число без знака
uchar2 Два 8-битных целых числа без знака
uchar3 Три 8-битных целых числа без знака
uchar4 Четыре 8-битных целых числа без знака
uint 32-битное целое число без знака
uint16_t 16-битное целое число без знака
uint2 Два 32-битных целых числа без знака
uint3 Три 32-битных целых числа без знака
uint32_t 32-битное целое число без знака
uint4 Четыре 32-битных целых числа без знака
uint64_t 64-битное целое число без знака
uint8_t 8-битное целое число без знака
улонг 64-битное целое число без знака
улонг2 Два 64-битных целых числа без знака
улонг3 Три 64-битных целых числа без знака
улонг4 Четыре 64-битных целых числа без знака
сокращать 16-битное целое число без знака
ushort2 Два 16-битных целых числа без знака
ushort3 Три 16-битных целых числа без знака
ushort4 Четыре 16-битных целых числа без знака

Типы объектов

Приведенные ниже типы используются для управления объектами RenderScript, такими как выделения, семплеры, элементы и сценарии. Большинство этих объектов создаются с использованием API Java RenderScript.

Типы
rs_allocation Дескриптор выделения
rs_allocation_cubemap_face Перечисление для выбора граней карты куба
rs_allocation_usage_type Битовое поле, указывающее, как используется распределение.
rs_data_kind Тип данных элемента
rs_data_type Базовый тип данных элемента
rs_element Дескриптор элемента
rs_sampler Дескриптор сэмплера
rs_sampler_value Значение T обертки пробоотборника
rs_script Дескриптор сценария
rs_type Дескриптор типа
rs_yuv_format YUV-формат

Функции преобразования

Приведенные ниже функции преобразуют числовой векторный тип в другой или из одного цветового представления в другое.

Функции
конвертировать Преобразование числовых векторов
rsPackColorTo8888 Создайте uchar4 RGBA из чисел с плавающей точкой
rsUnpackColor8888 Создайте float4 RGBA из uchar4
рсЮвТоРГБА Преобразование значения YUV в RGBA

Математические константы и функции

Приведенные ниже математические функции можно применять к скалярам и векторам. При применении к векторам возвращаемое значение представляет собой вектор функции, применяемой к каждой записи входных данных.

Например:
float3 a, b;
// The following call sets
// ax to sin(bx),
// ay to sin(by), and
// az to sin(bz).
a = sin(b);

См. раздел «Векторные математические функции» , где описаны такие функции, как расстояние () и длина (), которые вместо этого интерпретируют входные данные как один вектор в n-мерном пространстве.

На точность математических операций с 32-битными числами с плавающей запятой влияют прагмы rs_fp_relaxed и rs_fp_full. При использовании rs_fp_relaxed значения ниже нормы могут быть сброшены до нуля и округление может быть выполнено в сторону нуля. Для сравнения, rs_fp_full требует корректной обработки значений ниже нормы, т.е. меньше 1,17549435e-38f. rs_fp_rull также требует округления до ближайшего значения с привязкой к чету.

Различные компромиссы между точностью и скоростью могут быть достигнуты за счет использования вариантов общих математических функций. Функции, имя которых начинается с

  • Native_: Может иметь пользовательскую аппаратную реализацию с более низкой точностью. Кроме того, значения ниже нормы могут быть сброшены до нуля, может использоваться округление в сторону нуля, а входные значения NaN и бесконечности могут обрабатываться неправильно.
  • half_: может выполнять внутренние вычисления с использованием 16-битных чисел с плавающей запятой. Кроме того, значения ниже нормы могут быть сброшены до нуля и может использоваться округление в сторону нуля.

Константы
M_1_PI 1/пи, как 32-битное число с плавающей запятой
M_2_PI 2/pi, как 32-битное число с плавающей запятой
M_2_SQRTPI 2 / sqrt(pi), как 32-битное число с плавающей запятой
МНЕ е, как 32-битное число с плавающей запятой
M_LN10 log_e(10), как 32-битное число с плавающей запятой
M_LN2 log_e(2), как 32-битное число с плавающей запятой
M_LOG10E log_10(e), как 32-битное число с плавающей запятой
M_LOG2E log_2(e) как 32-битное число с плавающей запятой
М_ПИ пи, как 32-битное число с плавающей запятой
M_PI_2 pi/2, как 32-битное число с плавающей запятой
M_PI_4 pi/4, как 32-битное число с плавающей запятой
M_SQRT1_2 1 / sqrt(2), как 32-битное число с плавающей запятой
M_SQRT2 sqrt(2), как 32-битное число с плавающей запятой
Функции
пресс Абсолютное значение целого числа
акос Обратный косинус
акош Обратный гиперболический косинус
акоспи Обратный косинус, разделенный на число пи
асин Обратный синус
асинх Обратный гиперболический синус
асинпи Обратный синус, разделенный на число пи
атан Обратный тангенс
Атан2 Обратный тангенс отношения
atan2pi Обратный тангенс отношения, разделенный на число пи
Атанх Обратный гиперболический тангенс
атанпи Обратный тангенс, разделенный на число пи
CBRT Корень куба
клетка Наименьшее целое число, не меньшее значения
зажим Ограничить значение диапазоном
клз Количество ведущих нулевых битов
копиподпись Копирует знак числа в другой
потому что Косинус
шиш Гипеболический косинус
коспи Косинус числа, умноженного на пи
степени Преобразует радианы в градусы
Эрф Математическая функция ошибки
erfc Математическая дополнительная функция ошибок
опыт e возведено в число
экс10 10 возведено в число
эксп2 2 возведено в число
выражение1 e возведено в число минус один
фабрики Абсолютное значение числа с плавающей запятой
fdim Положительная разница между двумя значениями
пол Наименьшее целое число, не превышающее значения
ФМА Умножить и добавить
fмакс Максимум два поплавка
fmin Минимум два поплавка
фмод по модулю
фракция Положительная дробная часть
frexp Двоичная мантисса и показатель степени
Half_recip Обратные вычисления с точностью до 16 бит.
полу_rsqrt Обратное значение квадратного корня, вычисленное с точностью до 16 бит.
half_sqrt Квадратный корень вычисляется с точностью до 16 бит.
гипотеза Гипотенуза
ilogb Основание две экспоненты
ldexp Создает плавающую точку из мантиссы и экспоненты
lгамма Натуральный логарифм гамма-функции
бревно Натуральный логарифм
журнал10 Логарифм по основанию 10
log1p Натуральный логарифм значения плюс 1
журнал2 Логарифм по основанию 2
журнал Основание две экспоненты
безумный Умножить и добавить
Макс Максимум
мин Минимум
смешивание Смешивает два значения
модф Целые и дробные составляющие
Нэн Не число
nan_half Не число
Native_acos Приблизительный обратный косинус
родной_акош Приблизительный обратный гиперболический косинус
Native_acospi Приблизительный обратный косинус, разделенный на пи
родной_асин Приблизительный обратный синус
родной_асинь Приблизительный обратный гиперболический синус
родной_asinpi Приблизительный обратный синус, разделенный на число пи
родной_атан Приблизительный обратный тангенс
Native_atan2 Приблизительный обратный тангенс отношения
Native_atan2pi Приблизительный обратный тангенс отношения, разделенный на число пи
родной_атан Приблизительный обратный гиперболический тангенс
родной_атанпи Приблизительный обратный тангенс, разделенный на число пи
Native_cbrt Приблизительный кубический корень
родной_cos Приблизительный косинус
Native_cosh Приблизительный гиперболический косинус
Native_cospi Приблизительный косинус числа, умноженного на пи
Native_divide Примерное деление
Native_exp Приблизительное e возведено в число
Native_exp10 Примерно 10 возведено в число
родной_exp2 Примерно 2 возведено в число
Native_expm1 Приблизительное значение e, возведенное в число минус один
Native_hypot Примерная гипотенуза
родной_лог Приблизительный натуральный логарифм
Native_log10 Приблизительный десятичный логарифм
Native_log1p Приблизительный натуральный логарифм значения плюс 1
родной_log2 Приблизительный логарифм по основанию 2
Native_powr Приблизительное положительное основание, возведенное в степень
Native_recip Примерное взаимное
Native_rootn Приблизительный корень n-й степени
Native_rsqrt Приблизительная величина, обратная квадратному корню
родной_син Приблизительный синус
Native_sincos Приблизительные синус и косинус
родной_синх Приблизительный гиперболический синус
родной_синпи Приблизительный синус числа, умноженного на число пи
Native_sqrt Приблизительный квадратный корень
родной_загар Приблизительная тангенс
родной_тан Приблизительный гиперболический тангенс
родной_танпи Приблизительный тангенс числа, умноженного на пи
следующий после Следующее число с плавающей запятой
бах База возведена в степень
паун Основание возведено в целочисленную степень
власть Положительное основание возведено в степень
радианы Преобразует градусы в радианы
остаток Остаток дивизии
ремкво Остаток и частное деления
рвать Округлить до четного
корень N-й корень
круглый Округлить от нуля
rsRand Псевдослучайное число
рскрт обратная квадратному корню
знак Знак значения
грех Синус
синкос Синус и косинус
Синь Гиперболический синус
Синпи Синус числа, умноженного на пи
кврт Квадратный корень
шаг 0, если значение меньше, 0 в противном случае
загар Касательная
Тань Гиперболический тангенс
танпи Тангенс числа, умноженного на пи
тгамма Гамма-функция
ствол Усекает число с плавающей запятой

Векторные математические функции

Эти функции интерпретируют входные аргументы как представление векторов в n-мерном пространстве.

На точность математических операций с 32-битными числами с плавающей запятой влияют прагмы rs_fp_relaxed и rs_fp_full. Подробности см. в разделе «Математические константы и функции» .

Различные компромиссы между точностью и скоростью могут быть достигнуты за счет использования вариантов общих математических функций. Функции, имя которых начинается с

  • Native_: Может иметь пользовательскую аппаратную реализацию с более низкой точностью. Кроме того, значения ниже нормы могут быть сброшены до нуля, может использоваться округление в сторону нуля, а входные значения NaN и бесконечности могут обрабатываться неправильно.
  • fast_: может выполнять внутренние вычисления с использованием 16-битных чисел с плавающей запятой. Кроме того, значения ниже нормы могут быть сброшены до нуля и может использоваться округление в сторону нуля.

Функции
крест Перекрестное произведение двух векторов
расстояние Расстояние между двумя точками
точка Скалярное произведение двух векторов
быстрое_дистанция Примерное расстояние между двумя точками
быстрая_длина Приблизительная длина вектора
fast_normalize Приблизительный нормализованный вектор
длина Длина вектора
родное_дистанция Примерное расстояние между двумя точками
родная_длина Приблизительная длина вектора
Native_normalize Приблизительно нормализовать вектор
нормализовать Нормализовать вектор

Матричные функции

Эти функции позволяют манипулировать квадратными матрицами ранга 2x2, 3x3 и 4x4. Они особенно полезны для графических преобразований и совместимы с OpenGL.

Мы используем индекс, начинающийся с нуля, для строк и столбцов. Например, последний элемент rs_matrix4x4 находится в позиции (3, 3).

RenderScript использует матрицы со столбцами и векторы на основе столбцов. Преобразование вектора выполняется путем последующего умножения вектора, например (matrix * vector) , как это предусмотрено rsMatrixMultiply ().

Чтобы создать матрицу преобразования, которая выполняет два преобразования одновременно, умножьте две исходные матрицы, при этом первое преобразование будет правым аргументом. Например, чтобы создать матрицу преобразования, которая применяет преобразование s1, за которым следует s2, вызовите rsMatrixLoadMultiply(&combined, &s2, &s1) . Это происходит от s2 * (s1 * v) , что равно (s2 * s1) * v .

У нас есть два стиля функций для создания матриц преобразования: rsMatrixLoad Transformation и rsMatrix Transformation . Первый стиль просто сохраняет матрицу преобразования в первом аргументе. Последний изменяет уже существующую матрицу преобразования, так что новое преобразование происходит первым. Например, если вы вызываете rsMatrixTranslate () для матрицы, которая уже выполняет масштабирование, результирующая матрица при применении к вектору сначала выполнит перевод, а затем масштабирование.

Функции
rsExtractFrustumPlanes Вычисление усеченных плоскостей
rsIsSphereInFrustum Проверяет, находится ли сфера в пределах усеченных плоскостей.
rsMatrixGet Получить один элемент
rsMatrixInverse Инвертирует матрицу на месте
rsMatrixInverseTranspose Инвертирует и транспонирует матрицу на месте
rsMatrixLoad Загрузите или скопируйте матрицу
rsMatrixLoadFrustum Загрузите матрицу проекции усеченной пирамиды
rsMatrixLoadIdentity Загрузить идентификационную матрицу
rsMatrixLoadMultiply Умножить две матрицы
rsMatrixLoadOrtho Загрузите матрицу ортогональной проекции
rsMatrixLoadPerspective Загрузите матрицу перспективной проекции
rsMatrixLoadRotate Загрузите матрицу вращения
rsMatrixLoadScale Загрузите матрицу масштабирования
rsMatrixLoadTranslate Загрузить матрицу перевода
rsMatrixMultiply Умножить матрицу на вектор или другую матрицу
rsMatrixRotate Применение поворота к матрице преобразования
rsMatrixScale Примените масштабирование к матрице преобразования
rsMatrixSet Установить один элемент
rsMatrixTranslate Применить перевод к матрице преобразования
rsMatrixTranspose Транспонировать место матрицы

Кватернионные функции

Следующие функции управляют кватернионами.

Функции
rsQuaternionAdd Добавьте два кватерниона
rsQuaternionConjugate Сопряжение кватерниона
rsQuaternionDot Скалярное произведение двух кватернионов
rsQuaternionGetMatrixUnit Получить матрицу вращения из кватерниона
rsQuaternionLoadRotate Создайте кватернион вращения
rsQuaternionLoadRotateUnit Кватернион, представляющий вращение вокруг произвольного единичного вектора.
rsQuaternionMultiply Умножьте кватернион на скаляр или другой кватернион
rsQuaternionNormalize Нормализовать кватернион
rsQuaternionSet Создать кватернион
rsQuaternionSlerp Сферическая линейная интерполяция между двумя кватернионами

Функции атомарного обновления

Чтобы обновить значения, общие для нескольких потоков, используйте функции ниже. Они гарантируют, что значения обновляются атомарно, т.е. чтение, обновление и запись в память выполняются в правильном порядке.

Эти функции медленнее, чем их неатомарные эквиваленты, поэтому используйте их только тогда, когда необходима синхронизация.

Обратите внимание, что в RenderScript ваш код, скорее всего, будет выполняться в отдельных потоках, даже если вы не создавали их явно. Среда выполнения RenderScript очень часто разделяет выполнение одного ядра на несколько потоков. Обновление глобальных переменных должно выполняться с помощью атомарных функций. Если возможно, измените свой алгоритм, чтобы вообще избежать их.

Функции
рсатомикадд Потокобезопасное дополнение
rsAtomicAnd Потокобезопасный побитовый и
rsAtomicCas Потокобезопасное сравнение и установка
rsAtomicDec Потокобезопасный декремент
rsAtomicInc Потокобезопасное приращение
rsAtomicMax Потокобезопасный максимум
rsAtomicMin Потокобезопасный минимум
rsAtomicOr Потокобезопасный побитовый или
rsAtomicSub Потокобезопасное вычитание
rsAtomicXor Потокобезопасное поразрядное исключающее или

Функции и типы времени

Приведенные ниже функции можно использовать для определения текущего времени на часах и текущего времени работы системы. Не рекомендуется вызывать эти функции внутри ядра.

Типы
rs_time_t Секунды с 1 января 1970 г.
rs_tm Структура даты и времени
Функции
rsGetDt Прошедшее время с момента последнего звонка
rsLocaltime Преобразовать в местное время
rsTime Секунды с 1 января 1970 г.
rsUptimeMillis Время работы системы в миллисекундах
rsUptimeNanos Время безотказной работы системы в наносекундах

Функции создания распределения

Приведенные ниже функции можно использовать для создания выделений из сценария.

Эти функции можно вызывать прямо или косвенно из вызываемой функции. Если какой-то путь потока управления может привести к вызову этих функций из функции ядра RenderScript, будет сгенерирована ошибка компилятора.

Функции
rsCreateAllocation Создайте объект rs_allocation заданного типа.
rsCreateElement Создает объект rs_element указанного типа данных.
rsCreatePixelElement Создает объект rs_element указанного типа данных и типа данных.
rsCreateType Создает объект rs_type с указанными атрибутами элемента и формы.
rsCreateVectorElement Создает объект rs_element указанного типа данных и ширины вектора.

Функции доступа к данным распределения

Приведенные ниже функции можно использовать для получения и установки ячеек, составляющих выделение.

  • Доступ к отдельным ячейкам осуществляется с помощью функций rsGetElementAt* и rsSetElementAt .
  • Несколько ячеек можно скопировать с помощью функций rsAllocationCopy* и rsAllocationV*.
  • Для получения значений через сэмплер используйте rsSample .
Функции rsGetElementAt и rsSetElement* названы неправильно. Они не получают и не устанавливают элементы, которые аналогичны типам данных; они получают или устанавливают ячейки. Думайте о них как о rsGetCellAt и rsSetCellAt.

Функции
rsAllocationCopy1DRange Копирование последовательных ячеек между выделениями
rsAllocationCopy2DRange Копирование прямоугольной области ячеек между выделениями
rsAllocationVLoadX Получить вектор из распределения скаляров
rsAllocationVStoreX Сохраните вектор в наборе скаляров
rsGetElementAt Вернуть ячейку из выделения
rsGetElementAtYuv_uchar_U Получите компонент U распределения YUV.
rsGetElementAtYuv_uchar_V Получите компонент V распределения YUV.
rsGetElementAtYuv_uchar_Y Получите компонент Y распределения YUV.
rsSample Выборка значения из выделения текстуры
rsSetElementAt Установить ячейку распределения

Функции характеристик объекта

Приведенные ниже функции можно использовать для запроса характеристик объекта Allocation, Element или Sampler. Эти объекты созданы из Java. Вы не можете создать их из сценария.

Распределения:

Выделение — это основной метод, используемый для передачи данных в ядра RenderScript и обратно.

Они представляют собой структурированный набор ячеек, который можно использовать для хранения растровых изображений, текстур, произвольных точек данных и т. д.

Эта коллекция ячеек может иметь множество измерений (X, Y, Z, Массив0, Массив1, Массив2, Массив3), граней (для кубических карт) и уровня детализации (для мип-отображения).

Подробную информацию о создании распределений см. в android.renderscript.Allocation .

Элементы:

Термин «элемент» используется в RenderScript несколько неоднозначно, как для информации о типе ячеек выделения, так и для создания экземпляра этого типа. Например:

  • rs_element — это дескриптор спецификации типа, а
  • В таких функциях, как rsGetElementAt (), «элемент» означает создание экземпляра типа, то есть ячейку выделения.

Приведенные ниже функции позволяют запрашивать характеристики спецификации типа.

Элемент может указывать простые типы данных, такие как C, например целое число, число с плавающей запятой или логическое значение. Он также может указать дескриптор объекта RenderScript. См. список основных типов в rs_data_type .

Элементы могут указывать вектор фиксированного размера (размером 2, 3 или 4) версии базовых типов. Элементы можно группировать в сложные элементы, создавая эквивалент определений структур C.

Элементы также могут иметь вид — семантическую информацию, используемую для интерпретации данных пикселей. См. rs_data_kind .

При создании распределения общих элементов вы можете просто использовать один из множества предопределенных элементов, например F32_2 .

Для создания сложных элементов используйте Java-класс Element.Builder .

Сэмплеры:

Объекты сэмплеров определяют, как выделения могут быть прочитаны как структура внутри ядра. См. android.renderscript.S .

Функции
rsAllocationGetDimFaces Наличие более чем одного лица
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 обертки сэмплера
rsSamplerGetWrapT Значение T обертки пробоотборника

Функции и типы вызова ядра

Функцию rsForEach () можно использовать для вызова корневого ядра скрипта.

Другие функции используются для получения характеристик вызова исполняемого ядра, таких как измерения и текущие индексы. Эти функции принимают rs_kernel_context в качестве аргумента.

Типы
rs_for_each_strategy_t Рекомендуемый порядок обработки ячеек
rs_kernel Дескриптор функции ядра
rs_kernel_context Дескриптор контекста вызова ядра
rs_script_call_t Информация об итерации ячейки
Функции
rsForEach Запускает ядро
rsForEachInternal (Внутренний API) Запустить ядро ​​в текущем скрипте (с номером слота)
rsForEachWithOptions Запускает ядро ​​с опциями
rsGetArray0 Индекс в измерении Array0 для указанного контекста ядра.
rsGetArray1 Индекс в измерении Array1 для указанного контекста ядра.
rsGetArray2 Индекс в измерении Array2 для указанного контекста ядра.
rsGetArray3 Индекс в измерении Array3 для указанного контекста ядра.
rsGetDimArray0 Размер измерения Array0 для указанного контекста ядра
rsGetDimArray1 Размер измерения Array1 для указанного контекста ядра
rsGetDimArray2 Размер измерения Array2 для указанного контекста ядра
rsGetDimArray3 Размер измерения Array3 для указанного контекста ядра
rsGetDimHasFaces Наличие более чем одного лица для указанного контекста ядра
rsGetDimLod Количество уровней детализации для указанного контекста ядра
rsGetDimX Размер измерения X для указанного контекста ядра
rsGetDimY Размер измерения Y для указанного контекста ядра
rsGetDimZ Размер измерения Z для указанного контекста ядра
rsGetFace Координата лица для указанного контекста ядра
rsGetLod Индекс в измерении «Уровни детализации» для указанного контекста ядра.

Функции ввода/вывода

Эти функции используются для:

  • Отправьте информацию Java-клиенту и
  • Отправьте обработанное распределение или получите следующее распределение для обработки.

Функции
rsAllocationIoReceive Получать новый контент из очереди
rsAllocationIoSend Отправить новый контент в очередь
rsSendToClient Отправить сообщение клиенту, неблокирующее
rsSendToClientBlocking Отправить сообщение клиенту, заблокировав

Отладка функций

Приведенные ниже функции предназначены для использования во время разработки приложений. Их не следует использовать в транспортных приложениях.

Функции
rsDebug Зарегистрировать сообщение и значения

Графические функции и типы

Графическая подсистема RenderScript была удалена на уровне API 23.