Vivid
Loading...
Searching...
No Matches
suzanne_example.cpp
1#include "Vivid.h"
2
4{
5private:
6 Vivid::Maths::Vec3 lightColor = Vivid::Maths::Vec3(1.0f, 0.5f, 1.0f);
7 Vivid::Maths::Vec3 lightPos = Vivid::Maths::Vec3(0.0f, 0.0f, -100.0f);
8 Vivid::Maths::Vec2* m_PrevMousePosition = new Vivid::Maths::Vec2(0.0f, 0.0f);
9
10 glm::vec3 suzannePosition = glm::vec3(0, 50, -200);
11 Vivid::Mesh lightMesh;
12 Ref<Vivid::Shader> lightShader;
13
14public:
15 void Setup() override
16 {
17 // Can write custom opengl confs here
18 OPENGL_CONFS
19
21
22 // Light Info
23 Vivid::Quad3d cube(10.0f, lightColor);
24 // lightMesh = Vivid::Mesh(cube);
25 // light = Vivid::PointLight(lightPos, lightColor, &lightMesh);
26 // lightShader = MakeRef<Vivid::Shader>("./../assets/shaders/basic.vertexShader.glsl",
27 // "./../assets/shaders/basic.pixelShader.glsl");
28 // light.Draw(lightShader);
29
30 // Creating a shader
31 Ref<Vivid::Shader> shader = MakeRef<Vivid::Shader>("./../assets/shaders/phong.vertexShader.glsl",
32 "./../assets/shaders/phong.pixelShader.glsl");
33
34 // Drawing other meshes
35 Vivid::Mesh mesh1("./../assets/obj/suzanne.obj");
36 mesh1.BindShader(shader);
37
38 mesh1.Update(glm::translate(glm::mat4(1.0f), suzannePosition));
39 shader->SetUniform3f("lightColor", lightColor);
40 shader->SetUniform3f("lightPos", lightPos);
41 shader->SetUniform1f("intensity", 2.0f);
42
43 shader->Bind();
44 mesh1.Update(glm::translate(glm::mat4(1.0f), suzannePosition));
45 mesh1.Draw(Application::GetInstance()->GetCamera());
46
47 // light.UpdateLightPosition(lightPos);
48 // light.Draw(lightShader);
49 }
50
51 void Draw() override
52 {
53 Ref<Vivid::Shader> shader = MakeRef<Vivid::Shader>("./../assets/shaders/phong.vertexShader.glsl",
54 "./../assets/shaders/phong.pixelShader.glsl");
55
56 // Drawing other meshes
57 Vivid::Mesh mesh1("./../assets/obj/suzanne.obj");
58 mesh1.BindShader(shader);
59
60 shader->SetUniform3f("lightColor", lightColor);
61 shader->SetUniform3f("lightPos", lightPos);
62 shader->SetUniform1f("intensity", 2.0f);
63
64 shader->Bind();
65 mesh1.Update(glm::translate(glm::mat4(1.0f), suzannePosition));
66 mesh1.Draw(Application::GetInstance()->GetCamera());
67
68 // light.UpdateLightPosition(lightPos);
69 // light.Draw(lightShader);
70 }
71
72 void ImGuiRender() override
73 {
74 ImGui::Begin("Debug");
75 ImGui::SliderFloat3("Translation Model 1", &suzannePosition.x, -500.0f, 500.0f);
76 ImGui::SliderFloat3("Light Position", &lightPos.x, -500.0f, 500.0f);
77
78 ImGui::Text("Application average %.3f ms/frame (%.1f FPS)",
79 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
80
81 ImGui::End();
82 }
83};
84
85Application* Vivid::CreateApplication()
86{
87 Application* app = Application::GetInstance(1920, 1080, "Vivid: Suzanne Example");
88 app->SetRenderingInterface(new ExampleInterface);
89 return app;
90}
91
92int main()
93{
94 return Vivid::main(0, nullptr);
95}
Application class.
Definition: Application.h:19
void Setup() override
Setup function.
void ImGuiRender() override
ImGuiRender function.
void Draw() override
Draw function.
RenderingInterface class.
Contains a Mesh.
Definition: Mesh.h:32
static void Init(int reserveVertices=10000)
Initializes the Renderer2D.
Definition: Renderer2D.cpp:9
Contains a 2D vector.
Definition: Vec.h:108
Contains a 3D vector.
Definition: Vec.h:51