100 lines
2.4 KiB
C++
100 lines
2.4 KiB
C++
#include <GL/glew.h>
|
|
#include <GLFW/glfw3.h>
|
|
#include "tigl.h"
|
|
#include "FpsCam.h"
|
|
#include <iostream>
|
|
#include <glm/gtc/matrix_transform.hpp>
|
|
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();
|
|
} |