Directx приложение перезагружает комп
Был взят код sample'а из DirectX SDK 9.0 (summer 03) а именно этот DX9SDK\Samples\C++\Direct3D\Tutorials\Tut02_Vertices
и модифицирован следующим образом:
добавлен переход в полноэкранный режим:
Цитата:
D3DDISPLAYMODE d3ddm;
if( FAILED( g_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &d3ddm ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.BackBufferWidth = d3ddm.Width;
d3dpp.BackBufferHeight = d3ddm.Height;
d3dpp.BackBufferCount = 3;
d3dpp.FullScreen_RefreshRateInHz = d3ddm.RefreshRate;
d3dpp.Windowed = false;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = d3ddm.Format;
if( FAILED( g_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &d3ddm ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.BackBufferWidth = d3ddm.Width;
d3dpp.BackBufferHeight = d3ddm.Height;
d3dpp.BackBufferCount = 3;
d3dpp.FullScreen_RefreshRateInHz = d3ddm.RefreshRate;
d3dpp.Windowed = false;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = d3ddm.Format;
в соответствии с чем изменены параметры создаваемого окна:
Цитата:
WNDCLASS wc;
wc.hInstance = hInst;
wc.lpszClassName = "D3D Tutorial";
wc.lpfnWndProc = MsgProc;
wc.style = 0;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.lpszMenuName = NULL;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
RegisterClass( &wc );
HWND hWnd = CreateWindowEx( WS_EX_TOPMOST,"D3D Tutorial","1st laba",WS_POPUP,0, 0,1024,768,NULL,NULL,hInst,NULL );
wc.hInstance = hInst;
wc.lpszClassName = "D3D Tutorial";
wc.lpfnWndProc = MsgProc;
wc.style = 0;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.lpszMenuName = NULL;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
RegisterClass( &wc );
HWND hWnd = CreateWindowEx( WS_EX_TOPMOST,"D3D Tutorial","1st laba",WS_POPUP,0, 0,1024,768,NULL,NULL,hInst,NULL );
и немного изменен вертексбуффер:
Цитата:
CUSTOMVERTEX g_Vertices[] =
{
{ 300.0f, 100.0f, 0.5f, 1.0f, 0x4A2DF0, },
{ 300.0f, 150.0f, 0.5f, 1.0f, 0x4A2DF0, },
{ 150.0f, 150.0f, 0.5f, 1.0f, 0x4A2DF0, },
{ 300.0f, 100.0f, 0.5f, 1.0f, 0x4A2DF0, },
{ 150.0f, 150.0f, 0.5f, 1.0f, 0x4A2DF0, },
{ 150.0f, 100.0f, 0.5f, 1.0f, 0x4A2DF0, },
};
{
{ 300.0f, 100.0f, 0.5f, 1.0f, 0x4A2DF0, },
{ 300.0f, 150.0f, 0.5f, 1.0f, 0x4A2DF0, },
{ 150.0f, 150.0f, 0.5f, 1.0f, 0x4A2DF0, },
{ 300.0f, 100.0f, 0.5f, 1.0f, 0x4A2DF0, },
{ 150.0f, 150.0f, 0.5f, 1.0f, 0x4A2DF0, },
{ 150.0f, 100.0f, 0.5f, 1.0f, 0x4A2DF0, },
};
и вот, после недолгой компиляции за запуском приложения следует перезагрузка компа. почему это происходит? шо я здесь такого ужасного натворил??
(cpp в аттаче)
Цитата:
g_pd3dDevice->CreateVertexBuffer( 3*sizeof(CUSTOMVERTEX),
0, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &g_pVB )
0, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &g_pVB )
при наличии 6 вершин в вертексбуфере выделял память для 3х (йа кретинко :) )
но вот почему система это так "критично" воспринимала?!:confused: