Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. bool InitWindow(HINSTANCE hInstance, int ShowWnd, int width, int height, bool windowed, D3DDEVTYPE deviceType, IDirect3DDevice9** d3ddev)
  2. {
  3. WNDCLASSEX wc; // Extended Windows Class für moderne Windows Systeme.
  4.  
  5. wc.cbSize = sizeof(WNDCLASSEX);
  6. wc.style = CS_HREDRAW | CS_VREDRAW; // Fenster soll horizontal und vertikal aktualisiert werden (| kombiniert Hash Werte).
  7. wc.lpfnWndProc = WndProc; // WinProc Funktion als Pointer übergeben.
  8. wc.cbWndExtra = NULL;
  9. wc.cbClsExtra = NULL;
  10. wc.hInstance = hInstance;
  11. wc.hIcon = LoadIcon(NULL, IDI_SHIELD); // Icon mit Hash Wert setzen.
  12. wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Cursor mit Hash Wert setzen.
  13. wc.hbrBackground = (HBRUSH)COLOR_WINDOW + 1; // Fenster Hintergrundfarbe setzen.
  14. wc.lpszMenuName = NULL; // Menü Name setzen.
  15. wc.lpszClassName = WndClassName;
  16. wc.hIconSm = LoadIcon(NULL, IDI_SHIELD); // Icon für minimiertes Fenster.
  17.  
  18. if (!RegisterClassEx(&wc))
  19. {
  20. MessageBox(0, L"Registering windows failed", L"ERROR", MB_OK);
  21. return 1;
  22. }
  23.  
  24. hwnd = CreateWindowEx(NULL, WndClassName, L"DirektSaftDemo", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, width, height, NULL, NULL, hInstance, NULL);
  25.  
  26. if (!hwnd)
  27. {
  28. MessageBox(0, L"Create windowsEX fail", L"ERROR", MB_OK);
  29. return 1;
  30. }
  31.  
  32. ShowWindow(hwnd, ShowWnd);
  33. UpdateWindow(hwnd);
  34.  
  35. //DirectX Init
  36. d3d9 = Direct3DCreate9(D3D_SDK_VERSION);
  37. if (!d3d9)
  38. {
  39. MessageBox(0, L"Init d3d9 fail", L"ERROR", MB_OK);
  40. return 1;
  41. }
  42.  
  43. D3DCAPS9 caps;
  44. d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, deviceType, &caps);
  45. int vertexproc = NULL;
  46. if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
  47. vertexproc = D3DCREATE_HARDWARE_VERTEXPROCESSING;
  48. else
  49. vertexproc = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
  50.  
  51. D3DPRESENT_PARAMETERS d3dpp;
  52. d3dpp.BackBufferWidth = width;
  53. d3dpp.BackBufferHeight = height;
  54. d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; // 32 bit farbtiefe
  55. d3dpp.BackBufferCount = 1;
  56. d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;
  57. d3dpp.EnableAutoDepthStencil = true;
  58. d3dpp.Flags = NULL;
  59. d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
  60. d3dpp.hDeviceWindow = hwnd; // Fenster in das gerendert werden soll zuweisen.
  61. d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
  62. d3dpp.MultiSampleQuality = NULL;
  63. d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
  64. d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
  65. d3dpp.Windowed = windowed;
  66.  
  67. HRESULT hr = 0; // Ergebnis für Exception handling.
  68.  
  69. hr = d3d9->CreateDevice(D3DADAPTER_DEFAULT, deviceType, hwnd, vertexproc, &d3dpp, d3ddev);
  70. if (FAILED(hr))
  71. {
  72. MessageBox(0, L"Direct 3D device failed!", L"ERROR", MB_OK);
  73. d3d9->Release(); // Bei Fehler Grafikkarte freigeben.
  74. return 1;
  75. }
  76.  
  77. d3d9->Release();
  78.  
  79. return true;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement