#include #include #include "utils.h" #include "Logger.h" #include "DXWindow.h" #include "Timer.h" #include "Geometry.h" // FPS-mérés size_t gFrames = 0; void CB_FPSaux(eg3d::Timer *pTimer, const double *pTrigTimeElapsed, void *ptr) { // TODO képkockaidő és FPS kiszámítása; képkockaszámláló nullázása; eredmények kiírása double fps = gFrames / *pTrigTimeElapsed; gFrames = 0; LOG(std::to_string(1 / fps * 1000) + "ms, " + std::to_string(fps) + "FPS"); } using namespace eg3d; int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgs, int nWinMode) { eg3d::DXWindow win; // megjelenítés be, alapértelmezett window procedure használata win.setTitle("Keretszöveg"); // keretszöveg beállítása // FPS-mérő callback-függvény regisztrálása TimerCallbackData timerCBData; timerCBData.callBackFn = CB_FPSaux; timerCBData.ptr = nullptr; gTmr1s.reg(timerCBData); // TODO geometria és pool létrehozása std::vector vertices = { // vertexek { -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.0f, 0.98f, 0.1f, 0.0f, 0.0f, 1.0f }, }; std::vector indices = { 0, 2, 1 }; // indexek auto pGeo = std::shared_ptr>(new Geometry(win.getDevice())); pGeo->setVertices(vertices); pGeo->setIndices(indices); DrawablePool drawables; // geometriák halmaza drawables.push_back(pGeo); // pGeo geometria hozzáadása vertices = { // vertexek { -0.3f, -0.5f, 0.05f, 1.0f, 0.2f, 0.0f }, { 0.3f, -0.5f, 0.05f , 0.2f, 1.0f, 0.0f }, { 0.0f, 0.7f, 0.05f, 0.0f, 0.2f, 1.0f }, }; auto pGeo2 = std::shared_ptr>(new Geometry(win.getDevice())); pGeo2->setVertices(vertices); pGeo2->setIndices(indices); drawables.push_back(pGeo2); MSG msg = { }; while (msg.message != WM_QUIT) { if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { Sleep(15); win.Draw(drawables); // kirajzolás gFrames++; // képkockaszám léptetése } // TODO egy másodperces periódusidejű óra léptetése gTmr1s.tick(); } return msg.wParam; }