#include #include #include "tigl.h" #include "FpsCam.h" #include #include using tigl::Vertex; #pragma comment(lib, "glfw3.lib") #pragma comment(lib, "glew32s.lib") #pragma comment(lib, "opengl32.lib") GLFWwindow* window; void init(); void update(); void draw(); int main(void) { if (!glfwInit()) throw "Could not initialize glwf"; window = glfwCreateWindow(1400, 800, "Hello World", NULL, NULL); if (!window) { glfwTerminate(); throw "Could not initialize glwf"; } glfwMakeContextCurrent(window); tigl::init(); init(); while (!glfwWindowShouldClose(window)) { update(); draw(); glfwSwapBuffers(window); glfwPollEvents(); } glfwTerminate(); return 0; } FpsCam* camera; void init() { glfwSetKeyCallback(window, [](GLFWwindow* window, int key, int scancode, int action, int mods) { if (key == GLFW_KEY_ESCAPE) glfwSetWindowShouldClose(window, true); }); camera = new FpsCam(window); } void update() { camera->update(window); } void draw() { glClearColor(0.3f, 0.4f, 0.6f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); int viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); glm::mat4 projection = glm::perspective(glm::radians(75.0f), viewport[2] / (float)viewport[3], 0.01f, 100.0f); tigl::shader->setProjectionMatrix(projection); tigl::shader->setViewMatrix(camera->getMatrix()); tigl::shader->setModelMatrix(glm::mat4(1.0f)); tigl::shader->enableColor(true); glEnable(GL_DEPTH_TEST); tigl::begin(GL_TRIANGLES); tigl::addVertex(Vertex::PC(glm::vec3(-2, -1, -4), glm::vec4(1, 0, 0, 1))); tigl::addVertex(Vertex::PC(glm::vec3(2, -1, -4), glm::vec4(0, 1, 0, 1))); tigl::addVertex(Vertex::PC(glm::vec3(0, 1, -4), glm::vec4(0, 0, 1, 1))); tigl::addVertex(Vertex::PC(glm::vec3(-10, -1, -10), glm::vec4(1, 1, 1, 1))); tigl::addVertex(Vertex::PC(glm::vec3(-10, -1, 10), glm::vec4(1, 1, 1, 1))); tigl::addVertex(Vertex::PC(glm::vec3(10, -1, 10), glm::vec4(1, 1, 1, 1))); tigl::addVertex(Vertex::PC(glm::vec3(-10, -1, -10), glm::vec4(1, 1, 1, 1))); tigl::addVertex(Vertex::PC(glm::vec3(10, -1, -10), glm::vec4(1, 1, 1, 1))); tigl::addVertex(Vertex::PC(glm::vec3(10, -1, 10), glm::vec4(1, 1, 1, 1))); tigl::end(); }