Ok, I have two problems.
1. I place a sprite that is 1024*768 and it actually doesnt cover the entire screen. There is an excess and it gets cropped out. The image is 1024*768 as well.
2. How would I exactly change from the main menu to another sprite. Do I have to clear it before I change or something?
This is my code:
Code:
LPDIRECT3D9 d3d;
LPDIRECT3DDEVICE9 d3ddev;
D3DPRESENT_PARAMETERS d3dpp;
//Main Menu
LPD3DXSPRITE sprite;
LPDIRECT3DTEXTURE9 mainmenutex;
LPDIRECT3DTEXTURE9 battletex;
RECT rct;
void StartD3D(HWND hWnd)
{
d3d = Direct3DCreate9(D3D_SDK_VERSION);
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.Windowed = FALSE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow = hWnd;
d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
d3dpp.BackBufferWidth = 1024;
d3dpp.BackBufferHeight = 768;
d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&d3ddev);
//MainMenu Stuff
D3DXCreateSprite(d3ddev, &sprite);
D3DXCreateTextureFromFile(d3ddev, L"Menu.jpg", &mainmenutex);
D3DXCreateTextureFromFile(d3ddev, L"Battle.png", &battletex);
}
void BeginRender(void)
{
d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255,255,255,255), 1.0f, 0);
d3ddev->BeginScene();
sprite->Begin(NULL);
}
void EndRender(void)
{
sprite->End();
d3ddev->EndScene();
d3ddev->Present(NULL, NULL, NULL, NULL);
}
void StopD3D(void)
{
d3ddev->Release();
d3d->Release();
sprite->Release();
}
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
} break;
}
return DefWindowProc (hWnd, message, wParam, lParam);
}
int MainMenu(void)
{
rct.left=0;
rct.right=1024;
rct.top=0;
rct.bottom=768;
sprite->Draw(mainmenutex, &rct, NULL,NULL, D3DCOLOR_XRGB(255, 255, 255));
if(GetAsyncKeyState(VK_ESCAPE)&1)
{return 0;}
if(GetAsyncKeyState(VK_RETURN)&1)
{return 1;}
}
void Game(void)
{
}
void GameLoop(void)
{
BeginRender();
/////////////
if(MainMenu() == 0)
{
return;
}
else if(MainMenu() == 1)
{
d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255,255,255,255), 1.0f, 0);
sprite->Draw(battletex, &rct, NULL,NULL, D3DCOLOR_XRGB(255, 255, 255));
}
////////////
EndRender();
}
Basically, if MainMenu returns 0, that means they wanted to close the game, if it returns 1, then it means they want to play. Its not exactly working though.