ID3DXSprite的问题……
为啥在ID3DXSprite->Begin()的时候会有问题啊?Game.exe 中的 0x004011c0 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
这究竟是什么问题啊囧……
void Render() {
if (g_pD3DDevice->Clear(NULL, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0, 0) == S_OK){
if (SUCCEEDED(g_pD3DDevice->BeginScene())) {
sprite->Begin(D3DXSPRITE_ALPHABLEND);
// TODO : Add scene rendering code here.
sprite->End();
g_pD3DDevice->EndScene();
g_pD3DDevice->Present(NULL, NULL, NULL, NULL);
}
}
}
HRESULT InitializeGraphics(HWND hWnd) {
HRESULT hr;
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
if (windowed) {
d3dpp.Windowed = TRUE;
}
else {
D3DDISPLAYMODE d3ddm;
g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
d3dpp.BackBufferCount = 1;
d3dpp.BackBufferFormat = d3ddm.Format;
d3dpp.BackBufferWidth = screenwidth;
d3dpp.BackBufferHeight = screenheight;
d3dpp.Windowed = FALSE;
}
hr = g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pD3DDevice);
if (hr == S_OK) {
g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
g_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
g_pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
g_pD3DDevice->SetRenderState(D3DRS_BLENDOPALPHA, D3DBLENDOP_ADD);
g_pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
g_pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
}
return hr;
}
话说没有看到 sprite 的初始化 = =
hr = D3DXCreateSprite(g_pD3DDevice, &sprite);
页:
[1]