D
darcest
Пытаюсь создать первую прогу на C++ и DirectX 9.
Видемых ошибок нет,но прога не запускается.
Если убрать строку 89 (запуск процедуры RenderingDirect3D()),то прога запускается ,но экран не прорисовуется с помощю директа(чего и следовало ожидать :lovecodeby: )
исправте пожалуйста код,
Или выложите код аналогичного простого примера,если есть.
Зарание всем спасибо.
Видемых ошибок нет,но прога не запускается.
Если убрать строку 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 wcex;
wcex.cbSize =sizeof(WNDCLASSEX);
wcex.style=CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc=(WNDPROC)WndProc;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.hIcon=0;
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName =NULL;
wcex.lpszClassName=L"DirectXExample";
wcex.hIconSm=0;
RegisterClassEx(&wcex);
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;
}