92 lines
2.1 KiB
C++

#include <iostream>
#include <Windows.h>
// mátrixok transzponálása be
#define MT_ON
#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
// TODO eseménykezelő létrehozása és ablakhoz rendelése
EventHandler eventHandler;
win.setEventHandler(&eventHandler);
// FPS-mérő callback-függvény regisztrálása
TimerCallbackData timerCBData;
timerCBData.callBackFn = CB_FPSaux;
timerCBData.ptr = nullptr;
gTmr1s.reg(timerCBData);
std::vector<Vertex> vertices = { // vertexek
{ -0.5f, -0.5f, 1.0f },
{ 0.5f, -0.5f, 1.0f },
{ 0.0f, 0.98f, 1.0f },
};
std::vector<uint32_t> indices = { 0, 1, 2 }; // indexek
auto pGeo = std::shared_ptr<Geometry>(new Geometry(win.getDevice()));
pGeo->setVertices(vertices);
pGeo->setIndices(indices);
auto pGeo2 = std::shared_ptr<Geometry>(new Geometry(win.getDevice()));
pGeo2->loadBinarySTL("assets/utahteapot.stl");
(*pGeo) += (*pGeo2);
DrawablePool drawables; // geometriák halmaza
drawables.push_back(pGeo); // pGeo geometria hozzáadása
//drawables.push_back(pGeo);
// ------------------------------------
MSG msg = { };
while (msg.message != WM_QUIT)
{
if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
} else
{
Sleep(15);
win.moveCam(eventHandler.getCamVelocity()); // kamera elmozdítása
win.Draw(drawables); // kirajzolás
gFrames++; // képkockaszám léptetése
}
gTmr1s.tick();
}
return msg.wParam;
}