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
////////// OBJEKTUMOK KIRAJZOLÁSA
drawObject();
//drawObject();
for (unsigned i = 0; i < drawables.size(); i++)
{
drawables[i]->draw(mCommandList);
}
// TODO drawables kirajzolása
@ -359,9 +364,9 @@ namespace eg3d {
void DXWindow::initVertices()
{
vertices = {
{ -0.5f, -0.5f, 0.1f },
{ 0.5f, -0.5f, 0.1f },
{ 0, 0.98f, 0.1f },
{ -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 },
};
indices = { 0, 2, 1 };
@ -371,6 +376,7 @@ namespace eg3d {
{
inputElements = {
{"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
};
}

View File

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

View File

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

View File

@ -15,6 +15,11 @@
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;
@ -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
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<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 = { };
@ -36,12 +73,15 @@ int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszA
DispatchMessage(&msg);
} 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
gTmr1s.tick();
}
return msg.wParam;