Device->CreateTexture(Width, Height, 0, 0, Format, D3DPOOL_MANAGED, pTexture, NULL);
D3DPOOL_DEFAULT비디오 메모리에 생성되지만 메모리가 부족하면 시스템 메모리에 올라온다. 그리고, 디바이스 로스트가 발생하면 일일이 처리해줘야한다.Lock과 UnLock 사용을 할 수가 없어 Locked Rect를 써서 각 픽셀값을 바꿔줄 수 없다.단 Device->StrechRect() 함수를 통해 원본 이미지의 확대 축소를 새로운 서피스에 복사할 수 있다. (Device->ColorFill()은 색상 지정)그리고, Device->UpdateSurface()를 통해 시스템 메모리에 있는 서피스를 생성된 서피스에 올릴수 있다.
D3DPOOL_MANAGED
시스템 메모리에 생성하고 사용할 땐 알아서 비디오 메모리로 올려준다. 말 그대로 관리하겠다는 것이다.Lock과 UnLock 사용해서 해당 픽셀값을 바꿔줄 수 있으나 비추. Lock을 하면 Locked_Rect의 void* 형의 메모리를 해당 사각형크기만큼 메모리를 생성하고 카피하고 조작하고 다시 원본에 반영한다. 한마디로 무거운 작업이다.디바이스 로스트가 발생할 경우 자동복구되기 때문에 가장 애용하는 옵션이기도 하다. pTexture->PreLoad()함수에 의해 비디오메모리로 강제 올리기를 할 수도 있다.
3DPOOL_SYSTEMMEM
시스템 메모리에 만들겠다고 선언한다.
Device->UpdateSurface()로 생성된 서피스를 비디오 메모리에 올릴 수 있으며, Device->UpdateTexture()로 3DPOOL_DEFAULT로 생성된 다른 텍스쳐에 복사할 수 있다[출처] CreateTexture|작성자 힐좀주셈
'프로그래밍 > 공부관련' 카테고리의 다른 글
오일러 각 (0) | 2010.04.16 |
---|---|
CFileDialog를 사용하여 경로만 가져오는 방법 (0) | 2010.03.23 |
[D3D] Texture Splatting 텍스쳐 스플래팅 (0) | 2010.03.22 |
CString -> char * (0) | 2010.03.21 |
[mfc] 휠........ (0) | 2010.03.13 |