2017-02-02 9 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を増やすことになっています。それから、rot度に回転した船の小さな画像(29x29)が表示されます。 P_GAME_DEBUG_ARENATEXTは、問題とは無関係のWCHAR *文字列です。 mprendertargetのタイプはID2D1HwndRenderTargetです。

答えて

0

船の画像をNULLに書き換えた機能があったことが判明しました。私はそれを削除し、それ以上のアクセス違反はありません。