2008/07/08 11:16

[D3DX] ID3DXBuffer

D3DXLoadMeshFromX(....)를 호출하면 여러가지 정보를 프로그래머에게 넘겨주는데
이때 사용하는것이 ID3DXBuffer 이다

x파일로부터 메쉬를 읽어들일때, 그 메쉬의 메터리얼정보나 인접삼각형 정보까지 넘어오는데 이
정보들이 ID3DXBuffer 로 넘어온다.
ID3DXBuffer에 속한 버퍼의 타입이 결정되어있지 않으므로 명시적으로 타입을 정해야한다

받아올때 다음과같이 받아오면된다

매터리얼 정보를 받아온다고할때

ID3DXBuffer *buffer;
D3DXLoadMeshFromX( , , , ,&buffer , ) //다른 인수에대한 설명은 생략.
D3DXMATERIAL *mtrls = (D3DXMATERIAL *)(buffer -> GetBufferPointer());
mtrls[0].MatD3D // D3DMATERIAL9 구조체에 접근
mtrsl[0].pTextureFileName // 텍스쳐파일명(문자열)에 접근

이렇게 하면된다.

ID3DXBuffer 의 GetBufferPointer() 메서드는 ID3DXBuffer 가 관리하고있는 버퍼의 첫번째 메모리 블록주소를 리턴한다. 이것을 D3DXMATERIAL * 로 형변환을 하게되면 버퍼(배열)에 접근할때 오프셋이 달라지는효과가 나는것이다 D3DXMATERIAL 의 크기를 72바이트라고 가정할때, mtrls[0], mtrls[1] 둘의 메모리 블락수 차이는 72 가 되는 것이다. 즉 mtrls[1] 은 mtrls[0] 이 존재하는 메모리보다 72 블락 뒤에 있다는것이다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 0