DirectX 3D/DirectX92016. 8. 21. 02:30

D3DTRANSFORMSTATETYPE 열거형


변환 스테이트의 값을 기술하는 정수를 정의한다.

구문

typedef enum _D3DTRANSFORMSTATETYPE {
    D3DTS_VIEW = 2,
    D3DTS_PROJECTION = 3,
    D3DTS_TEXTURE0 = 16,
    D3DTS_TEXTURE1 = 17,
    D3DTS_TEXTURE2 = 18,
    D3DTS_TEXTURE3 = 19,
    D3DTS_TEXTURE4 = 20,
    D3DTS_TEXTURE5 = 21,
    D3DTS_TEXTURE6 = 22,
    D3DTS_TEXTURE7 = 23,
    D3DTS_FORCE_DWORD = 0x7fffffff
} D3DTRANSFORMSTATETYPE;

정수

D3DTS_VIEW

뷰 변환 행렬로서 설정되는 변환 행렬을 식별한다. 디폴트값은 NULL 이다 (단위행렬).

D3DTS_PROJECTION

투영 변환 행렬로서 설정되는 변환 행렬을 식별한다. 디폴트값은 NULL 이다 (단위행렬).

D3DTS_TEXTURE0

지정된 텍스처 스테이지로 설정되는 변환 행렬을 식별한다.

D3DTS_TEXTURE1

지정된 텍스처 스테이지로 설정되는 변환 행렬을 식별한다.

D3DTS_TEXTURE2

지정된 텍스처 스테이지로 설정되는 변환 행렬을 식별한다.

D3DTS_TEXTURE3

지정된 텍스처 스테이지로 설정되는 변환 행렬을 식별한다.

D3DTS_TEXTURE4

지정된 텍스처 스테이지로 설정되는 변환 행렬을 식별한다.

D3DTS_TEXTURE5

지정된 텍스처 스테이지로 설정되는 변환 행렬을 식별한다.

D3DTS_TEXTURE6

지정된 텍스처 스테이지로 설정되는 변환 행렬을 식별한다.

D3DTS_TEXTURE7

지정된 텍스처 스테이지로 설정되는 변환 행렬을 식별한다.

D3DTS_FORCE_DWORD

이 열거형을 강제적으로 32 비트 사이즈에 컴파일 한다. 이 값은 사용되지 않았다.

주의

256 ~ 511 의 범위의 변환 스테이트는 예약이 끝난 상태이며, D3DTS_WORLDMATRIX 및 D3DTS_WORLD 매크로를 사용해 인덱스 지정할 수 있는 월드 행렬이, 최대 256 개까지 저장 된다.

매크로
D3DTS_WORLDD3DTS_WORLDMATRIX(0)와 같다.
D3DTS_WORLDMATRIX(index)index 의 월드 행렬을 설정하는 변환 행렬을 식별한다. 정점 혼합 에 대해서만, 복수의 월드 행렬이 사용된다. 그 이외의 경우는, D3DTS_WORLD 마셔 사용된다.

열거형의 정보

헤더d3d9types.h
최저한의 operating systemWindows 98

참조

IDirect3DDevice9::GetTransform ,IDirect3DDevice9::MultiplyTransform ,IDirect3DDevice9::SetTransform ,D3DTS_WORLD,D3DTS_WORLDn ,D3DTS_WORLDMATRIX


Posted by 멜데스
DirectX 3D/DirectX92016. 8. 21. 02:29

IDirect3DDevice9::SetTransform 메서드


단일 장치의 변환 관련 스테이트를 설정한다.

구문

HRESULT SetTransform(      

    D3DTRANSFORMSTATETYPE State,     CONST D3DMATRIX *pMatrix );

파라미터

State
[in] 변경 대상의 장치 스테이트 변수. 이 파라미터에는,D3DTRANSFORMSTATETYPE 열거형의 임의의 멤버 또는D3DTS_WORLDMATRIX 매크로를 지정할 수 있다.
pMatrix
[in] 현재의 변환을 변경하는 D3DMATRIX 구조체의 포인터.

반환값

성공했을 경우는,D3D_OK 를 돌려준다.

인수의 1 개가 무효인 경우는,D3DERR_INVALIDCALL 를 돌려준다.



참조

IDirect3DDevice9::GetTransform ,IDirect3DDevice9::SetRenderState ,D3DTS_WORLD ,D3DTS_WORLDn,D3DTS_WORLDMATRIX


'DirectX 3D > DirectX9' 카테고리의 다른 글

21. D3DRENDERSTATETYPE 열거형  (0) 2016.08.21
20. D3DTRANSFORMSTATETYPE 열거형  (0) 2016.08.21
18. IDirect3DVertexBuffer9::Unlock 메서드  (0) 2016.08.21
17. D3DLOCK 열거형  (0) 2016.08.21
16. IDirect3DIndexBuffer9::Lock 메서드  (0) 2016.08.21
Posted by 멜데스
DirectX 3D/DirectX92016. 8. 21. 02:23

IDirect3DVertexBuffer9::Unlock 메서드


정점 데이터를 언락 한다.

구문

HRESULT Unlock(VOID);

반환값

성공했을 경우는,D3D_OK 를 돌려준다.

실패했을 경우는,D3DERR_INVALIDCALL 를 돌려준다.



참조

IDirect3DVertexBuffer9::Lock


Posted by 멜데스
DirectX 3D/DirectX92016. 8. 21. 02:22

D3DLOCK


실행하는 잠금의 종류를 기술하는, 0 혹은 복수의 잠금 옵션의 편성.

#define설명
D3DLOCK_DISCARD애플리케이션은, 잠금 되고 있는 영역내의 모든 장소를, 쓰기 전용 처리로 덧쓰기한다. 이것은 동적 텍스처, 동적인 정점 버퍼, 및 동적인 인덱스 버퍼를 사용할 때에 유효한 옵션이다.

정점 버퍼 및 인덱스 버퍼의 경우, 애플리케이션은 버퍼 전체를 파기한다. 새로운 메모리 영역의 포인터가 돌려주어지므로, 다이나믹 메모리 액세스 (DMA)와 낡은 영역으로부터의 렌더링이 기능 정지할 것은 없다.

텍스처에 대해서는, 애플리케이션은 잠금 되고 있는 영역내의 모든 장소를 쓰기 전용 처리로 덧쓰기한다.

D3DLOCK_DONOTWAIT드라이버가 즉시 표면을 잠글 수 없는 경우에, 애플리케이션이 CPU 사이클을 다시 취득할 수가 있다. 이 플래그가 설정되어 있는 경우, 드라이버가 즉시 표면을 잠글 수 없을 때는, 잠금 호출은 D3DERRR_WASSTILLDRAWING 를 돌려준다. 이 플래그는,IDirect3DDevice9::CreateOffscreenPlainSurface ,IDirect3DDevice9::CreateRenderTarget , 또는 IDirect3DDevice9::CreateDepthStencilSurface 를 사용해 생성 한 표면의 LockRect 를 호출하는 경우에만 사용할 수 있다. 이 플래그는 백 버퍼와 함께 사용할 수도 있다.
D3DLOCK_NO_DIRTY_UPDATE디폴트에서는, 리소스의 잠금은 더티 영역을 그 리소스에 추가한다. 이 옵션을 지정 하면, 리소스의 더티 상태가 변경되지 않게 된다. 애플리케이션에서는, 잠금 처리동안으로 변경되는 것 영역 세트에 대한 추가 정보를 가지고 있을 때는, 이 옵션을 사용할 필요가 있다.
D3DLOCK_NOOVERWRITE애플리케이션이 정점 버퍼 및 인덱스 버퍼내의 데이터를 덧쓰기하지 않는 것을 보증한다. 이 플래그를 지정 하면, 드라이버가 즉석에서 종료해, 이 버퍼를 사용해 렌더링을 속행할 수 있다. 이 플래그를 사용하지 않는 경우, 드라이버는 잠금으로부터 돌아오기 전에 렌더링을 종료할 필요가 있다.
D3DLOCK_NOSYSLOCK

비디오 메모리 잠금의 디폴트의 동작은, 시스템의 크리티컬 섹션을 확보하는 것으로, 잠금중에 디스플레이 모드의 변경을 하지 않는 것을 보증한다. 이 옵션은, 시스템 와이드인 크리티컬 섹션이 잠금의 사이 보관 유지되지 않게 한다.

락 처리는 시간이 걸리지만, 마우스 커서의 이동 등, 시스템으로 다른 처리를 실행하는 것이 가능하게 된다. 이 옵션은, 소프트웨어 렌더링의 백 버퍼의 잠금과 같이, 잠금이 장시간에 이르러, 시스템의 응답성에 악영향을 주어 버리는 것 같은 잠금에 대해서 유효하다.

D3DLOCK_READONLY애플리케이션은 버퍼에 기입하지 않는다. 이것에 의해, 비네이티브 포맷으로 저장 되고 있는 리소스는, 언락시에 재압축 스텝을 생략 할 수 있다.

정수 정보

헤더d3d9types.h
최저한의 operating systemWindows 98

관련 항목


Posted by 멜데스
DirectX 3D/DirectX92016. 8. 21. 02:20

IDirect3DIndexBuffer9::Lock 메서드


인덱스 데이터의 범위를 잠그어, 인덱스 버퍼 메모리의 포인터를 얻어온다.

구문

HRESULT Lock(      

    UINT OffsetToLock,     UINT SizeToLock,     VOID **ppbData,     DWORD Flags );

파라미터

OffsetToLock
[in] 잠그는 인덱스 데이터에의 오프셋(offset) (바이트 단위). 인덱스 버퍼 전체를 잠그려면 ,SizeToLock 와 OffsetToLock 의 양쪽 모두의 파라미터에 0 을 지정한다.
SizeToLock
[in] 잠그는 인덱스 데이터의 사이즈 (바이트 단위). 인덱스 버퍼 전체를 잠그려면 ,SizeToLock 와 OffsetToLock 의 양쪽 모두의 파라미터에 0 을 지정한다.
ppbData
[out] 돌려주어진 인덱스 데이터를 포함한 메모리 버퍼에의 VOID* 포인터.
Flags
[in] 실행하는 잠금의 종류를 기술하는, 0 개 이상의 잠금 플래그의 편성. 이 메서드에 사용할 수 있는 플래그는 다음대로.
  • D3DLOCK_DISCARD
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NO_SYSLOCK
  • D3DLOCK_READONLY
  • D3DLOCK_NOOVERWRITE

플래그에 대해서는, 「D3DLOCK 」를 참조할것.

반환값

성공했을 경우는,D3D_OK 를 돌려준다.

실패했을 경우는,D3DERR_INVALIDCALL 를 돌려준다.



주의

인덱스 버퍼의 처리에서는, 잠금의 호출을 여러 차례 실시할 수 있다. 다만, 잠금의 호출 회수와 언락의 호출 회수가 일치하고 있을 필요가 있다. 현재 설정해 있는 인덱스 버퍼로 잠금 카운트가 남아 있는 경우,IDirect3DDevice9::DrawPrimitive 의 호출은 실패한다.

D3DLOCK_DISCARD 및 D3DLOCK_NOOVERWRITE 플래그는, D3DUSAGE_DYNAMIC 로 생성 된 버퍼 에 대해서만 유효하다.

D3DLOCK_DISCARD 및 D3DLOCK_NOOVERWRITE. 의 사용법에 대해서는, 「프로그래밍의 힌트」를 참조할것.

참조

IDirect3DIndexBuffer9::Unlock


'DirectX 3D > DirectX9' 카테고리의 다른 글

18. IDirect3DVertexBuffer9::Unlock 메서드  (0) 2016.08.21
17. D3DLOCK 열거형  (0) 2016.08.21
15. IDirect3DIndexBuffer9 인터페이스  (0) 2016.08.21
14. D3DFORMAT 열거형  (0) 2016.08.21
13. D3DPOOL 열거형  (0) 2016.08.21
Posted by 멜데스
DirectX 3D/DirectX92016. 8. 21. 02:19

IDirect3DIndexBuffer9 인터페이스


인덱스 버퍼 리소스를 조작하려면 ,IDirect3DIndexBuffer9 인터페이스의 메서드를 사용한다.

IDirect3DIndexBuffer9 멤버

FreePrivateData

이 리소스에 관련지을 수 있는 지정된 Private 데이터를 릴리즈 한다.

GetDesc

인덱스 버퍼 리소스의 기술을 얻어온다.

GetDevice

리소스에 관련지을 수 있는 장치를 얻어온다.

GetPriority

이 리소스에 대한 우선 순위를 얻어온다.

GetPrivateData

리소스에 관련된 Private 데이터가 제공된 버퍼에 복사 한다.

GetType

리소스의 타입을 돌려준다.

Lock

인덱스 데이터의 범위를 잠그어, 인덱스 버퍼 메모리의 포인터를 얻어온다.

PreLoad

관리되는 리소스를 프리로드 한다.

SetPriority

이 리소스에 리소스 관리의 우선 순위를 할당한다.

SetPrivateData

Microsoft® Direct3D® 는 아니고, 애플리케이션에서의 사용이 의도되고 있는 리소스와 데이터를 관련짓는다. 데이터는 값으로 건네받아 복수의 데이터 세트를 단일의 리소스와 관련지을 수가 있다.

Unlock

인덱스 데이터를 언락 한다.

주의

IDirect3DIndexBuffer9 인터페이스를 얻어오려면,IDirect3DDevice9::CreateIndexBuffer 메서드를 호출한다.

이 인터페이스는,IDirect3DResource9 인터페이스로부터 추가 기능을 계승한다.

이 인터페이스는, 모든 구성 요소 개체 모델 (COM) 인터페이스와 같이,IUnknown 인터페이스로부터 계승한다.

LPDIRECT3DINDEXBUFFER9 및 PDIRECT3DINDEXBUFFER9 형은,IDirect3DIndexBuffer9 인터페이스의 포인터로서 정의된다.

typedef struct IDirect3DIndexBuffer9 *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;

인터페이스의 정보

상속받은곳IUnknown
헤더d3d9.h
임포트 라이브러리d3d9.lib
최저한의 operating systemWindows 98

참조

IDirect3DDevice9::CreateIndexBuffer


'DirectX 3D > DirectX9' 카테고리의 다른 글

17. D3DLOCK 열거형  (0) 2016.08.21
16. IDirect3DIndexBuffer9::Lock 메서드  (0) 2016.08.21
14. D3DFORMAT 열거형  (0) 2016.08.21
13. D3DPOOL 열거형  (0) 2016.08.21
12. D3DFVF 열거형  (0) 2016.08.21
Posted by 멜데스
DirectX 3D/DirectX92016. 8. 21. 02:10

D3DFORMAT


다양한 종류의 표면 포맷을 정의한다.

구문

typedef enum _D3DFORMAT {

...(values)

} D3DFORMAT;

포맷에는 몇개의 종류가 있다.

모든 포맷은, 왼쪽에서 오른쪽으로 최상정도 비트 (MSB)로부터 최하정도 비트 (LSB)의 순서에 나타나고 있다. 예를 들어, D3DFORMAT_ARGB 는, MSB 채널 A (알파)로부터 LSB 채널 B (파랑)의 순서이다. 표면 데이터를 암벽 횡단 할 때 데이터는 LSB 로부터 MSB 의 순서로 메모리에 저장 된다. 이것은, 메모리내의 채널의 순서가, LSB (파랑)로부터 MSB (알파)의 순서인 것을 의미한다.

미정도리의 채널 (G16R16 나 A8 등)을 포함한 포맷의 디폴트값은 1 이다. 유일한 예외는 A8 포맷으로, 3 개의 컬러 채널에 대해서 000 에 초기화된다.

부호 없음 포맷

이러한 정수는, 픽셀 셰이더에 대한 텍스처 주소 명령의 작동코드를 참조한다.

부호 없음 포맷의 데이터는, 정이 아니면 안된다. 부호 없음 포맷에서는, 적 (R), 록 (G), 청 (B), 알파 (A), 휘도(Luminance) (L), 팔레트 (P) 데이터를 조합해 사용한다. 팔레트 데이터는, 색팔레트의 인덱스 생성에 사용하므로, 컬러 인덱스 데이터라고도 부른다.

부호 없음 포맷의 플래그포맷
D3DFMT_R8G8B82024 비트의 RGB 픽셀 포맷으로, 채널 근처 8 비트를 사용한다.
D3DFMT_A8R8G8B82132 비트의 알파 첨부 ARGB 픽셀 포맷으로, 채널 근처 8 비트를 사용한다.
D3DFMT_X8R8G8B82232 비트의 RGB 픽셀 포맷으로, 각 색에 8 비트가 확보되고 있다.
D3DFMT_R5G6B52316 비트의 RGB 픽셀 포맷으로, 빨강에 5 비트, 초록에 6 비트, 파랑에 5 비트를 사용한다.
D3DFMT_X1R5G5B52416 비트의 픽셀 포맷으로, 그 중 5 비트는 각 색을 위해서(때문에) 확보되고 있다.
D3DFMT_A1R5G5B52516 비트의 픽셀 포맷으로, 각 색에 5 비트, 알파에 1 비트가 확보되고 있다.
D3DFMT_A4R4G4B42616 비트의 ARGB 픽셀 포맷으로, 채널 마다 4 비트를 사용한다.
D3DFMT_R3G3B2278 비트의 RGB 텍스처 포맷으로, 빨강에 3 비트, 초록에 3 비트, 파랑에 2 비트를 사용한다.
D3DFMT_A8288 비트의 알파만.
D3DFMT_A8R3G3B22916 비트의 ARGB 텍스처 포맷으로, 알파에 8 비트, 빨강과 초록에 각각 3 비트, 파랑에 2 비트를 사용한다.
D3DFMT_X4R4G4B43016 비트의 RGB 픽셀 포맷으로, 색 마다 4 비트를 사용한다.
D3DFMT_A2B10G10R103132 비트의 픽셀 포맷으로, 각 색에 10 비트, 알파에 2 비트를 사용한다.
D3DFMT_A8B8G8R83232 비트의 알파 첨부 ARGB 픽셀 포맷으로, 채널 근처 8 비트를 사용한다.
D3DFMT_X8B8G8R83332 비트의 RGB 픽셀 포맷으로, 각 색에 8 비트가 확보되고 있다.
D3DFMT_G16R163432 비트의 픽셀 포맷으로, 초록과 빨강에 각각 16 비트를 사용한다.
D3DFMT_A2R10G10B103532 비트의 픽셀 포맷으로, 적·록·청에 각각 10 비트, 알파에 2 비트를 사용한다.
D3DFMT_A16B16G16R163664 비트의 픽셀 포맷으로, 성분 마다 16 비트를 사용한다.
D3DFMT_A8P8408 비트의 알파가 붙은 8 비트의 컬러 인덱스 데이터.
D3DFMT_P8418 비트의 컬러 인덱스 데이터.
D3DFMT_L8508 비트의 휘도(Luminance)만.
D3DFMT_L168116 비트의 휘도(Luminance)만.
D3DFMT_A8L85116 비트로, 알파와 휘도(Luminance)에 각각 8 비트를 사용한다.
D3DFMT_A4L4528 비트로, 알파와 휘도(Luminance)에 각각 4 비트를 사용한다.

부호 첨부 포맷

부호 첨부 포맷의 데이터는, 정이어도 부여도 괜찮다. 부호 첨부 포맷에서는, (U), (V), (W), (Q) 데이터를 조합해 사용한다.

부호 첨부 포맷의 플래그포맷
D3DFMT_V8U86016 비트의 범프 맵 포맷으로, u 데이터와 v 데이터에 각각 8 비트를 사용한다.
D3DFMT_Q8W8V8U86332 비트의 범프 맵 포맷으로, 채널 마다 8 비트를 사용한다.
D3DFMT_V16U166432 비트의 범프 맵 포맷으로, 채널 마다 16 비트를 사용한다.
D3DFMT_Q16W16V16U1611064 비트의 범프 맵 포맷으로, 성분 마다 16 비트를 사용한다.
D3DFMT_CxV8U811716 비트의 보통 압축 포맷. 텍스처 샘플러는 다음과 같이 C 채널을 계산한다. C = sqrt(1 - U2 - V2)

믹스 포맷

믹스 포맷에는, 부호 없음 데이터와 부호 첨부 데이터를 조합해 저장 할 수 있다.

믹스 포맷의 플래그포맷
D3DFMT_L6V5U561휘도(Luminance) 첨부의 16 비트 범프 맵 포맷으로, 휘도(Luminance)에 6 비트, v 와 u 에 각각 5 비트를 사용한다.
D3DFMT_X8L8V8U862휘도(Luminance) 첨부의 32 비트 범프 맵 포맷으로, 채널 마다 8 비트를 사용한다.
D3DFMT_A2W10V10U106732 비트의 범프 맵 포맷으로, 알파에 2 비트, w, v, u 에 각각 10 비트를 사용한다.

FOURCC 포맷

4 문자 코드 (FOURCC) 포맷의 데이터는, 압축 데이터이다.

MAKEFOURCC

4 문자 코드를 생성하는 매크로를 다음에 나타낸다.

#define MAKEFOURCC(ch0, ch1, ch2, ch3)                              \
                ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |   \
                ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))

정의 끝난 FOURCC 포맷을 다음에 나타낸다.

FOURCC 플래그포맷
D3DFMT_MULTI2_ARGB8MAKEFOURCC('M', 'E', 'T', '1')MultiElement 텍스처 (압축 없음)
D3DFMT_G8R8_G8B8MAKEFOURCC('G', 'R', 'G', 'B')YUY2 (Y0U0, Y1V0, Y2U2 등)에 유사한 16 비트에 팩 된 RGB 포맷. 색값을 올바르게 나타내기 위해서(때문에), 픽셀의 페어를 필요로 한다. 페어의 1 번째의 픽셀은, 초록의 8 비트 (상위 8 비트)와 빨강의 8 비트 (하위 8 비트)를 포함한다. 2 번째의 픽셀은, 초록의 8 비트 (상위 8 비트)와 파랑의 8 비트 (하위 8 비트)를 포함한다. 2 개의 픽셀은, 함께 빨강과 파랑의 성분을 공유하고 있지만, 동시에 각각이 고유의 초록 성분 (G0R0, G1B0, G2R2 등)을 갖는다. 텍스처 샘플러는, 픽셀 셰이더내를 참조할 경우에 색을 정규화하지 않는다. 색은 0.0f ~ 255.0f 의 범위대로 된다. 이것은 모든 프로그래밍 가능한 픽셀 셰이더 모델에 들어맞는다. 고정 기능 픽셀 셰이더에 경우는, 하드웨어로 0. f ~ 1. f 의 범위에 정규화할 필요가 있어, 본질적으로 YUY2 텍스처로서 처리할 필요가 있다. 이 포맷을 공개하는 하드웨어는,D3DCAPS9 의 PixelShader1xMaxValue 멤버가, 그 범위를 처리할 수 있는 값으로 설정되지 않으면 안 된다.
D3DFMT_R8G8_B8G8MAKEFOURCC('R', 'G', 'B', 'G')UYVY (U0Y0, V0Y1, U2Y2 등)에 유사한 16 비트에 팩 된 RGB 포맷. 색값을 올바르게 나타내기 위해서(때문에), 픽셀의 페어를 필요로 한다. 페어의 1 번째의 픽셀은, 초록의 8 비트 (하위 8 비트)와 빨강의 8 비트 (상위 8 비트)를 포함한다. 2 번째의 픽셀은, 초록의 8 비트 (하위 8 비트)와 파랑의 8 비트 (상위 8 비트)를 포함한다. 2 개의 픽셀은, 함께 빨강과 파랑의 성분을 공유하고 있지만, 동시에 각각이 고유의 초록 성분 (R0G0, B0G1, R2G2 등)을 갖는다. 텍스처 샘플러는, 픽셀 셰이더내를 참조할 경우에 색을 정규화하지 않는다. 색은 0.0f ~ 255.0f 의 범위대로 된다. 이것은 모든 프로그래밍 가능한 픽셀 셰이더 모델에 들어맞는다. 고정 기능 픽셀 셰이더에 경우는, 하드웨어로 0. f ~ 1. f 의 범위에 정규화할 필요가 있어, 본질적으로 YUY2 텍스처로서 처리할 필요가 있다. 이 포맷을 공개하는 하드웨어는,D3DCAPS9 의 PixelShader1xMaxValue 멤버가, 그 범위를 처리할 수 있는 값으로 설정되지 않으면 안 된다.
D3DFMT_DXT1MAKEFOURCC('D', 'X', 'T', '1')DXT1 압축 텍스처 포맷
D3DFMT_DXT2MAKEFOURCC('D', 'X', 'T', '2')DXT2 압축 텍스처 포맷
D3DFMT_DXT3MAKEFOURCC('D', 'X', 'T', '3')DXT3 압축 텍스처 포맷
D3DFMT_DXT4MAKEFOURCC('D', 'X', 'T', '4')DXT4 압축 텍스처 포맷
D3DFMT_DXT5MAKEFOURCC('D', 'X', 'T', '5')DXT5 압축 텍스처 포맷
D3DFMT_UYVYMAKEFOURCC('U', 'Y', 'V', 'Y')UYVY 포맷 (PC98 준거)
D3DFMT_YUY2MAKEFOURCC('Y', 'U', 'Y', '2')YUY2 포맷 (PC98 준거)

버퍼 포맷

깊이 버퍼, 스텐실 버퍼, 정점 버퍼, 인덱스 버퍼는, 각각 고유의 포맷을 갖는다.

버퍼 플래그포맷
D3DFMT_D16_LOCKABLE7016 비트의 Z 버퍼 비트 깊이.
D3DFMT_D327132 비트의 Z 버퍼 비트 깊이.
D3DFMT_D15S17316 비트의 Z 버퍼 비트 깊이로, 15 비트가 깊이 채널에, 1 비트가 스텐실 채널에 확보되고 있다.
D3DFMT_D24S87532 비트의 Z 버퍼 비트 깊이로, 깊이 채널에 24 비트, 스텐실 채널에 8 비트를 사용한다.
D3DFMT_D24X87732 비트의 Z 버퍼 비트 깊이로, 깊이 채널에 24 비트를 사용한다.
D3DFMT_D24X4S47932 비트의 Z 버퍼 비트 깊이로, 깊이 채널에 24 비트, 스텐실 채널에 4 비트를 사용한다.
D3DFMT_D32F_LOCKABLE82깊이값을 표준 IEEE 부동 소수점수(실수)값으로 나타내는 잠금 가능한 포맷.
D3DFMT_D24FS88324 비트의 깊이 (24 비트 부동 소수점 포맷 - 20e4)와 8 비트의 스텐실을 포함한, 잠글 수 없는 포맷.
D3DFMT_D168016 비트의 Z 버퍼 비트 깊이.
D3DFMT_VERTEXDATA100정점 버퍼 표면을 기술한다.
D3DFMT_INDEX1610116 비트의 인덱스 버퍼의 비트 깊이.
D3DFMT_INDEX3210232 비트의 인덱스 버퍼의 비트 깊이.

D3DFMT_D16_LOCKABLE 를 제외하는 모든 스텐실 포맷은, 각 픽셀에 특정의 비트 오더를 지정하지 않기 때문에, 드라이버는 깊이 채널로서 지정된 비트수보다 넓은 채널을 사용할 수 있다 (다만, 스텐실 채널은 사용할 수 없다).

부동 소수점 포맷

이러한 플래그는, 부동 소수점의 표면 포맷에 사용한다. 채널 근처 16 비트를 사용하는 이러한 포맷은, s10e5 포맷이라고도 부른다.

부동 소수점의 플래그포맷
D3DFMT_R16F11116 비트의 부동 소수점 포맷으로, 빨강의 채널에 16 비트를 사용한다.
D3DFMT_G16R16F11232 비트의 부동 소수점 포맷으로, 빨강의 채널에 16 비트, 초록의 채널에 16 비트를 사용한다.
D3DFMT_A16B16G16R16F11364 비트의 부동 소수점 포맷으로, 알파·청·록·적의 채널 마다 16 비트를 사용한다.

IEEE 포맷

이러한 플래그는, 부동 소수점의 표면 포맷에 사용한다. 채널 근처 32 비트를 사용하는 이러한 포맷은, s23e8 포맷이라고도 부른다.

부동 소수점의 플래그포맷
D3DFMT_R32F11432 비트의 부동 소수점 포맷으로, 빨강의 채널에 32 비트를 사용한다.
D3DFMT_G32R32F11564 비트의 부동 소수점 포맷으로, 빨강의 채널에 32 비트, 초록의 채널에 32 비트를 사용한다.
D3DFMT_A32B32G32R32F116128 비트의 부동 소수점 포맷으로, 알파·청·록·적의 채널 마다 32 비트를 사용한다.

그 외

그 외의 플래그는, 이것뿐이어, 미정도리의 포맷에 사용한다.

그 외의 플래그포맷
D3DFMT_UNKNOWN0표면 포맷은 불명하다.

백 버퍼 또는 디스플레이 포맷

이러한 포맷은, 백 버퍼 또는 디스플레이 에 대해서만 유효하다.

포맷백 버퍼.디스플레이
A2R10G10B10xx (풀 스크린 모드만)
A8R8G8B8x
X8R8G8B8xx
A1R5G5B5x
X1R5G5B5xx
R5G6B5xx

주의

비트 오더는, 최상정도 바이트가 선두이다. 따라서, D3DFMT_A8L8 는, 이 2 바이트 포맷의 상위 바이트가 알파인 것을 나타내고 있다. D3DFMT_D16 는, 16 비트의 정수값으로, 애플리케이션으로 잠금 가능한 표면을 나타낸다.

픽셀 포맷이 선택되고 있는 것은, 확립되어 있는 FOURCC 방식을 도입할 뿐만 아니라, 하드웨어 벤더가 정의하는 확장 포맷의 표현을 가능하게 하기 위한(해)이다. Microsoft® Direct3D® 런타임이 인식하는 포맷군은,D3DFORMAT 로 정의되고 있다.

독립한 하드웨어 vender (IHV)가 제공하는 포맷 및 많은 FOURCC 코드는, 일람에는 나타나지 않기 때문에 주의할 필요가 있다. 이 열거형의 포맷은, 런타임에 의해 인정되고 있는 점이 다른 포맷과 다르다. 즉, 레퍼런스 래스터라이저는, 이러한 형태의 모두로 동작한다. IHV 제공의 포맷은, 카드 마다 각각의 IHV 가 지원 한다.

관련 항목


'DirectX 3D > DirectX9' 카테고리의 다른 글

16. IDirect3DIndexBuffer9::Lock 메서드  (0) 2016.08.21
15. IDirect3DIndexBuffer9 인터페이스  (0) 2016.08.21
13. D3DPOOL 열거형  (0) 2016.08.21
12. D3DFVF 열거형  (0) 2016.08.21
11. D3DUSAGE 열거형  (0) 2016.08.21
Posted by 멜데스
DirectX 3D/DirectX92016. 8. 21. 02:01

D3DPOOL 열거형


리소스의 버퍼를 보관 유지하는 메모리 클래스를 정의한다.

구문

typedef enum _D3DPOOL {
    D3DPOOL_DEFAULT = 0,
    D3DPOOL_MANAGED = 1,
    D3DPOOL_SYSTEMMEM = 2,
    D3DPOOL_SCRATCH = 3,
    D3DPOOL_FORCE_DWORD = 0x7fffffff
} D3DPOOL;

정수

D3DPOOL_DEFAULT

리소스는, 리소스에 대해서 요구된 사용 방법으로 가장 적합한 메모리 풀에 놓여진다. 이것은, 보통, 로컬 비디오 메모리와 AGP (Accelerated Graphics Port) 메모리의 양쪽 모두를 포함한, 비디오 메모리이다. D3DPOOL_DEFAULT 풀은, D3DPOOL_MANAGED 및 D3DPOOL_SYTEMMEM 로부터 독립하고 있어, 리소스가 장치 액세스용의 우선 메모리에 배치되는 것을 지정한다. D3DPOOL_DEFAULT 는, 이 리소스의 메모리 풀 타입으로서 D3DPOOL_MANAGED 또는 D3DPOOL_SYSTEMMEM 의 어느쪽이든을 선택해야 하는 것을 나타내고 있는 것은 아니기 때문에 주의 해야 한다. D3DPOOL_DEFAULT 풀에 배치된 텍스처는, 그것들이 동적 텍스처인가, 또는 Private의 4 문자 코드 (FOURCC) 드라이버 포맷인 경우만 잠글 수 있다. 잠글 수 없는 텍스처에 액세스 하려면 ,IDirect3DDevice9::UpdateSurface,IDirect3DDevice9::UpdateTexture ,IDirect3DDevice9::GetFrontBufferData,IDirect3DDevice9::GetRenderTargetData 등의 함수를 사용할 필요가 있다. D3DPOOL_MANAGED 는, 대부분의 애플리케이션으로 D3DPOOL_DEFAULT 보다 적합한 경우가 많다. Microsoft® Direct3D® 런타임에는 미지의, 드라이버 독자적인 픽셀 포맷으로 생성 된 일부의 텍스처를 잠글 수 있는 것에 주의 해야 한다. 또, 텍스처와는 달라, 스왑 체인 백 버퍼, 렌더링 타겟, 정점 버퍼, 및 인덱스 버퍼를 잠글 수 있게도 주의 해야 한다. 장치가 손실했을 경우는, D3DPOOL_DEFAULT 를 사용해 생성 한 리소스는,IDirect3DDevice9::Reset 를 호출하기 전에 릴리즈 해야 한다. 더 자세한 정보는, 「장치의 손실」을 참조할것.

D3DPOOL_DEFAULT 를 사용해 리소스를 생성 할 때 비디오 카드 메모리가 이미 사용되고 있는 경우는, 요구를 채우는 충분한 메모리를 릴리즈 하기 위해서, 관리되는 리소스가 제거된다.

D3DPOOL_MANAGED

리소스는, 필요에 따라서, 장치로부터 액세스 할 수 있는 메모리에 자동적으로 복사 된다. 관리되는 리소스는, 시스템 메모리에 백업 되므로, 장치가 손실했을 때에 생성 다시 할 필요가 없다. 더 자세한 정보는 「리소스의 관리」를 참조할것. 관리되는 리소스는 잠글 수 있다. 시스템 메모리의 복사만이 직접 변경된다. Direct3D 는, 필요에 따라서, 드라이버가 액세스 가능한 메모리로 변경 내용을 복사 한다.

D3DPOOL_SYSTEMMEM

보통, 3D 장치에 의해 액세스 할 수 없는 메모리. 시스템 RAM 를 사용하지만, 페이징 가능한 RAM 가 줄어들 것은 없다. 이러한 리소스는, 장치가 손실해도 생성 다시 할 필요가 없다. 이 풀의 리소스는 잠글 수가 있어 D3DPOOL_DEFAULT 를 사용해 생성 된 메모리 리소스에 대한 IDirect3DDevice9::UpdateSurface 또는 IDirect3DDevice9::UpdateTexture 처리의 전송원으로서 사용할 수 있다.

D3DPOOL_SCRATCH

리소스는, 시스템 RAM 에 배치되므로, 장치가 손실했을 때에 생성 다시 할 필요가 없다. 이러한 리소스는, 장치의 사이즈나 포맷의 제한에 의해 구속되지 않는다. 따라서, Direct3D 장치로부터 액세스 하는 일도, 텍스처 또는 렌더링 타겟으로서 설정하는 일도 할 수 없다. 다만, 이러한 리소스는 항상 생성, 잠금, 복사가 가능하다.

D3DPOOL_FORCE_DWORD

이 열거형을 강제적으로 32 비트 사이즈에 컴파일 한다. 이 값은 사용되지 않았다.

주의

모든 리소스로 모든 풀 타입이 유효하다. 이것에는, 정점 버퍼, 인덱스 버퍼, 텍스처, 및 표면이 포함된다.

렌더링 타겟 및 스텐실 표면용의 풀 타입에는, 몇개의 제약이 있다.

D3DUSAGE_RENDERTARGETD3DUSAGE_DEPTHSTENCIL
D3DPOOL_DEFAULTxx
D3DPOOL_MANAGED
D3DPOOL_SCRATCH
D3DPOOL_SYSTEMMEM

동적인 사용 방법 및 밉맵의 사용 방법에 대해서도, 풀 타입에 제약이 있다.

PoolD3DUSAGE_DYNAMICD3DUSAGE_AUTOGENMIPMAP
D3DPOOL_DEFAULTxx
D3DPOOL_MANAGEDx
D3DPOOL_SCRATCH
D3DPOOL_SYSTEMMEMx

사용 방법 타입의 더 자세한 정보는, 「D3DUSAGE 」를 참조할것.

1 개의 리소스 (밉맵의 밉레벨)에 포함되는 다른 개체에 대해서 복수의 풀을 혼재시킬 수 없다. 또, 풀이 선택되고 있는 경우, 그것을 변경할 수 없다.

애플리케이션에서는, 대부분의 정적 리소스에 대해서 D3DPOOL_MANAGED 를 사용할 필요가 있다. 이것에 의해, 손실한 장치를 처리할 필요가 없어진다. 관리되는 리소스는 런타임에 의해 복원된다. 이것은, 특히 UMA 시스템으로 유효하다. 그 이외의 동적 리소스에 대해서는, D3DPOOL_MANAGED 는 사용하지 않는 것이 좋다. 실제, D3DPOOL_MANAGED 를 D3DUSAGE_DYNAMIC 와 함께 사용해, 인덱스 버퍼 및 정점 버퍼를 생성 할 수 없다.

동적 텍스처의 경우, 비디오 메모리와 시스템 메모리의 텍스처의 페어를 사용해, D3DPOOL_DEFAULT 를 지정해 비디오 메모리를, D3DPOOL_SYSTEMMEM 를 지정해 시스템 메모리를 할당하는 일이 있다. 잠금 메서드를 사용해, 시스템 메모리 텍스처의 비트를 잠금 및 변경할 수 있다. 그 후,IDirect3DDevice9::UpdateTexture 를 사용해, 비디오 메모리 텍스처를 갱신할 수 있다.

열거형의 정보

헤더d3d9types.h
최저한의 operating systemWindows 98

참조

IDirect3DDevice9::CreateCubeTexture ,IDirect3DDevice9::CreateIndexBuffer ,IDirect3DDevice9::CreateTexture,IDirect3DDevice9::CreateVolumeTexture ,IDirect3DDevice9::CreateVertexBuffer ,D3DINDEXBUFFER_DESC,D3DSURFACE_DESC ,D3DVERTEXBUFFER_DESC ,D3DVOLUME_DESC


'DirectX 3D > DirectX9' 카테고리의 다른 글

15. IDirect3DIndexBuffer9 인터페이스  (0) 2016.08.21
14. D3DFORMAT 열거형  (0) 2016.08.21
12. D3DFVF 열거형  (0) 2016.08.21
11. D3DUSAGE 열거형  (0) 2016.08.21
10. D3DXMatrixPerspectiveFovLH 함수  (0) 2016.08.11
Posted by 멜데스
DirectX 3D/DirectX92016. 8. 21. 01:56

D3DFVF


FVF 정수

유연한 정점 포맷 (FVF)은, 단일의 데이터 스트림에 인터리브 되어 저장 되고 있는 정점의 내용을 기술하기 위해서 사용된다. FVF 코드는, 보통, 고정 기능의 정점 처리에 의해 처리되는 데이터를 지정하기 위해서 사용된다.

정점의 포맷은, 다음의 플래그에 의해 기술된다. 정점 포맷에 대해서는, 「정점 포맷」을 참조할것.

정점 데이터 관련의 플래그

#define설명
D3DFVF_DIFFUSE정점 포맷이 디퓨즈색성분을 포함한다.
D3DFVF_NORMAL정점 포맷이 정점 법선 벡터를 포함한다. 이 플래그를, D3DFVF_XYZRHW 플래그와 함께 사용할 수 없다.
D3DFVF_PSIZE정점 포맷은 포인트 사이즈로 지정되고 있다. 이 사이즈는, 변환이 끝난 상태에서도 조명이 끝난 상태도 아닌 정점에 대해서는 카메라 공간 단위로, 또 변환이 끝난 상태로 조명 끝난 정점에 대해서는 장치 공간 단위로 나타내지고 있다.
D3DFVF_SPECULAR정점 포맷이 스펙큐러색성분을 포함한다.
D3DFVF_XYZ정점 포맷이 변환 되지 않은 정점의 위치 좌표를 포함한다. 이 플래그를, D3DFVF_XYZRHW 플래그와 함께 사용할 수 없다.
D3DFVF_XYZRHW정점 포맷이, 변환 된 정점의 위치 좌표를 포함한다. 이 플래그를 D3DFVF_XYZ 플래그 또는 D3DFVF_NORMAL 플래그와 함께 사용할 수 없다.
D3DFVF_XYZB1 ~ D3DFVF_XYZB5정점 포맷은, 위치 좌표 데이터, 및 복수의 행렬에 의한 정점 혼합 처리용의 중량감 (베타) 값의 대응수를 포함한다. 현재, Microsoft® Direct3D® 에서는 최대 3 개의 중량감값 및 4 개의 혼합 행렬로 혼합이 가능하다. 혼합 행렬의 사용법의 더 자세한 정보는, 「인덱스 첨부 정점 혼합」을 참조할것.
D3DFVF_XYZW정점 포맷이, 변환 및 클리핑 된 x, y, z w 데이터를 포함한다. ProcessVertices 는, 클립퍼를 기동하지 않고, 데이터를 클립 좌표로 출력한다. 이 정수는, 프로그래밍할 수 있는 정점 파이프라인에서의 사용을 목적으로 한 정수로, 프로그래밍할 수 있는 정점 파이프라인으로 밖에 사용하지 않는다.

텍스처 관련의 플래그

#define설명
D3DFVF_TEX0 - D3DFVF_TEX8이 정점에 대응하는 텍스처 좌표 세트의 번호. 이러한 플래그에 대응하는 숫자는 연속 번호로 되지 않다.
D3DFVF_TEXCOORDSIZEn(coordIndex)텍스처 좌표 데이터 세트를 정의한다. n 는 텍스처 좌표의 넓이를 나타낸다. coordIndex 는 텍스처 좌표의 인덱스 번호를 나타낸다. 「D3DFVF_TEXCOORDSIZEn 」 및 「텍스처 좌표」를 참조할것.

마스크값

그 외

#define설명
D3DFVF_POSITION_MASK위치 좌표 비트를 추출하는 마스크.
D3DFVF_RESERVED0, D3DFVF_RESERVED2유연한 정점 포맷의 예약 비트를 추출하기 위한 마스크값. 사용 불가.
D3DFVF_TEXCOUNT_MASK텍스처 flag bit를 추출하기 위한 마스크값.
#define설명
D3DFVF_LASTBETA_D3DCOLOR정점 위치 데이터의 마지막 베타 필드는 D3DCOLOR 형이 된다. 베타 필드의 데이터는, 행렬 팔레트 스키닝으로 행렬 인덱스를 지정하기 위해서 사용한다.
D3DFVF_LASTBETA_UBYTE4

정점 위치 데이터의 마지막 베타 필드는 UBYTE4 형이 된다. 베타 필드의 데이터는, 행렬 팔레트 스키닝으로 행렬 인덱스를 지정하기 위해서 사용한다.

// Given the following vertex data definition: 
struct VERTEXPOSITION
{
   float pos[3];
   union 
   {
      float beta[5];
      struct
      {
         float weights[4];
         DWORD MatrixIndices;  // Used as UBYTEs
      }
   }
};

FVF 가 D3DFVF_XYZB5 | D3DFVF_LASTBETA_UBYTE4 라고 선언되고 있다고 한다. weight 및 MatrixInidices 가 beta[] 에 포함되어 있다. D3DFVF_LASTBETA_UBYTE4 는 마지막 DWORD (beta[5])를 UBYTE4 라고 해석하는 것을 나타내고 있다.

마지막 베타는, 위치 포맷내의 베타의 수는 아니고, D3DRS_VERTEXBLEND 에 의해 정해진다. 예를 들어, D3DRS_VERTEXBLEND 가 D3DVBF_2WEIGHTS 으로 위치 포맷이 위에의와 우리인 경우, 마지막 베타는 beta[2] 가 되어, 이것이 4 바이트 인덱스로 DWORD 로서 사용된다.

D3DFVF_TEXCOUNT_SHIFT정점의 텍스처 좌표수를 식별하는 정수값을 몇 비트분 쉬프트 하는지를 나타내는 수. 이 값은, 예를 들어 다음과 같이 사용한다.
DWORD dwNumTextures = 1;  // Vertex has only one set of coordinates.

// Shift the value for use when creating an FVF combination.
dwFVF = dwNumTextures << D3DFVF_TEXCOUNT_SHIFT;

// Now, create an FVF combination using the shifted value.

자주(잘) 사용되는 플래그의 편성예를 다음에 나타낸다.

// Untransformed vertex for lit, untextured, Gouraud-shaded content.
dwFVF = ( D3DFVF_XYZ | D3DFVF_DIFFUSE );
// Untransformed vertex for unlit, untextured, Gouraud-shaded 
//   content with diffuse material color specified per vertex.
dwFVF = ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE );
// Untransformed vertex for light-map-based lighting.
dwFVF = ( D3DFVF_XYZ | D3DFVF_TEX2 );
// Transformed vertex for light-map-based lighting with shared rhw.
dwFVF = ( D3DFVF_XYZRHW | D3DFVF_TEX2 );
// Heavyweight vertex for unlit, colored content with two 
// sets of texture coordinates.
dwFVF = ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | 
          D3DFVF_SPECULAR | D3DFVF_TEX2 );

정수 정보

헤더d3d9types.h
최저한의 operating systemWindows 98

관련 항목


'DirectX 3D > DirectX9' 카테고리의 다른 글

14. D3DFORMAT 열거형  (0) 2016.08.21
13. D3DPOOL 열거형  (0) 2016.08.21
11. D3DUSAGE 열거형  (0) 2016.08.21
10. D3DXMatrixPerspectiveFovLH 함수  (0) 2016.08.11
9. IDirect3DDevice9::SetFVF 메서드  (0) 2016.08.11
Posted by 멜데스
DirectX 3D/DirectX92016. 8. 21. 01:49

D3DUSAGE


리소스의 사용법을 지정하는 옵션. 다음 표에, 각 리소스 타입의 사용법을 정리한다. 2 번째의 표에, 각 리소스 타입으로 이용할 수 있는 사용법을 나타낸다.

사용법

#define설명
D3DUSAGE_AUTOGENMIPMAP리소스는, 밉맵을 자동 생성한다. 「밉맵의 자동 생성」을 참조할것. 밉맵의 자동 생성은, 볼륨 텍스처 및 스텐실 표면/텍스처에서는 지원하지 않는다.

이 사용법은, 시스템 메모리 (D3DPOOL_SYSTEMMEM) 내의 리소스에 대해서는 유효하지 않다.

D3DUSAGE_DEPTHSTENCIL리소스는, 스텐실 버퍼이다. D3DUSAGE_DEPTHSTENCIL 는, D3DPOOL_DEFAULT 와 동시에 사용한다.
D3DUSAGE_DMAP리소스는, 디스플레이스먼트 맵이다.
D3DUSAGE_DONOTCLIP정점 버퍼의 내용이 결코 클리핑을 요구하지 않는 것을 나타낸다. 이 플래그가 설정된 버퍼를 사용해 렌더링 하는 경우는, D3DRS_CLIPPING 렌더링 스테이트가 FALSE 로 설정되지 않으면 안 된다.
D3DUSAGE_DYNAMIC

정점 버퍼가 동적인 메모리의 사용을 필요로 하는 것을 나타낸다. 버퍼의 배치 장소를 드라이버를 결정될 수 있으므로, 드라이버에 있어 유용하다. 일반적으로, 정적인 정점 버퍼는 비디오 메모리에 배치되어 동적인 정점 버퍼는 AGP (Accelerated Graphics Port) 메모리에 배치된다. 그 밖에 정적인 사용법은 없기 때문에 주의 해야 한다. D3DUSAGE_DYNAMIC 를 지정하고 있지 않는 경우는, 정적인 정점 버퍼가 생성 된다. D3DUSAGE_DYNAMIC 는, D3DLOCK_DISCARD 및 D3DLOCK_NOOVERWRITE 잠금 플래그에 의해 엄밀하게 강제당한다. 그 결과, D3DLOCK_DISCARD 및 D3DLOCK_NOOVERWRITE 는, D3DUSAGE_DYNAMIC 로 생성 된 정점 버퍼에 대해서만 유효가 된다. 이러한 플래그는, 정적인 정점 버퍼에 대해서는 유효하지 않다. 더 자세한 정보는, 「리소스의 관리」를 참조할것.

동적인 정점 버퍼의 사용법의 더 자세한 정보는, 「퍼포먼스의 최적화」를 참조할것.

D3DUSAGE_DYNAMIC 와 D3DPOOL_MANAGED 는 호환성이 없기 때문에, 동시에는 사용할 수 없다. 「D3DPOOL 」를 참조할것.

텍스처에서는, D3DUSAGE_DYNAMIC 를 지정할 수 있다. 다만, 관리되는 텍스처에서는 D3DUSAGE_DYNAMIC 를 사용할 수 없다. 동적 텍스처의 더 자세한 정보는, 「동적 텍스처의 사용법」을 참조할것.

D3DUSAGE_NPATCHESN 패치의 드로잉(Drawing)에 정점 버퍼를 사용할 때에 설정한다.
D3DUSAGE_POINTS포인트의 드로잉(Drawing)에 정점 버퍼를 사용할 때에 설정한다.
D3DUSAGE_RENDERTARGET리소스는, 렌더링 타겟이다. D3DUSAGE_RENDERTARGET 는, D3DPOOL_DEFAULT 와 동시에 사용한다.
D3DUSAGE_RTPATCHES고차원 기본도형의 드로잉(Drawing)에 정점 버퍼를 사용할 때에 설정한다.
D3DUSAGE_SOFTWAREPROCESSING이 플래그를 사용하면 정점 처리가 소프트웨어로 행해진다. 이 플래그를 사용하지 않는 경우는, 정점 처리가 하드웨어로 행해진다.

D3DUSAGE_SOFTWAREPROCESSING 은, 소프트웨어 정점 처리로 특정의 텍스처 포맷이 정점 텍스처로서 사용할 수 있을지 어떨지를 확인하기 위해서,IDirect3D9::CheckDeviceFormat와 동시에 사용한다. 사용할 수 있는 경우는, 3DPOOL_SCRATCH 로 텍스처를 생성 할 필요가 있다.

D3DUSAGE_WRITEONLY정점 버퍼에의 쓰기 조작 밖에 실행하지 않는 것을 시스템에 알린다. 이 플래그를 사용하는 것으로, 드라이버는 최적인 메모리 영역을 선택해 효율적으로 쓰기 처리나 렌더링을 실행한다. 이 능력을 사용해 생성 된 정점 버퍼로부터의 읽기는 실패한다. D3DUAGE_WRITEONLY 를 지정하지 않는 D3DPOOL_DEFAULT 를 사용해 생성 한 버퍼는, 퍼포먼스의 대폭적인 저하를 가져올 가능성이 있다.

사용법과 풀의 편성

특정의 풀 타입에 대해서, 특정의 사용법을 사용할 수 있다. 더 자세한 정보는, 「D3DPOOL 」를 참조할것.

사용법과 리소스의 편성

사용법은, 리소스를 생성 할 경우에 지정하는지, 기존의 리소스의 능력을 테스트할 경우에 CheckDeviceFormat 를 사용해 지정한다. 이 표는, 각각의 리소스 타입에 적용 가능한 사용법을 나타내고 있다.

사용법정점 버퍼 생성인덱스 버퍼 생성텍스처 생성큐브 텍스처 생성볼륨 텍스처 생성표면 생성장치 포맷 체크
D3DUSAGE_AUTOGENMIPMAPxxx
D3DUSAGE_DEPTHSTENCILxxxx
D3DUSAGE_DMAPxx
D3DUSAGE_DONOTCLIPxx
D3DUSAGE_DYNAMICxxxxxx
D3DUSAGE_NPATCHESxx
D3DUSAGE_POINTSxx
D3DUSAGE_RTPATCHESxx
D3DUSAGE_RENDERTARGETxxxx
D3DUSAGE_SOFTWAREPROCESSINGxxxxxx
D3DUSAGE_WRITEONLYxx

하드웨어가 이러한 사용법을 지원 하고 있을지 어떨지를 체크하려면 ,IDirect3D9::CheckDeviceFormat 를 사용하는 것.

이하에 리소스 생성 메서드를 나타낸다.

풀 타입의 더 자세한 정보는, 「D3DPOOL 」를 참조할것.

정수 정보

헤더d3d9types.h
최저한의 operating systemWindows 98

관련 항목


'DirectX 3D > DirectX9' 카테고리의 다른 글

13. D3DPOOL 열거형  (0) 2016.08.21
12. D3DFVF 열거형  (0) 2016.08.21
10. D3DXMatrixPerspectiveFovLH 함수  (0) 2016.08.11
9. IDirect3DDevice9::SetFVF 메서드  (0) 2016.08.11
8. IDirect3DDevice9::SetIndices 메서드  (0) 2016.08.11
Posted by 멜데스