иницыализація окна в C++ и его окраска в Directx 9

  • Автор темы darcest
  • Дата начала
D

darcest

Гость
#1
Пытаюсь создать первую прогу на C++ и DirectX 9.
Видемых ошибок нет,но прога не запускается.
Если убрать строку 89 (запуск процедуры RenderingDirect3D()),то прога запускается ,но экран не прорисовуется с помощю директа(чего и следовало ожидать :lovecodeby: )
исправте пожалуйста код,
Или выложите код аналогичного простого примера,если есть.
Зарание всем спасибо.
C++:
 #include <windows.h>
#include <d3d9.h>
#pragma comment (lib,"d3d9.lib")

HINSTANCE hinst;
HWND wndHandle;

bool initWindow(HINSTANCE hInstance);

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);


LPDIRECT3D9 pDirect3D=NULL; 
IDirect3DDevice9* pDirect3DDevice=NULL;
void RenderingDirect3D();



int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR IpCmdLine,int nShowCmd)
{


if(!initWindow(hInstance))
return false;
MSG msg;

ZeroMemory(&msg,sizeof(msg));



while(GetMessage(&msg,0,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}


//WS_OVERLAPPEDWINDOWS|WS_VISIBLE,300,150,500,400,NULL,NULL,hinstance,NULL);
return msg.wParam;

}

bool initWindow(HINSTANCE hInstance)
{
WNDCLASSEX ************;
************.cbSize =sizeof(WNDCLASSEX);
************.style=CS_HREDRAW|CS_VREDRAW;
************.lpfnWndProc=(WNDPROC)WndProc;
************.cbClsExtra=0;
************.cbWndExtra=0;
************.hInstance=hInstance;
************.hIcon=0;
************.hCursor=LoadCursor(NULL,IDC_ARROW);
************.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
************.lpszMenuName =NULL;
************.lpszClassName=L"DirectXExample";
************.hIconSm=0;
RegisterClassEx(&************);


wndHandle=CreateWindow(
L"DirectXExample",
L"DirectXExample",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
640,
480,
NULL,
NULL,
hInstance,
NULL);
if(!wndHandle)
return false;
ShowWindow(wndHandle,SW_SHOW);
UpdateWindow(wndHandle);
return true;

}




LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_PAINT:
RenderingDirect3D();
ValidateRect(hWnd,NULL);
break;
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;

} break;


return DefWindowProc(hWnd, message, wParam, lParam);

}  return (DefWindowProc(hWnd, message, wParam, lParam));

//case WM_PAINT:
//initialDirect3D(HWND hwnd);
// ValidateRect(hwnd,NULL);

return 0;
}


HRESULT initialDirect3D(HWND hwnd)
{
if(NULL ==(pDirect3D=Direct3DCreate9(D3D_SDK_VERSION)))
return E_FAIL;
D3DDISPLAYMODE* Display;
if (FAILED(pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,Display)))
return E_FAIL;
D3DPRESENT_PARAMETERS Direct3DParametr;
ZeroMemory(&Direct3DParametr,sizeof(Direct3DParametr));
Direct3DParametr.Windowed=TRUE;
Direct3DParametr.SwapEffect=D3DSWAPEFFECT_DISCARD;

return E_FAIL;;
return S_OK;
}


void RenderingDirect3D()
{
//IDirect3DDevice9::Clear;
pDirect3DDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(25,25,0),1.0f,0);
pDirect3DDevice->BeginScene();
pDirect3DDevice->EndScene();
pDirect3DDevice->Present(NULL,NULL,NULL,NULL);
//return 0;
}
 
N

nnemo

Гость
#2