Sign in to follow this  
Followers 0
sevko

DirectX 9 sprite problem after changing window size

0 posts in this topic

Hi. I'm making a minesweeper programme using directx with WinApi to draw the tiles. I've noticed that when i resize the window the sprites resize with it automaticly. So the problem I have is when the difficulty is changed the window size changes accordingly. And after I change the window size it looks like this:
[url="http://shrani.najdi.si/?1j/J5/2CGYvzSA/directxhalfsize.jpg"]http://shrani.najdi....ctxhalfsize.jpg[/url]
This makes sense because of the auto resize with the window resize so I decided I would just reinitialise DirectX so that the changed handle would be used to create the new D3D device. But when i reinitialise it it renders this:
[url="http://shrani.najdi.si/?2m/t3/3eZqOnhn/diectxreinitialise.jpg"]http://shrani.najdi....einitialise.jpg[/url]
Just a black screen. Nor the Render or Initialise directx function return any errors. How could I fix this?

Render function
[CODE]
void Board::Render(){
RECT drawRect;
HRESULT hr=gD3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);
if (FAILED(hr)){
return;
}

hr=gD3dDevice->BeginScene();
if (SUCCEEDED(hr)){
gSprite->Begin(D3DXSPRITE_ALPHABLEND);
for (int i=0;i<Visina[NastavljenaTezavnost];i++)
for (int j=0;j<Sirina[NastavljenaTezavnost];j++){
drawRect.left=Square[i][j].Open*30*Square[i][j].Type;
drawRect.right=drawRect.left+29;
drawRect.top=30*Square[i][j].Status;
drawRect.bottom=drawRect.top+29;
gSprite->Draw(gTexture,&drawRect,NULL,&Square[i][j].Pos,0xFFFFFFFF);
}
gSprite->End();
gD3dDevice->EndScene();
gD3dDevice->Present(NULL,NULL,NULL,NULL);
}
}
[/CODE]

Initialise Direct X function
[CODE]
bool InitialiseDirectX(HWND hWnd)
{
gD3dObject=Direct3DCreate9(D3D_SDK_VERSION);
if (gD3dObject==NULL)
return FALSE;

D3DPRESENT_PARAMETERS presParams;
ZeroMemory(&presParams,sizeof(presParams));
presParams.Windowed=TRUE;
presParams.SwapEffect=D3DSWAPEFFECT_DISCARD;
presParams.BackBufferFormat=D3DFMT_UNKNOWN;
presParams.BackBufferCount=1;

HRESULT hr=gD3dObject->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING, &presParams, &gD3dDevice);
if (FAILED(hr))
{
processing so fall back to software:
hr=gD3dObject->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING, &presParams, &gD3dDevice);
if (FAILED(hr))
return FALSE;
}
return TRUE;
}
[/CODE]

Part of the function where I change the window size according to the difficulty
[CODE]
if(Square[WindowSizeY][WindowSizeX].Type == 10 && Square[WindowSizeY][WindowSizeX].Status!=1)
if(MessageBox(g_hWnd, "Poraz", "LOOLOL", MB_OK)){
CreateBoard();
CreateInstances();
SetWindowPos(g_hWnd, HWND_TOP, 0, 0, (30*g_Board->Sirina[g_Board->NastavljenaTezavnost])+(2*SirinaRoba)+60,
(30*g_Board->Visina[g_Board->NastavljenaTezavnost])+VisinaRoba+VisinaKapsna+120, SWP_NOMOVE | SWP_NOREPOSITION);
SetWindowPos(g_hWnd_junior, HWND_TOP, 0, 0, (30*g_Board->Sirina[g_Board->NastavljenaTezavnost]),
(30*g_Board->Visina[g_Board->NastavljenaTezavnost]), SWP_NOMOVE | SWP_NOREPOSITION);
if (gD3dObject){
gD3dObject->Release();
gD3dObject = NULL;
}
if (gD3dDevice){
gD3dDevice->Release();
gD3dDevice = NULL;
}
InitialiseDirectX(g_hWnd_junior);
}[/CODE]
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0