Обзор
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 .
Функции | |
---|---|
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.