2010-05-02 14 views
2

새로운 Direct2D Windows 라이브러리에 액세스하기위한 함수 라이브러리를 직접 작성했습니다. 특히 ID2D1Bitmap 인터페이스에 대한 작업을 해왔습니다. 비트 맵 데이터의 시작 부분에 포인터를 반환하는 함수를 작성하고 싶습니다. 특정 픽셀을 편집하거나 사용자 정의 인코딩을 사용하거나 향후에 내가 원하는 것이 무엇이든간에. 불행히도 ... 문제가 있습니다 ...Windows 프로그래밍 : ID2D1 비트 맵 인터페이스 - 비트 맵 데이터 얻기

ID2D1Bitmap 인터페이스에서 원시 픽셀 데이터에 액세스하는 방법을 찾지 못하는 것 같습니다.

누구나 액세스 권한을 갖고 있습니까? 내 친구들 중 한 명은 비트 맵을 표면에 그려서 거기에서 비트 맵 데이터를 추출 할 것을 제안했습니다. 이것이 효과가 있는지 나는 모른다. 확실히 비효율적 인 것으로 보이고 어떤 종류의 표면을 사용해야할지 몰랐습니다.

도움을 주시면 감사하겠습니다. (C++은 특히 그렇지만 코드가 언어마다 다를 수 있다고 가정)

(필자는 파일에서 직접 데이터를 읽을 수는 있지만 WIC 디코더를 사용하고 있습니다. 임의의 수의 판독 할 수없는 형식이어야 함)

답변

0

WIC 디코더를 사용하고 있으므로 IWICBitmap::Lock을 직접 사용하여 비트 맵 데이터를 가져와야합니다.

1

일반적으로 ID2D1Bitmap 데이터에 액세스 할 수 없습니다. GPU 전용 데이터라고 생각하십시오. 그러나 일부 제한 사항으로 인해 비트 맵이 생성 된 방식에 따라 다른 인터페이스를 사용하여 데이터에 액세스 할 수 있습니다.

비트 맵이 IWICBitmap으로 백업되었으므로 Lock을 사용합니다. [(Bigger example: How to Modify the Pixels of a Bitmap Source)]

ID3D11Texture2D으로 비트 맵을 지원하는 경우 Map을 사용합니다.

IDXGISurface의 경우 GetDC을 사용할 수 있습니다.