3D 아핀 변형 효과
3D 변환 효과를 사용하여 임의의 4x4 변환 매트릭스를 이미지에 적용합니다.
이 효과는 다음 계산을 사용하여 원본 이미지의 모퉁이 꼭짓점([x y z 1 ])에 제공하는 행렬(M?)을 적용합니다.
[ xr yr zr 1 ]=[ x y z 1 ]*M?
이 효과에 대한 CLSID는 CLSID_D2D13DTransform.
예제 이미지
이전 |
---|
After |
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);
D2D13DTransformEffect->SetInput(0, bitmap);
// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix =
D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
D2D1::Matrix4x4F::RotationY(30.0f) *
D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);
D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();
효과 속성
표시 이름 및 인덱스 열거형 | Description |
---|---|
InterpolationMode D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE |
효과가 이미지에 사용하는 보간 모드입니다. 품질과 속도의 범위는 5 배율 모드가 있습니다. 형식이 D2D1_3DTRANSFORM_INTERPOLATION_MODE. 기본값은 D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DTRANSFORM_PROP_BORDER_MODE |
소프트 또는 하드 이미지의 테두리를 계산하는 데 사용되는 모드입니다. 자세한 내용은 테두리 모드 를 참조하세요. 형식이 D2D1_BORDER_MODE. 기본값은 D2D1_BORDER_MODE_SOFT. |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
프로젝션 평면에 적용된 4x4 변환 행렬입니다. 다음 행렬 계산은 하나의 3D 좌표계에서 변환된 2D 좌표계로 점을 매핑하는 데 사용됩니다. 어디:
Mx,y = 행렬 요소 변환 X , Y , Z =출력 프로젝션 평면 좌표 개별 행렬 요소는 바인딩되지 않으며 단위가 없습니다. 형식이 D2D1_MATRIX_4X4_F. 기본값은 Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)입니다. |
보간 모드
열거형 | 설명 |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | 가장 가까운 단일 지점을 샘플하고 사용합니다. 이 모드는 처리 시간을 줄이지만 가장 낮은 품질의 이미지를 출력합니다. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | 4포인트 샘플 및 선형 보간을 사용합니다. 이 모드는 가장 가까운 인접 모드보다 더 많은 처리 시간을 사용하지만 더 높은 품질의 이미지를 출력합니다. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC | 보간을 위해 16 샘플 입방 커널을 사용합니다. 이 모드는 가장 많은 처리 시간을 사용하지만 더 높은 품질의 이미지를 출력합니다. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | 좋은 에지 앤티앨리어싱을 위해 단일 픽셀 내에 4개의 선형 샘플을 사용합니다. 이 모드는 픽셀이 적은 이미지에서 소량으로 축소하는 데 적합합니다. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | 이방성 필터링을 사용하여 비트맵의 변형된 모양에 따라 패턴을 샘플링합니다. |
참고
모드를 선택하지 않으면 효과가 기본적으로 D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.
참고
이방성 모드는 크기 조정 시 Mipmap을 생성합니다. 그러나 이 효과에 입력되는 효과에 대해 Cached 속성을 true로 설정하면 밉맵이 충분히 작은 이미지에 대해 매번 생성되지 않습니다.
테두리 모드
속성 | 설명 |
---|---|
D2D1_BORDER_MODE_SOFT | 효과는 보간할 때 투명한 검은색 픽셀로 이미지를 채움하여 부드러운 가장자리를 만듭니다. |
D2D1_BORDER_MODE_HARD | 효과는 출력을 입력 이미지의 크기로 고정합니다. |
4x4 변환 행렬 클래스
Direct2D는 3차원으로 이미지를 변환하기 위한 도우미 함수를 제공하는 4x4 행렬 클래스를 제공합니다. 자세한 내용과 모든 클래스 멤버에 대한 설명은 Matrix4x4F 항목을 참조하세요.
함수 | Description | 행렬 |
---|---|---|
Matrix4x4F::Scale(X, Y, Z) | X, Y 및/또는 Z 방향에서 프로젝션 평면의 크기를 조정하는 변환 행렬을 생성합니다. | |
SkewX(X) | X 방향으로 프로젝션 평면을 기울이는 변환 행렬을 생성합니다. | |
Skewy(Y) | 프로젝션 평면을 Y 방향으로 기울이는 변환 행렬을 생성합니다. | |
Translation(X, Y, Z) | X, Y 또는 Z 방향으로 프로젝션 평면을 변환하는 변환 행렬을 생성합니다. | |
RotationX(X) | X축에 대한 프로젝션 평면을 회전하는 변환 행렬을 생성합니다. | |
RotationY(Y) | Y축을 기준으로 프로젝션 평면을 회전하는 변환 행렬을 생성합니다. | |
RotationZ(Z) | Z축을 기준으로 프로젝션 평면을 회전하는 변환 행렬을 생성합니다. | |
PerspectiveProjection(D) | 깊이 값이 D인 원근 변환입니다. | |
RotationArbitraryAxis(X, Y, Z, degrees) | 지정한 축을 기준으로 프로젝션 평면을 회전합니다. |
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱] |
지원되는 최소 서버 | Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱] |
헤더 | d2d1effects.h |
라이브러리 | d2d1.lib, dxguid.lib |