IDirect3DDevice9::CreateVertexBuffer
정점 버퍼를 생성한다.
Length - [in] 버퍼에 할당할 바이트 수, 8개의 정점을 보관하고 싶다면 8 * sizeof(struct vertex)로 크기를 조정한다.
정점버퍼의 크기, (ex) 한 정점에 들어가는 바이트 수가 들어 있는 변수 offset에 4를 곱하면 정점 4개에 필요한 메모리 크기가 된다.
Usage - [in] 버퍼가 이용되는 방법을 결정하는 특성을 지정
- D3DUSAGE_DYNAMIC - 동적 버퍼 설정
- D3DUSAGE_POINTS - 버퍼가 포인트 기본형으로 설정 (용책 14장 파티클 시스템), 정점 버퍼에서만 이용가능
- D3DUSAGE_SOFTWAREPROCESSING - 정점 프로세싱을 소프트웨어로 처리
- D3DUSAGE_WRITEONLY - 버퍼에 쓰기만을 수행할 것임을 설정, 드라이버가 쓰기 작업에 최적화된 메모리 위치로 버퍼를 이동, 이 버퍼를 읽으려 하면 오류 발생
FVF - [in] 정점 버퍼에 보관될 FVF
Pool - [in] 정점 버퍼가 저장될 메모리의 위치(그래픽 카드, 시스템 메모리)와 관리방식 지정
- D3DPOOL_MANAGED : D3D가 알아서 관리해주는 메모리 풀 사용하겠다
ppVertexBuffer - [out, return value] 반환된 정점 버퍼를 받을 포인터
pHandle - [in] 사용 안한다, 항상 NULL로 설정한다
생성된 정점 버퍼는 쓰레기 값으로 가득 차있다. 정점 버퍼에 값을 넣어주어야 하는데 정점 버퍼의 주소값이 필요하다.
이 때 Lock() 함수로 해당 메모리의 주소를 얻어야 한다.
주의 : 정점 버퍼의 해제는 D3D 디바이스 해제 이전에 이루어져야 한다. 정점 버퍼는 D3D 디바이스를 통해 생성되었기 때문이다
IDirect3DVertexBuffer9::Lock
정점 데이터의 범위를 잠그어, 정점 버퍼 메모리의 포인터를 얻어온다.
(쓰레드의 Lock()을 생각하면 된다. 다른 자원에선 접근이 불가능하다)
이후 획득한 메모리 포인터에 선언한 정점을 memcpy()로 복사한다.
다 끝난 이후엔 Unlock()으로 버퍼 잠금을 해제한다
gpgstudy.com/forum/viewtopic.php?t=5173
버텍스 버퍼에 lock / unlock 은 왜 매번 거는거죠? - GpgStudy 포럼
2D, 3D, 다각형, 픽셀 등 게임의 그래픽 프로그래밍에 관한 포럼입니다. 운영자: 류광 비회원 전체글 글쓴이: 비회원 » 2005-02-23 03:39 음.... 안녕하세요^_^ (일단 인사부터 ^^ ; ) 예전부터 궁금하던것�
gpgstudy.com
IDirect3DDevice9::CreateVertexBuffer
인덱스 버퍼를 생성한다
sizeof(short) * 6 : 인덱스 버퍼의 크기(바이트 수), 16비트 인덱스를 6개 사용하겠다
0 : 특별한 용도로 사용하는건 아니다
D3DFMT_INDEX16 : 각 색인은 16비트이다
D3DPOOL_MANAGED : D3D가 알아서 관리해주는 메모리 풀을 사용하겠다
gpFullscreenQuadIB : 새로 생성된 인덱스 버퍼를 저장할 포인터
NULL : 반드시 NULL이어야 한다
버텍스 버퍼 3편[사용]
전편에서 정점 버퍼를 생성했으니 이제 값을 넣어야 한다. 정점 버퍼를 생성하고 정점값을 채워넣는다. 정점 버퍼란 기본적으로 정점 정보를 갖고 있는 메모리 블록이다. 정점 버퍼를 생성한 다
hanjuho.tistory.com
Direct 인덱스 버퍼 초기화 ( Index Buffer )
인덱스와 버텍스의 기본은 2013/11/12 - [Direct 3D 9/기초 용어] - Direct 기본 용어 정리 Vertex 와 Index | Polygon 정점(Vertex) 초기화는 2013/12/09 - [Direct 3D 9/초기화] - Direct 정점 버퍼 초기화 새로..
openhead.tistory.com
'그래픽스 > Dx 9' 카테고리의 다른 글
Direct X - 정점 선언 (0) | 2020.09.16 |
---|---|
Direct X 9 - 셰이더(Effect) (0) | 2020.09.16 |
Direct X 9 - 함수 (0) | 2020.09.15 |