Files
DarkRP2D/src/DarkRP2D.cpp
Julian Nießner 9ffdf66bd0 Formatted classes
2018-05-26 11:14:12 +02:00

118 lines
2.8 KiB
C++

#include "DarkRP2D.h"
#ifndef NDEBUG
#include "imgui.h"
#include "imgui_impl_sdl_gl3.h"
#endif
#include <GL/glew.h>
#include <iostream>
#include "screens/GameScreen.h"
#include "Utility.h"
DarkRP2D::~DarkRP2D()
{
std::cout << "Game got destroyed!" << std::endl;
#ifndef NDEBUG
ImGui_ImplSdlGL3_Shutdown();
ImGui::DestroyContext();
#endif
delete gameScreen;
delete assets;
delete renderer;
}
void DarkRP2D::create()
{
std::cout << "Game got created!" << std::endl;
assets = new Assets();
assets->loadTexture("police_officer.png", true, "police_officer");
assets->loadShader("vert.shader", "frag.shader", nullptr, "defaultShader");
assets->loadShader("bitmapvert.shader", "bitmapfrag.shader", nullptr, "bitmapShader");
renderer = new Renderer();
font = new BitmapFont("arial.ttf");
gameScreen = new GameScreen(renderer, assets);
gameScreen->show();
#ifndef NDEBUG
//Setup IMGUI debugging
ImGui::CreateContext();
ImGui_ImplSdlGL3_Init(this->gWindow);
ImGui::StyleColorsDark();
#endif
}
void DarkRP2D::loop(unsigned int delta)
{
static unsigned int accumulator = 0, ups = 0, fps = 0, acc = 0;
accumulator += delta;
acc += delta;
while (accumulator >= 17)
{
accumulator -= 17;
update(delta);
ups++;
}
if (acc >= 1000)
{
std::cout << "Updates per second: " << ups << " Frames per Second: " << fps << std::endl;
acc -= 1000;
ups = 0;
fps = 0;
}
render(delta);
fps++;
}
void DarkRP2D::update(unsigned int delta)
{
gameScreen->update();
}
void DarkRP2D::render(unsigned int delta)
{
renderer->clear();
#ifndef NDEBUG
ImGui_ImplSdlGL3_NewFrame(gWindow);
#endif
//texttest
Shader bitmapShader = assets->getShader("bitmapShader");
font->drawText(bitmapShader, "Hallo du noob", 25.0f, 25.0f, 1.f, glm::vec3(0.5f, 0.8f, 0.2f));
gameScreen->render();
#ifndef NDEBUG
// 1. Show a simple window.
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets automatically appears in a window called "Debug".
static bool ShowOpenGLLogger = false;
{
ImGui::Separator();
ImGui::Text("\t\t\t\t\tOpenGL Info");
ImGui::Text("GLEW Version: %s\n", glewGetString(GLEW_VERSION));
ImGui::Text(" Version: %s\n", glGetString(GL_VERSION));
ImGui::Text(" Vendor: %s\n", glGetString(GL_VENDOR));
ImGui::Text(" Renderer: %s\n", glGetString(GL_RENDERER));
ImGui::Text(" Shading: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
ImGui::Separator();
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::Checkbox("Show OpenGL Logger", &ShowOpenGLLogger);
}
if (ShowOpenGLLogger)
Utility::Debug::openGLLogger.Draw("OpenGL Logger");
ImGui::Render();
ImGui_ImplSdlGL3_RenderDrawData(ImGui::GetDrawData());
#endif
SDL_GL_SwapWindow(gWindow);
}
void DarkRP2D::resize(int width, int height)
{
}