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です。