Kezdeti állapot

This commit is contained in:
Wiesner András 2020-03-01 17:17:24 +01:00
parent fd61e60226
commit da7145cc9e
7 changed files with 61 additions and 6 deletions

View File

@ -3,6 +3,6 @@ project(WinApi)
set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD 14)
add_executable(WinApi WIN32 main.cpp d3dx12.h DXWindow.cpp DXWindow.h Logger.cpp Logger.h utils.cpp utils.h Window.cpp Window.h Timer.cpp Timer.h IDrawable.h Geometry.h) add_executable(WinApi WIN32 main.cpp d3dx12.h DXWindow.cpp DXWindow.h Logger.cpp Logger.h utils.cpp utils.h Window.cpp Window.h Timer.cpp Timer.h IDrawable.h Geometry.h EventHandler.cpp EventHandler.h)
target_link_libraries(WinApi d3d12.lib dxgi.lib dxguid.lib d3dcompiler.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib) target_link_libraries(WinApi d3d12.lib dxgi.lib dxguid.lib d3dcompiler.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib)

17
EventHandler.cpp Normal file
View File

@ -0,0 +1,17 @@
//
// Created by Epagris on 2020. 03. 01..
//
#include "EventHandler.h"
eg3d::EventHandler::EventHandler() {
}
int eg3d::EventHandler::processEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
// TODO eseménykezelés megvalósítása
// switch().....
return 0;
}

13
EventHandler.h Normal file
View File

@ -0,0 +1,13 @@
#pragma once
#include <Windows.h>
namespace eg3d {
class EventHandler {
public:
EventHandler(); // konstr.
int processEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); // esemény feldolgozása (0 -> feldolgozva, 1 -> nincs feldolgozva)
};
}

View File

@ -93,6 +93,10 @@ namespace eg3d {
return mTopology; return mTopology;
} }
void loadFromFile(const std::string& fileName) {
// TODO Epagrisnak: Assimpot le kell fordítani mindenkinek!
}
// input assembler beállítása // input assembler beállítása
void setupInputAssembler(ComPtr<ID3D12GraphicsCommandList> commandList) const { void setupInputAssembler(ComPtr<ID3D12GraphicsCommandList> commandList) const {
commandList->IASetVertexBuffers(0, 1, &mVertexBufferView); commandList->IASetVertexBuffers(0, 1, &mVertexBufferView);

View File

@ -6,7 +6,7 @@ namespace eg3d {
const char * eg3d::Window::sWndClassName = "eg3d_winclass"; const char * eg3d::Window::sWndClassName = "eg3d_winclass";
Window * Window::pMainWindow = nullptr; Window * Window::pMainWindow = nullptr;
Window::Window(bool show, WinFn pWindowFunction) : pWindowFunction(pWindowFunction == nullptr ? smWindowFunc : pWindowFunction) // ha nullptr van megadva, akkor visszaáll az eredeti függvényre Window::Window(bool show, WinFn pWindowFunction) : pWindowFunction(pWindowFunction == nullptr ? smWindowFunc : pWindowFunction), pmEventHandler(nullptr) // ha nullptr van megadva, akkor visszaáll az eredeti függvényre
{ {
initializeWndClass(this->pWindowFunction); // window class inicializálása initializeWndClass(this->pWindowFunction); // window class inicializálása
create(); // ablak létrehozása create(); // ablak létrehozása
@ -117,13 +117,19 @@ namespace eg3d {
LRESULT Window::smWindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) LRESULT Window::smWindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{ {
Window * pWindow = static_cast<Window *>((void *)GetWindowLongPtrA(hwnd, GWLP_USERDATA)); // ablakhoz rendelt eseménykezelõ elkérése
switch (message) switch (message)
{ {
case WM_DESTROY: case WM_DESTROY:
PostQuitMessage(0); PostQuitMessage(0);
break; break;
default: default: // minden egyéb esemény kezelése
return DefWindowProc(hwnd, message, wParam, lParam); if (pWindow-> != nullptr) { // ha meg van adva eseménykezelõ
if (pEH->processEvent(hwnd, message, wParam, lParam) != 0) { // ha nem lett lekezelve az esemény
return DefWindowProc(hwnd, message, wParam, lParam); // ...akkor rábízzuk a rendszerre
}
}
} }
return 0; return 0;
@ -159,4 +165,12 @@ namespace eg3d {
void Window::setThisAsMainWindow() { void Window::setThisAsMainWindow() {
pMainWindow = this; pMainWindow = this;
} }
void Window::setEventHandler(EventHandler *pEH) {
pmEventHandler = pEH;
}
EventHandler *Window::getEventHandler() const {
return pmEventHandler;
}
} }

View File

@ -4,6 +4,7 @@
#include <string> #include <string>
#include "utils.h" #include "utils.h"
#include "EventHandler.h"
namespace eg3d { namespace eg3d {
@ -17,6 +18,9 @@ namespace eg3d {
////////////// //////////////
static LRESULT CALLBACK smWindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); // window process, mely az ablakhoz lesz kötve static LRESULT CALLBACK smWindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); // window process, mely az ablakhoz lesz kötve
// TODO Epagrisnak: ezt majd még átírom
EventHandler* pmEventHandler; // eseményfeldolgozó osztály pointere
protected: protected:
void create(); // ablak létrehozása void create(); // ablak létrehozása
HWND mHWND; // ablak-handler HWND mHWND; // ablak-handler
@ -44,6 +48,9 @@ namespace eg3d {
double getAspectRatio() const; // lekéri a képarányt double getAspectRatio() const; // lekéri a képarányt
void setThisAsMainWindow(); // ezt az ablakot állítja be fõablaknak void setThisAsMainWindow(); // ezt az ablakot állítja be fõablaknak
void setEventHandler(EventHandler* pEH); // event handler beállítása
EventHandler * getEventHandler() const; // event handler lekérése
}; };
} }

View File

@ -29,13 +29,14 @@ int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszA
eg3d::DXWindow win; // megjelenítés be, alapértelmezett window procedure használata eg3d::DXWindow win; // megjelenítés be, alapértelmezett window procedure használata
win.setTitle("Keretszöveg"); // keretszöveg beállítása win.setTitle("Keretszöveg"); // keretszöveg beállítása
// TODO eseménykezelő létrehozása és ablakhoz rendelése
// FPS-mérő callback-függvény regisztrálása // FPS-mérő callback-függvény regisztrálása
TimerCallbackData timerCBData; TimerCallbackData timerCBData;
timerCBData.callBackFn = CB_FPSaux; timerCBData.callBackFn = CB_FPSaux;
timerCBData.ptr = nullptr; timerCBData.ptr = nullptr;
gTmr1s.reg(timerCBData); gTmr1s.reg(timerCBData);
// TODO geometria és pool létrehozása
std::vector<Vertex> vertices = { // vertexek std::vector<Vertex> vertices = { // vertexek
{ -0.5f, -0.5f, 0.1f, 1.0f, 0.0f, 0.0f }, { -0.5f, -0.5f, 0.1f, 1.0f, 0.0f, 0.0f },
{ 0.5f, -0.5f, 0.1f , 0.0f, 1.0f, 0.0f }, { 0.5f, -0.5f, 0.1f , 0.0f, 1.0f, 0.0f },
@ -80,7 +81,6 @@ int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszA
gFrames++; // képkockaszám léptetése gFrames++; // képkockaszám léptetése
} }
// TODO egy másodperces periódusidejű óra léptetése
gTmr1s.tick(); gTmr1s.tick();
} }