RenderScript Runtime API 참조

개요

RenderScript는 기본 수준에서 컴퓨팅 작업을 제공하는 고성능 런타임입니다. RenderScript 코드는 플랫폼 독립성을 허용하기 위해 런타임에 기기에서 컴파일됩니다.

이 참조 문서에서는 C99에서 RenderScript 코드를 작성하는 데 활용할 수 있는 RenderScript 런타임 API에 관해 설명합니다. RenderScript 컴퓨팅 헤더 파일은 자동으로 포함됩니다.

RenderScript를 사용하려면 여기에 설명된 RenderScript 런타임 API와 RenderScript용 Android 프레임워크 API를 활용해야 합니다. Android 프레임워크 API에 관한 문서는 android.renderscript 패키지 참조를 확인하세요.

RenderScript로 개발하는 방법, 런타임 API와 Android 프레임워크 API가 상호작용하는 방법에 관한 자세한 내용은 RenderScript 개발자 가이드RenderScript 샘플을 참고하세요.

숫자 유형

스칼라:

RenderScript는 다음과 같은 스칼라 숫자 유형을 지원합니다.

8 비트 16 비트 32 비트 64 비트
정수: 문자, int8_t short, int16_t int32_t long, long, int64_t
부호 없는 정수: uchar, uint8_t ushort, uint16_t 단위, uint32_t ulong, uint64_t
부동 소수점: 전/후반 float double

벡터:

RenderScript는 길이 2, 3, 4의 고정 크기 벡터를 지원합니다. 벡터는 일반 유형 이름 뒤에 2, 3 또는 4를 사용하여 선언됩니다. 예: float4, int3, double2, ulong4

벡터 리터럴을 만들려면 벡터 유형 뒤에 중괄호로 묶인 값을 사용합니다(예: (float3){1.0f, 2.0f, 3.0f}).

벡터 항목은 다른 이름 지정 스타일을 사용하여 액세스할 수 있습니다.

단일 항목은 변수 이름 뒤에 점과 함께 액세스할 수 있습니다.

  • 문자 x, y, z, w,
  • 문자 r, g, b, a는
  • 문자 s 또는 S 다음에 0부터 시작하는 색인이 옵니다.

예를 들어 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_행렬2x2, rs_행렬3x3, rs_행렬4x4입니다. 작업 목록은 매트릭스 함수를 참조하세요.

쿼터니언은 rs_quaternion을 통해서도 지원됩니다. 작업 목록은 Quaterion 함수를 참조하세요.

유형
문자2 2개의 8비트 부호 있는 정수
문자3 3개의 8비트 부호 있는 정수
문자4 4개의 8비트 부호 있는 정수
더블2 64비트 부동 소수점 수 2개
더블3 64비트 부동 소수점 수 3개
더블4 64비트 부동 소수점 수 4개
부동 소수점 수 32비트 부동 소수점 수 2개
부동 소수점 수3 32비트 부동 소수점 수
부동 소수점 수4 32비트 부동 소수점 수 4개
하프 16비트 부동 소수점 값
하프2 2개의 16비트 부동 소수점 수
하프3 16비트 부동 소수점 수 3개
하프4 16비트 부동 소수점 수 4개
int16_t 부호 있는 16비트 정수
int2 32비트 부호 있는 정수 2개
int3 32비트 부호 있는 정수 3개
int32_t 부호 있는 32비트 정수
int4 32비트 부호 있는 정수 4개
int64_t 부호 있는 64비트 정수
int8_t 부호 있는 8비트 정수
긴2 64비트 부호 있는 정수 2개
긴3 64비트 부호 있는 정수 3개
긴 4 64비트 부호 있는 정수 4개
rs_행렬2x2 32비트 부동 소수점 수의 2x2 행렬
rs_행렬3x3 32비트 부동 소수점 수의 3x3 행렬
rs_행렬4x4 32비트 부동 소수점 수의 4x4 행렬
rs_quaternion 사원수
짧은2 2개의 16비트 부호 있는 정수
짧은3 16비트 부호 있는 정수 3개
짧은 버전4 4개의 16비트 부호 있는 정수
사이즈_t 부호 없는 사이즈 유형
사이즈_t 부호 있는 크기 유형
우차르 부호 없는 8비트 정수
Uchar2 8비트의 부호 없는 정수 2개
Uchar3 부호 없는 8비트 정수 3개
Uchar4 부호 없는 4비트 정수 4개
단위 부호 없는 32비트 정수
uint16_t 부호 없는 16비트 정수
Uint2 부호 없는 32비트 정수 2개
Uint3 부호 없는 32비트 정수 3개
uint32_t 부호 없는 32비트 정수
Uint4 부호 없는 32비트 정수 4개
uint64_t 부호 없는 64비트 정수
uint8_t 부호 없는 8비트 정수
우롱 부호 없는 64비트 정수
Ulong2 부호 없는 64비트 정수 2개
Ulong3 부호 없는 64비트 정수 3개
Ulong4 부호 없는 64비트 정수 4개
유쇼트 부호 없는 16비트 정수
ushort2 드림 16비트의 부호 없는 정수 2개
Ushort3 드림 부호 없는 16비트 정수 3개
Ushort4 드림 부호 없는 16비트 정수 4개

객체 유형

아래 유형은 할당, 샘플러, 요소, 스크립트와 같은 RenderScript 객체를 조작하는 데 사용됩니다. 이러한 객체는 대부분 Java RenderScript API를 사용하여 만들어집니다.

유형
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_유형] 유형에 대한 핸들
rs_yuv_format YUV 형식

변환 함수

아래 함수는 숫자 벡터 유형에서 다른 유형으로 또는 한 색 표현에서 다른 색 표현으로 변환합니다.

함수
전환 숫자 벡터 변환
rsPackColorTo8888 참고 부동 소수점 수에서 uchar4 RGBA 만들기
rsUnpackColor8888 uchar4에서 float4 RGBA 생성
rsYuvToRGBA YUV 값을 RGBA로 변환

수학 상수 및 함수

아래의 수학 함수를 스칼라와 벡터에 적용할 수 있습니다. 벡터에 적용된 경우 반환되는 값은 입력의 각 항목에 적용된 함수의 벡터입니다.

예를 들면 다음과 같습니다.
float3 a, b;
// The following call sets
// a.x to sin(b.x),
// a.y to sin(b.y), and
// a.z to sin(b.z).
a = sin(b);

대신 입력을 n차원 공간에서 단일 벡터로 해석하는 distance(), length() 등의 함수는 벡터 수학 함수를 참고하세요.

32비트 부동 소수점 수에서 수학 연산의 정밀도는 pragmas rs_fp_relaxed 및 rs_fp_full의 영향을 받습니다. rs_fp_relaxed에서는 비정상 값이 0으로 플러시되고 0에 가까운 반올림이 이루어질 수 있습니다. 이에 비해 rs_fp_full은 1.17549435e-38f보다 작은 비정규 값 값을 올바르게 처리해야 합니다. rs_fp_rull은 짝수에 연결된 가장 가까운 값으로 반올림해야 합니다.

일반적인 수학 함수의 변형을 사용하면 다양한 정밀도/속도 절충점을 달성할 수 있습니다. 이름이 다음으로 시작하는 함수

  • native_: 정확도가 낮은 맞춤 하드웨어 구현이 있을 수 있습니다. 또한 준정규 값은 0으로 플러시되고, 0을 향한 반올림을 사용할 수 있으며, NaN 및 무한대 입력이 올바르게 처리되지 않을 수 있습니다.
  • 절반_: 16비트 부동 소수점 수를 사용하여 내부 계산을 수행할 수 있습니다. 또한 비정규 값을 0으로 플러시하고 0을 향한 반올림을 사용할 수 있습니다.

상수
M_1_PI(M_1_PI) 1 / pi, 32비트 부동 소수점 수
M_2_PI(M_2_PI) 2 / pi, 32비트 부동 소수점 수
M_2_SQRTPI 2 / sqrt(pi), 32비트 부동 소수점 수
월~일 e(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비트 부동 소수점 수
M_PI pi(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비트 부동 소수점 수
함수
절대 정수의 절댓값
acos 역 코사인
아코시 역 하이퍼볼릭 코사인
acospi 역 코사인을 파이로 나눈 값
아신 역 사인
아신 역 하이퍼볼릭 사인
아신피 파이로 나눈 역 사인
아탄 역탄젠트
아탄2 비율의 역 탄젠트
atan2pi 파이로 나눈 비율의 역 탄젠트
아탄 역 하이퍼볼릭 탄젠트
아탄피 역탄젠트를 파이로 나눈 값
cbrt 세제곱근
Ceil 값 이상의 최소 정수
클램프 값을 범위로 제한
CLZ 선행 0비트 수
copysign 숫자의 기호를 다른 숫자에 복사합니다.
cos 코사인
코시 하이페볼릭 코사인
Cospi 파이를 곱한 숫자의 코사인
학위 라디안을 각도로 변환합니다.
erf 수학 오류 함수
erfc 수학적 상보 오차 함수
지수 e를 숫자로 거듭제곱합니다.
실험10 10 배수
실험2 2 배수
지수1 e를 숫자로 거듭제곱합니다.
FAB 부동 소수점 수의 절댓값
fdim 두 값 간 양의 차이
바닥 값 이하의 정수 중 최솟값
fma 곱하기 및 더하기
fmax 최대 2개의 부동 소수점 수
fmin 최소 2개의 부동 소수점 수
fmod 모듈로
프랙트 양의 분수부
frexp 이진 가수와 지수
half_recip 16비트 정밀도로 역수 계산됨
half_rsqrt 16비트 정밀도로 계산된 제곱근의 역수
half_sqrt 16비트 정밀도로 계산된 제곱근
하이팟 빗변
ilogb 밑이 2입니다.
ldexp 가수와 지수로 부동 소수점을 만듭니다.
성소수자 감마 함수의 자연 로그
로그 자연 로그
로그10 밑이 10인 대수
log1p 1을 더한 값의 자연 로그
로그2 밑이 2인 대수
logb 밑이 2입니다.
화남 곱하기 및 더하기
최대 최대
최소
믹스 두 개의 값을 혼합합니다.
modf 적분 및 분수 구성요소
숫자가 아님
nan_half 숫자가 아님
native_acos 근사 역 코사인
native_acosh 근사 역 하이퍼볼릭 코사인
native_acospi 근사 역 코사인을 파이로 나눈 값
native_asin 근사 역 사인
native_asinh 대략적인 역 하이퍼볼릭 사인
native_asinpi 근사 역 사인을 파이로 나눈 값
native_atan 근사 역탄젠트
native_atan2 비율의 근사 역 탄젠트
native_atan2pi 파이로 나눈 비율의 근사 역 탄젠트
native_atanh 대략적인 역 하이퍼볼릭 탄젠트
native_atanpi 대략적인 역탄젠트를 파이로 나눈 값
native_cbrt 대략적인 세제곱근
native_cos 근사 코사인
native_cosh 대략적인 쌍곡선 코사인
native_cospi 파이를 곱한 숫자의 근사 코사인
native_divide 대략적인 나눗셈
native_exp 대략 e를 숫자로 거듭제곱합니다.
native_exp10 약 10배, 50%
native_exp2 약 2자리를 숫자로 거듭제곱합니다.
네이티브_expm1 대략적인 e를 숫자 빼기 1로 거듭제곱
네이티브_하이라이트 대략적인 빗변
native_log 근사 자연 로그
native_log10 밑이 10인 대수의 대략적인 값
native_log1p 1을 더한 값의 대략적인 자연 로그
native_log2 대략적인 밑이 2인 대수
native_powr 대략적인 양수를 지수로 거듭제곱합니다.
native_recip 근사 역수
native_rootn 근사 n제곱근
native_rsqrt 제곱근의 근사 역수
native_sin 근사 사인
native_sincos 근사 사인 및 코사인
native_sinh 대략적인 쌍곡선 사인
native_sinpi 파이를 곱한 숫자의 근사 사인
native_sqrt 대략적인 제곱근
native_tan 근사 탄젠트
native_tanh 대략적인 쌍곡선 탄젠트
native_tanpi 숫자에 파이를 곱한 근사 탄젠트
nextafter 다음 부동 소수점 숫자
아래 값을 지수로 거듭제곱합니다.
pown 밑을 정수 지수로 거듭제곱합니다.
파우어 양의 밑을 지수로 거듭제곱합니다.
라디안 각도를 라디안으로 변환합니다.
나머지 나눗셈의 나머지
remquo 나눗셈의 나머지와 몫
린트 짝수로 반올림
루팅 N제곱근
둥근 0에서 반올림하기
rsRand 유사 랜덤 숫자
rsqrt 제곱근의 역수
서명 값의 부호
사인 사인
싱코스 사인 및 코사인
싱어 하이퍼볼릭 사인(hyperbolic sine)
신피 파이를 곱한 숫자의 사인
sqrt 제곱근
걸음 값보다 작은 경우 0, 그렇지 않으면 0
황갈색 탄젠트
tanh 하이퍼볼릭 탄젠트
tanpi 파이를 곱한 숫자의 탄젠트
tgamma 감마 함수
trunc 부동 소수점 자르기

벡터 수학 함수

이러한 함수는 입력 인수를 N차원 공간에서 벡터의 표현으로 해석합니다.

32비트 부동 소수점 수에서 수학 연산의 정밀도는 pragmas rs_fp_relaxed 및 rs_fp_full의 영향을 받습니다. 자세한 내용은 수학적 상수 및 함수를 참조하세요.

일반적인 수학 함수의 변형을 사용하면 다양한 정밀도/속도 절충점을 달성할 수 있습니다. 이름이 다음으로 시작하는 함수

  • native_: 정확도가 낮은 맞춤 하드웨어 구현이 있을 수 있습니다. 또한 준정규 값은 0으로 플러시되고, 0을 향한 반올림을 사용할 수 있으며, NaN 및 무한대 입력이 올바르게 처리되지 않을 수 있습니다.
  • fast_: 16비트 부동 소수점 수를 사용하여 내부 계산을 수행할 수 있습니다. 또한 비정규 값을 0으로 플러시하고 0을 향한 반올림을 사용할 수 있습니다.

함수
교차 두 벡터의 교차곱
거리 두 지점 사이의 거리
두 벡터의 내적
빠른_거리 두 지점 사이의 대략적인 거리
fast_length 대략적인 벡터 길이
fast_normalize 대략적인 정규화된 벡터
길이 벡터 길이
native_distance 두 지점 사이의 대략적인 거리
native_length[네이티브_길이] 대략적인 벡터 길이
native_normalize 벡터의 대략적인 정규화
정규화 벡터 정규화

행렬 함수

이러한 함수를 사용하면 순위 2x2, 3x3, 4x4의 정사각형 행렬을 조작할 수 있습니다. 특히 그래픽 변환에 유용하며 OpenGL과 호환됩니다.

행과 열에는 0부터 시작하는 색인을 사용합니다. 예를 들어 rs_행렬4x4의 마지막 요소는 (3, 3)에서 찾을 수 있습니다.

RenderScript는 열 주 행렬과 열 기반 벡터를 사용합니다. 벡터 변환은 rsMatrixMultiply()에서 제공하는 (matrix * vector)와 같은 벡터를 사후 곱하는 방식으로 이루어집니다.

한 번에 2개의 변환을 수행하는 변환 행렬을 만들려면 두 개의 소스 행렬에 첫 번째 변환을 오른쪽 인수로 곱합니다. 예를 들어 s1 다음에 s2를 적용하는 변환 행렬을 생성하려면 rsMatrixLoadMultiply(&combined, &s2, &s1)를 호출합니다. 이는 s2 * (s1 * v)((s2 * s1) * v)에서 파생됩니다.

변환 행렬을 만드는 함수에는 rsMatrixLoadTransformation 및 rsMatrixTransformation 두 가지 스타일이 있습니다. 전자의 스타일은 단순히 변환 행렬을 첫 번째 인수에 저장합니다. 후자는 새 변환이 먼저 발생하도록 기존 변환 매트릭스를 수정합니다. 예를 들어 이미 배율 조정을 수행하고 있는 행렬에서 rsMatrixTranslate()를 호출하는 경우, 벡터에 적용될 때 결과 행렬이 먼저 변환을 수행한 다음 배율을 조정합니다.

함수
rsExtractFrustumPlanes 절두체 평면 컴퓨팅
rsIsSphereInFrustum 구가 절두체 평면 내에 있는지 확인
rsMatrixGet 요소 1개 가져오기
rsMatrixInverse 행렬을 제자리에 반전합니다.
rsMatrixInverseTranspose 행렬을 반전 및 전치합니다.
rsMatrixLoad 행렬 로드 또는 복사
rsMatrixLoadFrustum 절두체 투영 행렬 로드
rsMatrixLoadIdentity 단위행렬 로드
rsMatrixLoadMultiply 두 행렬을 곱합니다.
rsMatrixLoadOrtho 직교 투영 행렬 로드
rsMatrixLoadPerspective 원근 투영 행렬 로드
rsMatrixLoadRotation 회전 행렬 로드
rsMatrixLoadScale 확장 행렬 로드
rsMatrixLoadTranslate 변환 행렬 로드
rsMatrixMultiply 행렬에 벡터 또는 다른 행렬 곱하기
rsMatrixRotation 변환 행렬에 회전 적용
rsMatrixScale 변환 행렬에 크기 조정 적용
rsMatrixSet 요소 1개 설정
rsMatrixTranslate 변환 행렬에 변환 적용
rsMatrixTranspose 행렬 자리 바꾸기

사원수 함수

다음 함수는 쿼터니언을 조작합니다.

함수
rsQuaternionAdd입니다. 사원수 2개를 더합니다.
rsQuaternionConjugate 사원수 켤레
rsQuaternionDot 두 개의 사수의 내적
rsQuaternionGetMatrixUnit 사원수에서 회전 행렬 가져오기
rsQuaternionLoadRotation 회전 쿼터니언 만들기
rsQuaternionLoadRotationUnit 임의의 단위 벡터에 대한 회전을 나타내는 사원수
rsQuaternionMultiply 사원수에 스칼라 또는 다른 사원수 곱하기
rsQuaternionNormalize 사원수 정규화
rsQuaternionSet 사원수 만들기
rsQuaternionSlerp 두 사분원 사이의 구면 선형 보간 유형

원자 업데이트 함수

여러 스레드 간에 공유되는 값을 업데이트하려면 아래 함수를 사용합니다. 메모리 읽기, 업데이트, 메모리 쓰기가 올바른 순서로 실행되도록 값이 원자적으로 업데이트되도록 합니다.

이러한 함수는 원자적이지 않은 함수보다 느리므로 동기화가 필요한 경우에만 사용합니다.

RenderScript에서는 코드를 명시적으로 만들지 않았더라도 코드가 별도의 스레드에서 실행될 수 있습니다. RenderScript 런타임은 종종 한 커널의 실행을 여러 스레드에 분할합니다. 전역 함수는 원자 함수를 사용하여 업데이트해야 합니다. 가능하면 알고리즘을 수정하여 모두 피하세요.

함수
rsAtomicAdd 스레드로부터 안전한 추가
rsAtomicAnd 스레드로부터 안전한 비트 및
rsAtomicCas 스레드로부터 안전한 비교 및 설정
rsAtomicDec 스레드로부터 안전한 감소
rsAtomicInc 스레드로부터 안전한 증분
rsAtomicMax 스레드로부터 안전한 최댓값
rsAtomicMin 스레드로부터 안전한 최솟값
rsAtomicOr 스레드로부터 안전한 비트 또는
rsAtomicSub 스레드로부터 안전한 뺄셈
rsAtomicXor 스레드로부터 안전한 비트 전용 또는

시간 함수 및 유형

아래 함수를 사용하여 현재 시계 시간과 현재 시스템 가동 시간을 확인할 수 있습니다. 커널 내부에서 이러한 함수를 호출하는 것은 권장되지 않습니다.

유형
rs_time_t 1970년 1월 1일 이후 경과 시간(초)
rs_tm 드림 날짜 및 시간 구조
함수
rsGetDt 마지막 통화 이후 경과된 시간
rsLocaltime 현지 시간으로 변환
rsTime 1970년 1월 1일 이후 경과 시간(초)
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 YUV 할당의 U 구성요소 가져오기
rsGetElementAtYuv_uchar_V YUV 할당의 V 구성요소 가져오기
rsGetElementAtYuv_uchar_Y YUV 할당의 Y 구성요소 가져오기
rsSample 텍스처 할당의 값 샘플링
rsSetElementAt 할당 셀 설정

객체 특성 함수

아래 함수를 사용하여 할당, 요소 또는 샘플러 객체의 특성을 쿼리할 수 있습니다. 이러한 객체는 자바에서 생성됩니다. 스크립트로는 생성할 수 없습니다.

할당:

Allocation은 RenderScript 커널과 데이터를 전달하는 데 사용되는 기본 메서드입니다.

비트맵, 텍스처, 임의의 데이터 포인트 등을 저장하는 데 사용할 수 있는 구조화된 셀 모음입니다.

이 셀 모음은 다양한 차원 (X, Y, Z, Array0, Array1, Array2, Array3), 면 (큐브맵용), 세부정보 수준 (밉매핑용)을 가질 수 있습니다.

Allocation 생성에 관한 자세한 내용은 android.renderscript.Allocation을 참고하세요.

요소:

'요소'라는 용어는 RenderScript에서 약간 모호하게 사용됩니다. Allocation의 셀에 관한 유형 정보와 이 유형의 인스턴스화를 모두 의미하기 때문입니다. 예:

  • rs_element는 유형 사양의 핸들입니다.
  • rsGetElementAt()과 같은 함수에서 'element'는 유형의 인스턴스화(즉, Allocation의 셀)를 의미합니다.

아래 함수를 사용하면 유형 사양의 특성을 쿼리할 수 있습니다.

요소는 C에 있는 간단한 데이터 유형(예: 정수, 부동 소수점 수, 불리언)을 지정할 수 있습니다. RenderScript 객체에 핸들을 지정할 수도 있습니다. 기본 유형 목록은 rs_data_type을 참고하세요.

요소는 기본 유형의 고정 크기 벡터 (크기 2, 3 또는 4) 버전을 지정할 수 있습니다. 요소를 복잡한 요소로 함께 그룹화하여 C 구조 정의와 동등한 요소를 만들 수 있습니다.

요소에는 픽셀 데이터를 해석하는 데 사용되는 시맨틱 정보인 종류도 있을 수 있습니다. rs_data_kind를 참고하세요.

공통 요소의 Allocation을 생성할 때는 F32_2와 같은 사전 정의된 여러 요소 중 하나를 간단히 사용할 수 있습니다.

복잡한 요소를 만들려면 Element.Builder 자바 클래스를 사용합니다.

샘플러:

샘플러 객체는 Allocation을 커널 내에서 구조로 읽는 방법을 정의합니다. android.renderscript.S를 참고하세요.

함수
rsAllocationGetDimFaces 2개 이상의 얼굴이 있는 경우
rsAllocationGetDimLOD 세부정보 수준 존재
rsAllocationGetDimX X 차원의 크기
rsAllocationGetDimY Y 측정기준의 크기
rsAllocationGetDimZ Z 차원의 크기
rsAllocationGetElement Allocation의 셀을 설명하는 객체 가져오기
rsClearObject 드림 객체 해제
rsElementGetBytesSize 요소의 크기
rsElementGetDataKind 요소의 종류
rsElementGetDataType 열거형 요소의 데이터 유형
rsElementGetSubElement 복잡한 요소의 하위 요소
rsElementGetSubElementArraySize 드림 복합 요소의 하위 요소 배열 크기
rsElementGetSubElementCount 하위 요소의 수
rsElementGetSubElementName 정보 추가 하위 요소의 이름
rsElementGetSubElementNameLength 하위 요소의 이름 길이
rsElementGetSubElementOffsetBytes 인스턴스화된 하위 요소의 오프셋
rsElementGetVectorSize입니다. 요소의 벡터 크기
rsIsObject - 빈 핸들 확인
rsSamplerGetAnisotropy 샘플러의 비등방성
rsSamplerGetMagnification 샘플러 확대 값
rsSamplerGetMinification 샘플러 압축 값
rsSamplerGetWrapS 샘플러 래핑 S 값
rsSamplerGetWrapT를 사용하세요. 샘플러 래핑 T 값

커널 호출 함수 및 유형

rsForeach() 함수는 스크립트의 루트 커널을 호출하는 데 사용할 수 있습니다.

다른 함수는 차원 및 현재 색인과 같은 실행 중인 커널의 호출 특성을 가져오는 데 사용됩니다. 이러한 함수는 rs_kernel_context를 인수로 사용합니다.

유형
각_전략을_위한_ ____ 추천 셀 처리 순서
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 지정된 커널 컨텍스트에 2개 이상의 얼굴이 있음
rsGetDimLod 지정된 커널 컨텍스트의 세부정보 수준 수
rsGetDimX 지정된 커널 컨텍스트의 X 차원 크기입니다.
rsGetDimY 지정된 커널 컨텍스트의 Y 차원 크기
rsGetDimZ 지정된 커널 컨텍스트의 Z 차원 크기
rsGetFace 지정된 커널 컨텍스트의 얼굴 좌표
rsGetLod 지정된 커널 컨텍스트에 대한 세부정보 수준 측정기준의 색인

입력/출력 함수

이러한 함수는 다음과 같은 용도로 사용됩니다.

  • Java 클라이언트에 정보를 전송합니다.
  • 처리된 할당을 전송하거나 처리할 다음 할당을 받습니다.

함수
rsAllocationIoReceived 현재 재생목록에서 새 콘텐츠 받기
rsAllocationIoSend 현재 재생목록에 새 콘텐츠 보내기
rsSendToClient 클라이언트에게 메시지를 비차단형으로 보냅니다.
rsSendToClientBlocking 다음을 차단하는 메시지를 클라이언트에게 보냅니다.

디버깅 함수

아래 함수는 애플리케이션 개발 중에 사용하기 위한 것입니다. 배송 애플리케이션에 사용해서는 안 됩니다.

함수
rsDebug 메시지 및 값 기록

그래픽 함수 및 유형

RenderScript의 그래픽 하위 시스템은 API 수준 23에서 삭제되었습니다.