94 lines
2.9 KiB
C++
94 lines
2.9 KiB
C++
#define STB_IMAGE_IMPLEMENTATION
|
|
|
|
#include <GLLoad.h>
|
|
|
|
#include <chrono>
|
|
#include <funcs.h>
|
|
#include <shader.h>
|
|
//#include <stb_image.h>
|
|
#include <thread>
|
|
#include <chrono>
|
|
#include <Window.h>
|
|
|
|
#include "Buffers.h"
|
|
#include "Draw.h"
|
|
#include "Camera.h"
|
|
|
|
NB::Camera* cam;
|
|
float deltaTime = 0.0f;
|
|
float lastFrame = 0.0f;
|
|
|
|
int main() {
|
|
NB::Window myWindow(800, 600, "Howdy Naif!");
|
|
myWindow.setWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
|
myWindow.setWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
|
myWindow.init();
|
|
auto window = myWindow.getWindow();
|
|
|
|
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
|
|
|
|
NB::Shader myShader("../shaders/vert.vs", "../shaders/frag.fs");
|
|
myShader.use();
|
|
|
|
NB::DrawBuffer myCube(myShader, {{3, GL_FLOAT}, {3, GL_FLOAT}}, GL_TRIANGLES);
|
|
std::vector<float> vert_data = {
|
|
-.5, -.5, -.5, 0, 0, 0,
|
|
0.5, -.5, -.5, 1, 0, 0,
|
|
-.5, 0.5, -.5, 0, 1, 0,
|
|
0.5, 0.5, -.5, 1, 1, 0,
|
|
-.5, -.5, 0.5, 0, 0, 1,
|
|
0.5, -.5, 0.5, 1, 0, 1,
|
|
-.5, 0.5, 0.5, 0, 1, 1,
|
|
0.5, 0.5, 0.5, 1, 1, 1,
|
|
};
|
|
std::vector<unsigned int> elmt_data = {
|
|
0, 2, 3, 0, 3, 1,
|
|
4, 7, 6, 4, 5, 7,
|
|
4, 6, 2, 4, 2, 0,
|
|
1, 3, 7, 1, 7, 5,
|
|
4, 0, 1, 4, 1, 5,
|
|
2, 6, 7, 2, 7, 3
|
|
};
|
|
myCube.generateVBO(NB::vectorToRaw(vert_data));
|
|
myCube.generateEBO(elmt_data);
|
|
|
|
NB::OrthographicCamera myCam(glm::vec3(0.0f, 0.0f, -2.0f), glm::vec3(0.0), glm::vec3(0.0, 1.0, 0.0), -2, 2, -2, 2, -2, 2);
|
|
cam = &myCam;
|
|
// myCam.setProjection(glm::perspective(glm::radians(45.0f), 800.0f/600.0f, 0.1f, 100.0f));
|
|
glm::mat4 lookMat;
|
|
|
|
// Window loop
|
|
GLenum err;
|
|
glEnable(GL_CULL_FACE);
|
|
while(!glfwWindowShouldClose(window)) {
|
|
deltaTime = glfwGetTime() - lastFrame;
|
|
lastFrame = glfwGetTime();
|
|
NB_GL_DEBUG_THROW("nothing", "during");
|
|
// Input checking
|
|
processInput(window);
|
|
|
|
std::cout << "xy: " << glm::dot(myCam.getRight(), myCam.getDirection());
|
|
std::cout << "\n\tyz : " << glm::dot(myCam.getDirection(), myCam.getUp());
|
|
std::cout << "\n\tzx : " << glm::dot(myCam.getUp(), myCam.getRight());
|
|
std::cout << "\n\tdir : " << glm::length(myCam.getDirection());
|
|
std::cout << "\n\tright: " << glm::length(myCam.getRight());
|
|
std::cout << "\n\tup : " << glm::length(myCam.getUp());
|
|
std::cout << "\n\n";
|
|
|
|
// Rendering Loop
|
|
myShader.use();
|
|
lookMat = myCam.getFlattenedMatrices();
|
|
myShader.setMat4("look", lookMat);
|
|
glClearColor(0.2f, 0.4f, 0.3f, 1.0f);
|
|
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
|
|
myCube.draw();
|
|
|
|
// Events and buffer swap
|
|
glfwPollEvents();
|
|
glfwSwapBuffers(window);
|
|
}
|
|
|
|
glfwTerminate();
|
|
|
|
return 0;
|
|
} |