92 lines
2.1 KiB
C++
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;
|
|
}
|