RGB ???? ALED
This commit is contained in:
309
khaotic-engine.cpp
Normal file
309
khaotic-engine.cpp
Normal file
@@ -0,0 +1,309 @@
|
||||
|
||||
///////////////**************new**************////////////////////
|
||||
|
||||
//Include and link appropriate libraries and headers//
|
||||
#pragma comment(lib, "d3d11.lib")
|
||||
#pragma comment(lib, "d3d10.lib")
|
||||
|
||||
#include <windows.h>
|
||||
#include <d3d11.h>
|
||||
#include <d3d10.h>
|
||||
#include <DirectXMath.h>
|
||||
#include <DirectXCollision.h>
|
||||
#include <DirectXPackedVector.h>
|
||||
|
||||
//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);
|
||||
}
|
||||
Reference in New Issue
Block a user