Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool InitWindow(HINSTANCE hInstance, int ShowWnd, int width, int height, bool windowed, D3DDEVTYPE deviceType, IDirect3DDevice9** d3ddev)
- {
- WNDCLASSEX wc; // Extended Windows Class für moderne Windows Systeme.
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.style = CS_HREDRAW | CS_VREDRAW; // Fenster soll horizontal und vertikal aktualisiert werden (| kombiniert Hash Werte).
- wc.lpfnWndProc = WndProc; // WinProc Funktion als Pointer übergeben.
- wc.cbWndExtra = NULL;
- wc.cbClsExtra = NULL;
- wc.hInstance = hInstance;
- wc.hIcon = LoadIcon(NULL, IDI_SHIELD); // Icon mit Hash Wert setzen.
- wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Cursor mit Hash Wert setzen.
- wc.hbrBackground = (HBRUSH)COLOR_WINDOW + 1; // Fenster Hintergrundfarbe setzen.
- wc.lpszMenuName = NULL; // Menü Name setzen.
- wc.lpszClassName = WndClassName;
- wc.hIconSm = LoadIcon(NULL, IDI_SHIELD); // Icon für minimiertes Fenster.
- if (!RegisterClassEx(&wc))
- {
- MessageBox(0, L"Registering windows failed", L"ERROR", MB_OK);
- return 1;
- }
- hwnd = CreateWindowEx(NULL, WndClassName, L"DirektSaftDemo", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, width, height, NULL, NULL, hInstance, NULL);
- if (!hwnd)
- {
- MessageBox(0, L"Create windowsEX fail", L"ERROR", MB_OK);
- return 1;
- }
- ShowWindow(hwnd, ShowWnd);
- UpdateWindow(hwnd);
- //DirectX Init
- d3d9 = Direct3DCreate9(D3D_SDK_VERSION);
- if (!d3d9)
- {
- MessageBox(0, L"Init d3d9 fail", L"ERROR", MB_OK);
- return 1;
- }
- D3DCAPS9 caps;
- d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, deviceType, &caps);
- int vertexproc = NULL;
- if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
- vertexproc = D3DCREATE_HARDWARE_VERTEXPROCESSING;
- else
- vertexproc = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
- D3DPRESENT_PARAMETERS d3dpp;
- d3dpp.BackBufferWidth = width;
- d3dpp.BackBufferHeight = height;
- d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; // 32 bit farbtiefe
- d3dpp.BackBufferCount = 1;
- d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;
- d3dpp.EnableAutoDepthStencil = true;
- d3dpp.Flags = NULL;
- d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
- d3dpp.hDeviceWindow = hwnd; // Fenster in das gerendert werden soll zuweisen.
- d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
- d3dpp.MultiSampleQuality = NULL;
- d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
- d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
- d3dpp.Windowed = windowed;
- HRESULT hr = 0; // Ergebnis für Exception handling.
- hr = d3d9->CreateDevice(D3DADAPTER_DEFAULT, deviceType, hwnd, vertexproc, &d3dpp, d3ddev);
- if (FAILED(hr))
- {
- MessageBox(0, L"Direct 3D device failed!", L"ERROR", MB_OK);
- d3d9->Release(); // Bei Fehler Grafikkarte freigeben.
- return 1;
- }
- d3d9->Release();
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement