2017-02-02 1 views
0

Direct2D에서 비트 맵을 그리는 데 문제가 있습니다. HWNDRenderTarget::DrawBitmap 함수를 사용할 때마다 액세스 위반이 발생합니다 (코드 0xc0000005). 여기에 문제가 있습니다.액세스 위반 (Direct2D HWNDRenderTarget :: DrawBitmap() 함수)

void Graphics::game() { 

     mprendertarget->Clear(D2D1::ColorF(D2D1::ColorF::Black)); 
     if (rot > 360) { 
      rot = 0; 
     } 
     if (rot2 > 360) { 
      rot2 = 0; 
     } 
     if (GetKeyState(VK_LEFT)) { 
      rot--; 
     } 

     if (GetKeyState(VK_RIGHT)) { 
      rot++; 
     } 
     D2D1_RECT_F debugarenatextrect = {0.0f, 0.0f, 1000.0f, 6000.0f}; 
     mprendertarget->DrawTextA(P_GAME_DEBUG_ARENATEXT, wcslen(P_GAME_DEBUG_ARENATEXT), mpgenerictextformat, debugarenatextrect, mpsolidbrush, D2D1_DRAW_TEXT_OPTIONS_NONE, DWRITE_MEASURING_MODE_NATURAL); 

     const D2D1_RECT_F shipimagerect = RectF(0.0f,0.0f,29.0f,29.0f); 
     mprendertarget->SetTransform(D2D1::Matrix3x2F::Rotation(rot, D2D1::Point2F(29/2, 29/2))); 
     //Access Violation! V 
     mprendertarget->DrawBitmap(ship, RectF(0.f, 0.f, 29.f, 29.f), 1.0f, D2D1_BITMAP_INTERPOLATION_MODE_LINEAR, RectF(0.f, 0.f, 29.f, 29.f)); 
    } 

이상적으로는 왼쪽 화살표를 누르면 rot (회전) 감소하고 오른쪽 화살표 키를 누르면 rot을 증가하기로했다. 그런 다음, 작은 이미지 (29x29)의 배를 표시합니다 (rot도). P_GAME_DEBUG_ARENATEXT은 WCHAR * 문자열이며 문제와 관련이 없습니다. mprendertarget은 ID2D1HwndRenderTarget 유형입니다.

답변

0

선박 이미지를 NULL로 다시 작성하는 함수가 있음이 드러났습니다. 내가 그것을 삭제하고 더 이상 액세스 위반이 없습니다.