블로그 이미지
자신의 단점을 메꾸는 것을 단(鍛)이라 하고 자신의 강점을 갈고 닦는 것을 련(鍊)이라 하여, 두가지를 합친 것을 단련이라고 부른다. 붕대마음

카테고리

전체목록 (666)
참고사이트 (8)
Goal (4)
Travel (10)
My Life (104)
Game (35)
Game Review (7)
Game Plan (0)
Books (5)
English (1)
Optimizing (12)
Study (218)
유용한 것들_etc (44)
유용한 것들_func (20)
Unity (48)
Unreal (87)
작업장 (54)
RenderMonkey (6)
정리요망 (1)
따라잡기 시리즈 (0)
링크용 (0)
Total343,311
Today3
Yesterday91

'pure device'에 해당되는 글 1건

  1. 2010.08.24 DirectX SDK 9.0c 의 Pure Device 에 대한 보고
출처 : http://www.tomatowax.com/ZeroboardXE/6856

1. DirectX SDK Direct3D Device 의 생성시 사용될 수 있는 PURE DEVICE Option Flag

D3DCREATE_PUREDEVICE
Specifies that Direct3D does not support Get* calls for anything that can be stored in state blocks. It also tells Direct3D not to provide any emulation services for vertex processing. This means that if the device does not support vertex processing, then the application can use only post-transformed vertices.

위의 D3DCREATE_PUREDEVICE 플래그의 기본 설명입니다. 많은 분들이 Pure Device 의 역할에 대해 궁금해 하실텐데, 검색을 해보시거나 Reference 를 보신 분들이라면 기본적으로 알고 계실 내용입니다.

D3DCREATE_PUREDEVICE 는 Get* 함수 시리즈를 사용할 수 없다.

네, Pure Device 는 말그대로 '순수 디바이스 만' 이라는 의미로써, 주로 Debug 시에 사용될 수 있는 (뭐 사용하기 나름이겠지만서도..) Get* 함수 시리즈들을 비활성화 시키는 플래그 입니다. 이렇게 함으로써 D3D 장치는 Get* 함수 시리즈를 위해 매번 저장해두는 내역이 없으므로, 더 빠른 State 의 변화를 할 수 있습니다. 이것이 Pure Device 가 갖는 특성입니다. Pure Device 는 장치가 지원해야만 사용할 수 있는 플래그 입니다.


2. Pure Device 는 속도가 빠르다 ??

기본 설명에 의하면 Pure Device 는 일반 Device 보다 더욱 빠른 속도를 지원한다고 합니다. 정확히 말해 '빠르거나 같거나' 입니다. 즉, 느려지는 경우에 대해서는 언급하지 않고, '빠를 수' 있다고 합니다. 그런데 제가 얼마전 작업을 하면서 일반 Windows 환경에서 Pure Device 옵션을 준 Device 가 더 느리게 작동하고 있는 것을 발견하였습니다. 이에 대해서는 '뭐 무슨 옵션을 안켜서 그렇다, D3D 가 Debug 버전이라서 그렇다' 등등 이견들이 붙을 수 있겠으나, 일단 제가 항상 작업해오던 상황에서 이런 결과는 조금 저를 놀라게 하였습니다. 제법 많이 느렸기 때문입니다. 이에 대해 Pure Device 의 속도에 대한 언급을 찾아보았습니다.

링크 : http://www.gamedev.net/community/forums/topic.asp?topic_id=512074

내용 : (생략) As with all performance issues, the only way to know whether or not your application will perform better with a pure device is to compare your application's performance with a pure vs. non-pure device. A pure device has the potential to speed up an application by reducing the CPU overhead of the API. But be careful! For some scenarios, a pure device will slow down your application (due to the additional CPU work caused by redundant state changes). If you are not sure which type of device will work best for your application, and you do not filter redundant changes in the application, use a non-pure device. (생략)

중간에 이러한 내용이 나오는데, 간단하게 말하자면 Pure Device 는 상황에 따라 느려질 수 있다- 라고 합니다. 물론 공식적인 MS 의 언급은 검색 결과에서 찾아내지 못하였기 때문에, 이렇게 '누군가'의 언급을 인용합니다.

일단 제가 아주 오래전 작업시에는 Pure Device 가 더 빠른 것을 확인하고 프레임 워크를 구성하였기 때문에 아무런 의심조차 하지 않았습니다. 때문에 최근의 결과가 조금 놀라웠는데, 제 나름대로 추측을 하기에는 이렇습니다. 제가 그 당시 다른 3D 를 이용하는 Application 을 켜두고 있었는데, 해당 Application 의 CPU 점유율이 제법 높았습니다. 이에 대해서 저는 Pure Device 가 외부에 다른 Application 으로 하여금 CPU 가 느려진 상태거나, 혹은 다른 Application 이 3D Graphics Device 를 사용하고 있으면- 속도가 일반 장치보다 느린게 아닐까- 하는 생각이 듭니다.
Posted by 붕대마음

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함