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 유형입니다.