Skip to content
Snippets Groups Projects
Commit ded6cbf7 authored by Philip Trettner's avatar Philip Trettner
Browse files

Merge branch 'feature/high-dpi' into 'develop'

Update cube sample to modern conventions, imgui, tg

See merge request Glow/glow-samples!10
parents 4f971804 5fd57a6a
No related branches found
No related tags found
No related merge requests found
#include "CubeSample.hh" #include "CubeSample.hh"
#include <glow/objects/Program.hh> #include <imgui/imgui.h>
#include <glow/objects/Shader.hh>
#include <glow/objects/VertexArray.hh> #include <typed-geometry/tg.hh>
#include <glow/common/scoped_gl.hh> #include <glow/common/scoped_gl.hh>
#include <glow/common/str_utils.hh> #include <glow/common/str_utils.hh>
#include <glow/objects/Program.hh>
#include <glow/objects/Shader.hh>
#include <glow/objects/VertexArray.hh>
#include <glow-extras/geometry/Cube.hh> #include <glow-extras/geometry/Cube.hh>
#include <AntTweakBar.h>
using namespace glow; using namespace glow;
using namespace glow::camera;
void CubeSample::init() void CubeSample::init()
{ {
setGui(GlfwApp::Gui::AntTweakBar);
GlfwApp::init(); // call to base! GlfwApp::init(); // call to base!
mShader = Program::createFromFile(util::pathOf(__FILE__) + "/shader"); mShader = Program::createFromFile(util::pathOf(__FILE__) + "/shader");
mCube = geometry::Cube<>().generate(); mCube = geometry::Cube<>().generate();
auto cam = getCamera(); getCamera()->setLookAt({2, 5, 4}, {0, 0, 0});
cam->setLookAt({2, 5, 4}, {0, 0, 0});
TwAddVarRW(tweakbar(), "Animate", TW_TYPE_BOOLCPP, &mAnimate, "");
} }
void CubeSample::render(float elapsedSeconds) void CubeSample::render(float elapsedSeconds)
{ {
mRuntime += elapsedSeconds; if (mAnimate)
auto time = mAnimate ? mRuntime : 0.0f; mRuntime += elapsedSeconds;
auto cam = getCamera();
GLOW_SCOPED(clearColor, 0, 0, 0, 1); GLOW_SCOPED(clearColor, 0, 0, 0, 1);
GLOW_SCOPED(enable, GL_DEPTH_TEST);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
GLOW_SCOPED(enable, GL_DEPTH_TEST);
auto shader = mShader->use(); auto shader = mShader->use();
shader.setUniform("uRuntime", time); shader["uRuntime"] = mRuntime;
shader.setUniform("uView", cam->getViewMatrix()); shader["uView"] = getCamera()->getViewMatrix();
shader.setUniform("uProj", cam->getProjectionMatrix()); shader["uProj"] = getCamera()->getProjectionMatrix();
shader.setUniform("uModel", glm::rotate(time, glm::vec3{0, 1, 0})); shader["uModel"] = tg::rotation_around(tg::dir3{0, 1, 0}, tg::radians(mRuntime));
mCube->bind().draw(); mCube->bind().draw();
} }
void CubeSample::onGui()
{
ImGui::Begin("Cube Sample");
ImGui::Checkbox("Animate", &mAnimate);
ImGui::End();
}
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
class CubeSample : public glow::glfw::GlfwApp class CubeSample : public glow::glfw::GlfwApp
{ {
public: public:
CubeSample() : GlfwApp(Gui::AntTweakBar) {} CubeSample() : GlfwApp(Gui::ImGui) {}
private: private:
glow::SharedProgram mShader; glow::SharedProgram mShader;
...@@ -21,4 +21,5 @@ private: ...@@ -21,4 +21,5 @@ private:
protected: protected:
void init() override; void init() override;
void render(float elapsedSeconds) override; void render(float elapsedSeconds) override;
void onGui() override;
}; };
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment