본문 바로가기

프로그래밍/공부관련

[D3D] CreateTexture

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