티스토리 뷰

DirectX

D3DPOOL

따분한놈 2014. 7. 22. 12:17

출처 : http://moople.tistory.com/100

  1. 메모리
  2. 공간을 미리 할당하고 , 동적할당 요청시 할당된 공간에서 사이즈만큼 준다. , 메모리 관리 매니저로 있다.
  • new delete 경우 내부적으로 콜백 함수가 호출되는데, 이는 부하를 발생 시킨다.그래서, 미리 공간을 할당 받아서 콜백 함수를 번만 호출시켜 부하를 막아서 퍼포먼스를 높인다.
  • D3DPOOL
    • 열거형으로 D3D 리소스 자원들을 여러 종류의 메모리 풀에 저장한다.
    • 정점들을 보관하기 위한 용도로 메모리 풀을 사용한다.
    • 리소스의 타입과 이용방식에 적합한 리소스들을 메모리에 보관하도록 D3D에게 요청한다.
      • 비디모 메모리, AGP메모리, 시스템 메모리 등
    • 특징
      1. GPU는 비디모메모리에서 바로 사용이 가능하다. 시스템 메모리에 접근이 어렵다.
        • 그래서 GPU는 AGP메모리에 접근하여 사용한다.
      2. CPU는 비디오메모리에서 바로 사용이 불가능하다. 시스템 메모리에 접근이 쉽다.

# AGP메모리

  • 예약을 하고 사용하는 메모리이다.
  • 갱신이 빠르다.
  • 물리적 장치가 아니다.
  • 속성
    1. D3DPOOL_DEFAULT
      • 단순한 출력 용도에 적합하다.
      • 메모리 풀이 비디오 메모리에 바로 생성된다. ( 메모리가 부족하면 AGP 할당 )

메모리가 부족하면 풀을 생성할 때 오류를 뱉는다.

  • 따로 백업본이 없기 때문에 디바이스 리셋시 더이상 유효하지 않는 디바이스가 된다.
  • 비디오메모리가 부족하면 풀 생성이 안되는 경우가 생긴다.
  • , 용도에 따라 잘 선택해서 생성해야 한다.
  • Lock()을 하면 임시로 시스템메모리에 할당하고 그 포인터를 반환한다. ( 많은 시간 )
  • Unlock()을 하면 적절한 시점에 DMA를 통해 비디오메모리로 전송한다. ( 많은 시간 )
  • 읽어내는 것 보다 쓰는 작업에 더 적합하여 인덱스/버텍스 버퍼에 주로 쓰인다.

 

  1. D3DPOOL_MANAGED
    • 메모리 풀이 시스템 메모리에 백업되고 필요시 비디오 메모리에 로드 된다.
    • 주로 읽기전용, 정적 버퍼로 사용하기에 좋다.
  2. D3DLOCK_DISCARD
    • 드라이버가 잡고있는 풀을 놔두고 같은 크기의 새로운 풀을 생성하여 갱신이 가능하게 한다.
  3. D3DLOCK_NOOVERWRITE
    • 드라이버가 잡고있는 풀을 갱신하지 않겠다는 플래그이다.

 

'DirectX' 카테고리의 다른 글

디바이스 로스트  (0) 2014.11.27
렌더타겟텍스쳐에 Lock을 걸때  (0) 2014.11.13
셰이더 컴파일  (0) 2014.07.31
D3DXVec3CatmullRom  (0) 2014.07.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함