그래서 최근에 나는 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에서 매핑, 쓰기, 매핑 해제 및 그릴 수있는 비트 맵?