FPS-mérő és Geometry kész

This commit is contained in:
Wiesner András 2020-03-01 16:40:24 +01:00
parent a4db2bba43
commit fd61e60226
4 changed files with 55 additions and 7 deletions

View File

@ -288,7 +288,12 @@ namespace eg3d {
// TODO konstansbuffer bekötése // TODO konstansbuffer bekötése
////////// OBJEKTUMOK KIRAJZOLÁSA ////////// OBJEKTUMOK KIRAJZOLÁSA
drawObject(); //drawObject();
for (unsigned i = 0; i < drawables.size(); i++)
{
drawables[i]->draw(mCommandList);
}
// TODO drawables kirajzolása // TODO drawables kirajzolása
@ -359,9 +364,9 @@ namespace eg3d {
void DXWindow::initVertices() void DXWindow::initVertices()
{ {
vertices = { vertices = {
{ -0.5f, -0.5f, 0.1f }, { -0.5f, -0.5f, 0.1f, 1.0f, 0.0f, 0.0f },
{ 0.5f, -0.5f, 0.1f }, { 0.5f, -0.5f, 0.1f , 0.0f, 1.0f, 0.0f },
{ 0, 0.98f, 0.1f }, { 0.0f, 0.98f, 0.1f, 0.0f, 0.0f, 1.0f },
}; };
indices = { 0, 2, 1 }; indices = { 0, 2, 1 };
@ -371,6 +376,7 @@ namespace eg3d {
{ {
inputElements = { inputElements = {
{"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0}, {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0},
{"COLOR", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0}
// TODO további elemek létrehozása // TODO további elemek létrehozása
}; };
} }

View File

@ -18,6 +18,7 @@
struct Vertex struct Vertex
{ {
float x, y, z; float x, y, z;
float r, g, b;
}; };
// TODO konstansbuffer típus // TODO konstansbuffer típus

View File

@ -1,6 +1,7 @@
struct VSInput // vertex shader bemeneti struktúra struct VSInput // vertex shader bemeneti struktúra
{ {
float3 position_D : POSITION; float3 position_D : POSITION;
float3 color : COLOR;
}; };
struct VSOutput // vertex shader kimeneti struktúra struct VSOutput // vertex shader kimeneti struktúra
@ -14,7 +15,7 @@ VSOutput vs_main(VSInput input)
VSOutput output; // vertex shader kimenete VSOutput output; // vertex shader kimenete
output.position_H = float4(input.position_D, 1.0); output.position_H = float4(input.position_D, 1.0);
output.color = input.position_D; output.color = input.color;
return output; return output;
} }

View File

@ -15,6 +15,11 @@
size_t gFrames = 0; size_t gFrames = 0;
void CB_FPSaux(eg3d::Timer *pTimer, const double *pTrigTimeElapsed, void *ptr) { 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 // 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; using namespace eg3d;
@ -24,7 +29,39 @@ 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
// 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 // TODO geometria és pool létrehozása
std::vector<Vertex> 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<uint32_t> indices = { 0, 2, 1 }; // indexek
auto pGeo = std::shared_ptr<Geometry<Vertex>>(new Geometry<Vertex>(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<Geometry<Vertex>>(new Geometry<Vertex>(win.getDevice()));
pGeo2->setVertices(vertices);
pGeo2->setIndices(indices);
drawables.push_back(pGeo2);
MSG msg = { }; MSG msg = { };
@ -36,12 +73,15 @@ int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszA
DispatchMessage(&msg); DispatchMessage(&msg);
} else } else
{ {
Sleep(50); Sleep(15);
win.Draw(DrawablePool()); win.Draw(drawables); // kirajzolás
gFrames++; // képkockaszám léptetése
} }
// TODO egy másodperces periódusidejű óra léptetése // TODO egy másodperces periódusidejű óra léptetése
gTmr1s.tick();
} }
return msg.wParam; return msg.wParam;