diff --git a/Resource.h b/Resource.h new file mode 100644 index 0000000..a99901c --- /dev/null +++ b/Resource.h @@ -0,0 +1,30 @@ +//{{NO_DEPENDENCIES}} +// Fichier Include généré par Microsoft Visual C++. +// Utilisé par khaotic-engine.rc + +#define IDS_APP_TITLE 103 + +#define IDR_MAINFRAME 128 +#define IDD_KHAOTICENGINE_DIALOG 102 +#define IDD_ABOUTBOX 103 +#define IDM_ABOUT 104 +#define IDM_EXIT 105 +#define IDI_KHAOTICENGINE 107 +#define IDI_SMALL 108 +#define IDC_KHAOTICENGINE 109 +#define IDC_MYICON 2 +#ifndef IDC_STATIC +#define IDC_STATIC -1 +#endif +// Valeurs par défaut suivantes des nouveaux objets +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS + +#define _APS_NO_MFC 130 +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/framework.h b/framework.h new file mode 100644 index 0000000..9b12fee --- /dev/null +++ b/framework.h @@ -0,0 +1,15 @@ +// header.h : fichier Include pour les fichiers Include système standard, +// ou les fichiers Include spécifiques aux projets +// + +#pragma once + +#include "targetver.h" +#define WIN32_LEAN_AND_MEAN // Exclure les en-têtes Windows rarement utilisés +// Fichiers d'en-tête Windows +#include +// Fichiers d'en-tête C RunTime +#include +#include +#include +#include diff --git a/khaotic-engine.cpp b/khaotic-engine.cpp new file mode 100644 index 0000000..3097ed5 --- /dev/null +++ b/khaotic-engine.cpp @@ -0,0 +1,309 @@ + +///////////////**************new**************//////////////////// + +//Include and link appropriate libraries and headers// +#pragma comment(lib, "d3d11.lib") +#pragma comment(lib, "d3d10.lib") + +#include +#include +#include +#include +#include +#include + +//Global Declarations// +IDXGISwapChain* SwapChain; +ID3D11Device* d3d11Device; +ID3D11DeviceContext* d3d11DevCon; +ID3D11RenderTargetView* renderTargetView; + +float red = 0.0f; +float green = 0.0f; +float blue = 0.0f; +int colormodr = 1; +int colormodg = 1; +int colormodb = 1; + +///////////////**************new**************//////////////////// + +LPCTSTR WndClassName = L"firstwindow"; +HWND hwnd = NULL; + +const int Width = 300; +const int Height = 300; + +///////////////**************new**************//////////////////// + +//Function Prototypes// +bool InitializeDirect3d11App(HINSTANCE hInstance); +void ReleaseObjects(); +bool InitScene(); +void UpdateScene(); +void DrawScene(); + +///////////////**************new**************//////////////////// + +bool InitializeWindow(HINSTANCE hInstance, + int ShowWnd, + int width, int height, + bool windowed); +int messageloop(); + +LRESULT CALLBACK WndProc(HWND hWnd, + UINT msg, + WPARAM wParam, + LPARAM lParam); + + +int WINAPI WinMain(HINSTANCE hInstance, //Main windows function + HINSTANCE hPrevInstance, + LPSTR lpCmdLine, + int nShowCmd) +{ + + if (!InitializeWindow(hInstance, nShowCmd, Width, Height, true)) + { + MessageBox(0, L"Window Initialization - Failed", + L"Error", MB_OK); + return 0; + } + + ///////////////**************new**************//////////////////// + + if (!InitializeDirect3d11App(hInstance)) //Initialize Direct3D + { + MessageBox(0, L"Direct3D Initialization - Failed", + L"Error", MB_OK); + return 0; + } + + if (!InitScene()) //Initialize our scene + { + MessageBox(0, L"Scene Initialization - Failed", + L"Error", MB_OK); + return 0; + } + + messageloop(); + + ReleaseObjects(); + + ///////////////**************new**************//////////////////// + + return 0; +} + +bool InitializeWindow(HINSTANCE hInstance, + int ShowWnd, + int width, int height, + bool windowed) +{ + typedef struct _WNDCLASS { + UINT cbSize; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HANDLE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCTSTR lpszMenuName; + LPCTSTR lpszClassName; + } WNDCLASS; + + WNDCLASSEX wc; + + wc.cbSize = sizeof(WNDCLASSEX); + wc.style = CS_HREDRAW | CS_VREDRAW; + wc.lpfnWndProc = WndProc; + wc.cbClsExtra = NULL; + wc.cbWndExtra = NULL; + wc.hInstance = hInstance; + wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 2); + wc.lpszMenuName = NULL; + wc.lpszClassName = WndClassName; + wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); + + if (!RegisterClassEx(&wc)) + { + MessageBox(NULL, L"Error registering class", + L"Error", MB_OK | MB_ICONERROR); + return 1; + } + + hwnd = CreateWindowEx( + NULL, + WndClassName, + L"Window Title", + WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, CW_USEDEFAULT, + width, height, + NULL, + NULL, + hInstance, + NULL + ); + + if (!hwnd) + { + MessageBox(NULL, L"Error creating window", + L"Error", MB_OK | MB_ICONERROR); + return 1; + } + + ShowWindow(hwnd, ShowWnd); + UpdateWindow(hwnd); + + return true; +} + +///////////////**************new**************//////////////////// + +bool InitializeDirect3d11App(HINSTANCE hInstance) +{ + //Describe our Buffer + DXGI_MODE_DESC bufferDesc; + + ZeroMemory(&bufferDesc, sizeof(DXGI_MODE_DESC)); + + bufferDesc.Width = Width; + bufferDesc.Height = Height; + bufferDesc.RefreshRate.Numerator = 60; + bufferDesc.RefreshRate.Denominator = 1; + bufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + bufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED; + bufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED; + + //Describe our SwapChain + DXGI_SWAP_CHAIN_DESC swapChainDesc; + + ZeroMemory(&swapChainDesc, sizeof(DXGI_SWAP_CHAIN_DESC)); + + swapChainDesc.BufferDesc = bufferDesc; + swapChainDesc.SampleDesc.Count = 1; + swapChainDesc.SampleDesc.Quality = 0; + swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + swapChainDesc.BufferCount = 1; + swapChainDesc.OutputWindow = hwnd; + swapChainDesc.Windowed = TRUE; + swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; + + + //Create our SwapChain + D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, NULL, NULL, NULL, + D3D11_SDK_VERSION, &swapChainDesc, &SwapChain, &d3d11Device, NULL, &d3d11DevCon); + + //Create our BackBuffer + ID3D11Texture2D* BackBuffer; + SwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)&BackBuffer); + + //Create our Render Target + d3d11Device->CreateRenderTargetView(BackBuffer, NULL, &renderTargetView); + BackBuffer->Release(); + + //Set our Render Target + d3d11DevCon->OMSetRenderTargets(1, &renderTargetView, NULL); + + return true; +} + +void ReleaseObjects() +{ + //Release the COM Objects we created + SwapChain->Release(); + d3d11Device->Release(); + d3d11DevCon->Release(); +} +bool InitScene() +{ + + return true; +} + +void UpdateScene() +{ + //Update the colors of our scene + red += colormodr * 0.00005f; + green += colormodg * 0.00002f; + blue += colormodb * 0.00001f; + + if (red >= 1.0f || red <= 0.0f) + colormodr *= -1; + if (green >= 1.0f || green <= 0.0f) + colormodg *= -1; + if (blue >= 1.0f || blue <= 0.0f) + colormodb *= -1; +} + +void DrawScene() +{ + //Clear our backbuffer to the updated color + DirectX::XMFLOAT4 bgColor(red, green, blue, 1.0f); + float color[4] = { bgColor.x, bgColor.y, bgColor.z, bgColor.w }; + d3d11DevCon->ClearRenderTargetView(renderTargetView, color); + + //Present the backbuffer to the screen + SwapChain->Present(0, 0); +} + +///////////////**************new**************//////////////////// + +int messageloop() { + MSG msg; + ZeroMemory(&msg, sizeof(MSG)); + while (true) + { + BOOL PeekMessageL( + LPMSG lpMsg, + HWND hWnd, + UINT wMsgFilterMin, + UINT wMsgFilterMax, + UINT wRemoveMsg + ); + + if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + if (msg.message == WM_QUIT) + break; + TranslateMessage(&msg); + DispatchMessage(&msg); + } + else { + ///////////////**************new**************//////////////////// + // run game code + + UpdateScene(); + DrawScene(); + + ///////////////**************new**************//////////////////// + } + } + return msg.wParam; +} + +LRESULT CALLBACK WndProc(HWND hwnd, + UINT msg, + WPARAM wParam, + LPARAM lParam) +{ + switch (msg) + { + case WM_KEYDOWN: + if (wParam == VK_ESCAPE) { + DestroyWindow(hwnd); + } + return 0; + + case WM_DESTROY: + PostQuitMessage(0); + return 0; + } + return DefWindowProc(hwnd, + msg, + wParam, + lParam); +} diff --git a/khaotic-engine.h b/khaotic-engine.h new file mode 100644 index 0000000..d00d47e --- /dev/null +++ b/khaotic-engine.h @@ -0,0 +1,3 @@ +#pragma once + +#include "resource.h" diff --git a/khaotic-engine.ico b/khaotic-engine.ico new file mode 100644 index 0000000..b3ec03b Binary files /dev/null and b/khaotic-engine.ico differ diff --git a/khaotic-engine.rc b/khaotic-engine.rc new file mode 100644 index 0000000..b48f476 Binary files /dev/null and b/khaotic-engine.rc differ diff --git a/khaotic-engine.sln b/khaotic-engine.sln new file mode 100644 index 0000000..3673def --- /dev/null +++ b/khaotic-engine.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34607.119 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "khaotic-engine", "khaotic-engine.vcxproj", "{2C5096EB-E3EC-4BEC-B945-27CA67723D1F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2C5096EB-E3EC-4BEC-B945-27CA67723D1F}.Debug|x64.ActiveCfg = Debug|x64 + {2C5096EB-E3EC-4BEC-B945-27CA67723D1F}.Debug|x64.Build.0 = Debug|x64 + {2C5096EB-E3EC-4BEC-B945-27CA67723D1F}.Debug|x86.ActiveCfg = Debug|Win32 + {2C5096EB-E3EC-4BEC-B945-27CA67723D1F}.Debug|x86.Build.0 = Debug|Win32 + {2C5096EB-E3EC-4BEC-B945-27CA67723D1F}.Release|x64.ActiveCfg = Release|x64 + {2C5096EB-E3EC-4BEC-B945-27CA67723D1F}.Release|x64.Build.0 = Release|x64 + {2C5096EB-E3EC-4BEC-B945-27CA67723D1F}.Release|x86.ActiveCfg = Release|Win32 + {2C5096EB-E3EC-4BEC-B945-27CA67723D1F}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {AE9097A3-6D17-4474-B6FB-ACA76C7C3C8B} + EndGlobalSection +EndGlobal diff --git a/khaotic-engine.vcxproj b/khaotic-engine.vcxproj new file mode 100644 index 0000000..af63f23 --- /dev/null +++ b/khaotic-engine.vcxproj @@ -0,0 +1,148 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {2c5096eb-e3ec-4bec-b945-27ca67723d1f} + khaoticengine + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + Level3 + true + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/khaotic-engine.vcxproj.filters b/khaotic-engine.vcxproj.filters new file mode 100644 index 0000000..acb04c7 --- /dev/null +++ b/khaotic-engine.vcxproj.filters @@ -0,0 +1,49 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + Fichiers d%27en-tête + + + + + Fichiers sources + + + + + Fichiers de ressources + + + + + Fichiers de ressources + + + Fichiers de ressources + + + \ No newline at end of file diff --git a/small.ico b/small.ico new file mode 100644 index 0000000..b3ec03b Binary files /dev/null and b/small.ico differ diff --git a/targetver.h b/targetver.h new file mode 100644 index 0000000..7ec5318 --- /dev/null +++ b/targetver.h @@ -0,0 +1,6 @@ +#pragma once + +// // L'inclusion de SDKDDKVer.h définit la version de plateforme Windows la plus haute disponible. +// Si vous voulez générer votre application pour une plateforme Windows précédente, incluez WinSDKVer.h et +// définissez la macro _WIN32_WINNT sur la plateforme à prendre en charge avant d'inclure SDKDDKVer.h. +#include