Add ImGui
This commit is contained in:
@@ -7,11 +7,15 @@
|
||||
#include "modelsystem.h"
|
||||
#include "debugrender.h"
|
||||
#include "ifilesystem.h"
|
||||
#include "camera.h"
|
||||
#include "imguimanager.h"
|
||||
|
||||
#include <pugixml.hpp>
|
||||
|
||||
static GLuint g_VAO = 0;
|
||||
|
||||
static int g_NumModels = 0;
|
||||
|
||||
// TEMP
|
||||
glm::vec3 g_viewOrigin;
|
||||
glm::vec3 g_viewOrient;
|
||||
@@ -139,6 +143,9 @@ void Render::Init(SDL_Window* pWindow)
|
||||
g_pDebugRender = new DebugRender();
|
||||
g_pDebugRender->Initialize();
|
||||
|
||||
// Create imgui manager
|
||||
g_ImGuiManager.Init();
|
||||
|
||||
// Create stretched picture filenameBuffer
|
||||
m_pStretchedPicVBuf = g_pRenderDevice->CreateVertexBuffer(nullptr, MAX_STRETCH_VX, true);
|
||||
|
||||
@@ -162,6 +169,8 @@ void Render::Shutdown()
|
||||
delete m_pStretchedPicVBuf;
|
||||
m_pStretchedPicVBuf = nullptr;
|
||||
|
||||
g_ImGuiManager.Shutdown();
|
||||
|
||||
g_pDebugRender->Shutdown();
|
||||
delete g_pDebugRender;
|
||||
g_pDebugRender = nullptr;
|
||||
@@ -187,19 +196,46 @@ void Render::Shutdown()
|
||||
m_pGLContext = nullptr;
|
||||
}
|
||||
|
||||
void Render::RenderScene()
|
||||
{
|
||||
void Render::RenderScene() {
|
||||
if (m_sceneModel) {
|
||||
Camera* camera = g_cameraManager.GetActiveCamera();
|
||||
if (camera) {
|
||||
glm::mat4 viewProj = m_ProjectionMatrix * m_ViewMatrix;
|
||||
viewProj = glm::transpose(viewProj);
|
||||
|
||||
camera->GetFrustum().Build(viewProj);
|
||||
|
||||
if (camera->GetFrustum().CullBoundingBox(m_sceneModel->GetBoundingBox()))
|
||||
return;
|
||||
}
|
||||
|
||||
static glm::mat4 s_identity = glm::mat4(1.0f);
|
||||
m_sceneModel->Draw(s_identity);
|
||||
|
||||
g_NumModels++;
|
||||
|
||||
g_pDebugRender->DrawBoundingBox(m_sceneModel->GetBoundingBox(), glm::vec3(1.0f));
|
||||
}
|
||||
|
||||
g_pDebugRender->RenderFrame();
|
||||
}
|
||||
|
||||
void Render::RenderStats()
|
||||
{
|
||||
char buffer[256];
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "Scene: %s", m_sceneName.c_str());
|
||||
ImGui::GetForegroundDrawList()->AddText(ImVec2(0.0f, 0.0f), 0xffffffff, buffer);
|
||||
snprintf(buffer, sizeof(buffer), "numModels: %d", g_NumModels);
|
||||
ImGui::GetForegroundDrawList()->AddText(ImVec2(0.0f, 15.0f), 0xffffffff, buffer);
|
||||
}
|
||||
|
||||
void Render::Present(bool vsync)
|
||||
{
|
||||
SDL_GL_SwapWindow(m_pWindow);
|
||||
|
||||
// reset stats
|
||||
g_NumModels = 0;
|
||||
}
|
||||
|
||||
void Render::ResetStates()
|
||||
@@ -242,13 +278,15 @@ void Render::LoadSceneXML(const char* filename)
|
||||
pugi::xml_parse_result result = doc.load_buffer(filedata, length);
|
||||
delete[] filedata;
|
||||
if (!result) {
|
||||
Core::Error("Render::LoadSceneXML: Error while reading level description file '%s'\nError: %s:%i",
|
||||
Core::Error("SceneManager::LoadScene: Error while reading level description file '%s'\nError: %s:%i",
|
||||
filenameBuffer, result.description(), result.offset);
|
||||
}
|
||||
|
||||
pugi::xml_node root = doc.document_element();
|
||||
const char* scenefilename = root.child("SceneFile").attribute("filename").value();
|
||||
|
||||
m_sceneName = scenefilename;
|
||||
|
||||
sprintf(filenameBuffer, "data/levels/%s/%s", filename, scenefilename);
|
||||
|
||||
if (!GetFileSystem()->IsExist(filenameBuffer)) {
|
||||
|
||||
Reference in New Issue
Block a user