2013-02-09 4 views
0

그래서 최근에 나는 Direct2D의 새 버전을 사용하기 위해 작성한 간단한 테스트 응용 프로그램을 변환했다. 이는 기본적으로 the Direct2D Quickstart for Windows 8의 관련 부분을 복사했다는 것을 의미합니다. 그 이전과 그 내 응용 프로그램이 행동, 일ID2D1Bitmap1 ::지도 언제 사용할 수 있습니까?

이전에는 비트 맵을 업데이트하기 위해, 나는 다음을 수행했다 (단지 픽셀의 무리를 그립니다.) :

for(int i = 0; i < 1000; ++i) 
{ 
    int x = rand()%600; 
    int y = rand()%600; 
    int index = 4 * (x + (y * 600)); 
    imageData[index] = rand()%256; 
    imageData[index+2] = 0; 
} 

D2D1_RECT_U rect2 = RectU(0,0,600,600); 
pBitmap->CopyFromMemory(&rect2, imageData, 600*4); 

을 imageData의 단지입니다 :

imageData = new byte[600*600*4]; 

은 여전히 ​​작동,하지만 난 내 빛나는 새로운 ID2D1Bitmap1 인터페이스에이 멋진지도 방법을 가지고 있기 때문에 나는 그 CPU 측 배열을 제거하고 같은 것을 할 얻을 수있는 생각 :

,369을
D2D1_MAPPED_RECT* mapped = NULL; 
ThrowIfFailed(pBitmap->Map(D2D1_MAP_OPTIONS_WRITE, mapped)); 

for(int i = 0; i < 1000; ++i) 
{ 
    int x = rand()%600; 
    int y = rand()%600; 
    int index = 4 * (x + (y * 600)); 
    mapped->bits[index] = rand()%256; 
    mapped->bits[index+2] = 0; 
} 

ThrowIfFailed(pBitmap->Unmap()); 

이 1,363,210지도에 대한 호출에 CreateBitmap 및 D2D1_MAP_OPTIONS에 전달 된 D2D1_BITMAP_PROPERTIES1에 D2D1_BITMAP_OPTIONS의 다양한 조합을 사용하여, E_INVALIDARG 때마다 함께지도에 대한 호출에 실패했습니다. 는 3 가지 옵션 (READ는, DISCARD 쓰기) 중 어느 것도 실제로 내가 Direct2D의 컨텍스트로 만들 비트 맵에 사용할 수 없습니다 것으로 표시 D2D1_MAP_OPTIONS enumeration의 설명을 보면

... 내가 어떻게합니까

, Direct2D에서 매핑, 쓰기, 매핑 해제 및 그릴 수있는 비트 맵?

답변

1

문제는 매핑 된 포인터가 널 포인터가 아니어야한다는 것입니다. 다음 코드에 따라 코드를 변경하는 것이 좋습니다.

D2D1_MAPPED_RECT mapped;

ThrowIfFailed (pBitmap-> Map (D2D1_MAP_OPTIONS_WRITE, & mapped));

0

최근에 나는 이것을 파고 똑같은 문제에 직면했다. 내가 아는 한 D2D 비트 맵은 CPU 작성을 위해 잠글 수 없습니다. D2D로 쓰기와 CPU로 읽기 모두 비트 맵을 생성 할 수 없다.

그리고 난 & CPU와 D2D API와 몇 가지 바이트 배열을 작성하고 싶습니다. 하지만 불행히도 나는 다른 bitmapOptions으로 만든 2 비트 맵을 사용해야합니다. 먼저 D2D API에 대한 적합하고 컨텍스트 대상을 렌더링 할 수

props.bitmapOptions = D2D1_BITMAP_OPTIONS_CANNOT_DRAW | D2D1_BITMAP_OPTIONS_TARGET; 

초는 CPU

props.bitmapOptions = D2D1_BITMAP_OPTIONS_CANNOT_DRAW | D2D1_BITMAP_OPTIONS_CPU_READ; 

및 사용 시나리오와 함께 읽을 수있는 것은 (첫 번째, 두 번째에서 데이터를 얻을 수 ID2D1Bitmap1::CopyFromBitmap를 사용하는 프리미티브 렌더링 "입니다 지도 /지도 해제 포함) "

관련 문제