Moving source files to a src folder
This commit is contained in:
47
BarinkEngine/src/Graphics/Buffer.cpp
Normal file
47
BarinkEngine/src/Graphics/Buffer.cpp
Normal file
@ -0,0 +1,47 @@
|
||||
#include "Graphics/Buffer.h"
|
||||
|
||||
|
||||
int GpuBuffer::getBufferID() {
|
||||
return id;
|
||||
}
|
||||
|
||||
void GpuBuffer::createBuffer() {
|
||||
glGenBuffers(1, (GLuint*) &id);
|
||||
}
|
||||
|
||||
void GpuBuffer::setBufferData(void* data, size_t dataSize, bool elementBuffer = false ) {
|
||||
|
||||
if (elementBuffer) {
|
||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, dataSize, data, GL_STATIC_DRAW);
|
||||
|
||||
}
|
||||
else {
|
||||
glBufferData(GL_ARRAY_BUFFER, dataSize, data, GL_STATIC_DRAW);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void GpuBuffer::Bind(bool elementBuffer = false ) {
|
||||
if (elementBuffer) {
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, id);
|
||||
|
||||
}
|
||||
else {
|
||||
glBindBuffer(GL_ARRAY_BUFFER, id);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void GpuBuffer::Unbind(bool elementBuffer = false) {
|
||||
if (elementBuffer) {
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||
}
|
||||
else {
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void GpuBuffer::Delete() {
|
||||
glDeleteBuffers(1, (GLuint*) &id);
|
||||
}
|
22
BarinkEngine/src/Graphics/Camera.cpp
Normal file
22
BarinkEngine/src/Graphics/Camera.cpp
Normal file
@ -0,0 +1,22 @@
|
||||
#include "Graphics/Camera.h"
|
||||
|
||||
Camera::Camera(glm::vec3 position, glm::vec3 rotation, float zoom)
|
||||
: Position(position), Rotation(rotation), Zoom(zoom) {
|
||||
|
||||
Front = glm::vec3(-1.0f, 0.0f, 0.0f);
|
||||
Right = glm::vec3(0.0f, 0.0f, 1.0f);
|
||||
Up = glm::vec3(0.0f, 1.0f, 0.0f);
|
||||
|
||||
}
|
||||
|
||||
Camera::~Camera() {
|
||||
|
||||
}
|
||||
|
||||
glm::mat4 Camera::GetViewMatrix() {
|
||||
return glm::lookAt(
|
||||
Position,
|
||||
Position + Front,
|
||||
Up
|
||||
);
|
||||
}
|
38
BarinkEngine/src/Graphics/GUI/GUIManager.cpp
Normal file
38
BarinkEngine/src/Graphics/GUI/GUIManager.cpp
Normal file
@ -0,0 +1,38 @@
|
||||
#include "Graphics/GUI/GUIManager.h"
|
||||
#include "imgui.h"
|
||||
#include "backends/imgui_impl_opengl3.h"
|
||||
#include <backends/imgui_impl_glfw.cpp>
|
||||
|
||||
GUIManager::GUIManager(BarinkWindow* window)
|
||||
: currentwindow(window)
|
||||
{
|
||||
IMGUI_CHECKVERSION();
|
||||
ImGui::CreateContext();
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
(void)io;
|
||||
|
||||
ImGui::StyleColorsDark();
|
||||
ImGui_ImplGlfw_InitForOpenGL(currentwindow->windowptr(), true);
|
||||
ImGui_ImplOpenGL3_Init("#version 440");
|
||||
|
||||
|
||||
ImGui_ImplGlfw_NewFrame();
|
||||
ImGui_ImplOpenGL3_NewFrame();
|
||||
|
||||
}
|
||||
|
||||
GUIManager::~GUIManager()
|
||||
{
|
||||
ImGui_ImplOpenGL3_Shutdown();
|
||||
ImGui_ImplGlfw_Shutdown();
|
||||
ImGui::DestroyContext();
|
||||
}
|
||||
|
||||
|
||||
void GUIManager::Render()
|
||||
{
|
||||
|
||||
|
||||
ImGui::Render();
|
||||
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
|
||||
}
|
10
BarinkEngine/src/Graphics/Material.cpp
Normal file
10
BarinkEngine/src/Graphics/Material.cpp
Normal file
@ -0,0 +1,10 @@
|
||||
#include "../Include/Graphics/Material.h"
|
||||
|
||||
Material::Material(const Shader& shader) :
|
||||
shader(shader) {
|
||||
}
|
||||
|
||||
|
||||
void Material::Apply() {
|
||||
shader.setUniformVec3("Color", Color);
|
||||
}
|
94
BarinkEngine/src/Graphics/ModelImporter.cpp
Normal file
94
BarinkEngine/src/Graphics/ModelImporter.cpp
Normal file
@ -0,0 +1,94 @@
|
||||
#include "AssetManager/ModelImporter.h"
|
||||
|
||||
|
||||
BarinkEngine::SceneObject* BarinkEngine::ModelImporter::Import(const std::string path)
|
||||
{
|
||||
|
||||
SceneObject* root = new SceneObject(std::string(path), nullptr);
|
||||
|
||||
Assimp::Importer importer;
|
||||
const aiScene* scene = importer.ReadFile(path, aiProcess_Triangulate | aiProcess_FlipUVs);
|
||||
|
||||
aiNode* currentNode = scene->mRootNode;
|
||||
|
||||
std::vector<BarinkEngine::Mesh> meshes = processNode(currentNode, scene);
|
||||
|
||||
return root;
|
||||
|
||||
}
|
||||
|
||||
std::vector<BarinkEngine::Mesh> BarinkEngine::ModelImporter::processNode(aiNode* node, const aiScene* scene)
|
||||
{
|
||||
|
||||
std::vector<BarinkEngine::Mesh> meshes;
|
||||
|
||||
for (unsigned int i = 0; i < node->mNumMeshes; i++) {
|
||||
aiMesh* mesh = scene->mMeshes[node->mMeshes[i]];
|
||||
meshes.push_back(processMesh(mesh, scene));
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < node->mNumChildren; i++) {
|
||||
auto m2 = processNode(node->mChildren[i], scene);
|
||||
|
||||
for(auto m : m2) {
|
||||
meshes.push_back(m);
|
||||
}
|
||||
}
|
||||
|
||||
return meshes;
|
||||
}
|
||||
|
||||
BarinkEngine::Mesh BarinkEngine::ModelImporter::processMesh(aiMesh* mesh, const aiScene* scene) {
|
||||
std::vector<unsigned int> indices;
|
||||
std::vector<BarinkEngine::Vertex> vertices;
|
||||
|
||||
ProcessVertices(mesh, vertices);
|
||||
|
||||
ProcessIndices(mesh, indices);
|
||||
|
||||
BarinkEngine::Mesh result;
|
||||
result.vertices = vertices;
|
||||
result.elements = indices;
|
||||
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
void ProcessVertices(aiMesh* mesh, std::vector<BarinkEngine::Vertex>& out_vertices) {
|
||||
// Process vertices
|
||||
for (unsigned int i = 0; i < mesh->mNumVertices; i++) {
|
||||
BarinkEngine::Vertex v{};
|
||||
glm::vec3 vector;
|
||||
vector.x = mesh->mVertices[i].x;
|
||||
vector.y = mesh->mVertices[i].y;
|
||||
vector.z = mesh->mVertices[i].z;
|
||||
|
||||
v.vertices = vector;
|
||||
|
||||
if (mesh->mTextureCoords[0]) {
|
||||
|
||||
glm::vec2 texCoord;
|
||||
|
||||
texCoord.x = mesh->mTextureCoords[0][i].x;
|
||||
texCoord.y = mesh->mTextureCoords[0][i].y;
|
||||
|
||||
v.uv = texCoord;
|
||||
|
||||
}
|
||||
|
||||
out_vertices.push_back(v);
|
||||
}
|
||||
}
|
||||
|
||||
void ProcessIndices(aiMesh* mesh, std::vector<unsigned int>& out_indices) {
|
||||
// Process Indices
|
||||
for (unsigned int i = 0; i < mesh->mNumFaces; i++) {
|
||||
aiFace face = mesh->mFaces[i];
|
||||
if (face.mNumIndices < 3)
|
||||
continue;
|
||||
for (unsigned int j = 0; j < face.mNumIndices; j++) {
|
||||
out_indices.push_back(face.mIndices[j]);
|
||||
}
|
||||
}
|
||||
}
|
46
BarinkEngine/src/Graphics/RenderSurface.cpp
Normal file
46
BarinkEngine/src/Graphics/RenderSurface.cpp
Normal file
@ -0,0 +1,46 @@
|
||||
#include "Graphics/RenderSurface.h";
|
||||
|
||||
RenderSurface::RenderSurface(){
|
||||
shader = new Shader("build/SandboxAppliction/Debug/renderSuface.vs", "build/SandboxApplication/Debug/renderSurface.fs");
|
||||
|
||||
|
||||
|
||||
verts = std::vector<glm::vec3>{
|
||||
{-0.5f, 0.5f, 0.0f}, // 0
|
||||
{-0.5f, -0.5f, 0.0f}, // 1
|
||||
{0.5f, -0.5f, 0.0f}, // 2
|
||||
{0.5f, 0.5f, 0.0f}, // 3
|
||||
};
|
||||
|
||||
indices = std::vector<unsigned int>{
|
||||
0,2,1,
|
||||
0,3,2
|
||||
};
|
||||
|
||||
VAO.Create();
|
||||
VAO.Bind();
|
||||
|
||||
vertexBuffer.createBuffer();
|
||||
vertexBuffer.Bind(false);
|
||||
vertexBuffer.setBufferData(&verts[0], verts.size() * sizeof(glm::vec3), false);
|
||||
|
||||
elementBuffer.createBuffer();
|
||||
elementBuffer.Bind(true);
|
||||
elementBuffer.setBufferData(&indices[0], indices.size() * sizeof(unsigned int), true);
|
||||
|
||||
VAO.AttachAttribute(0, 3, 0);
|
||||
|
||||
vertexBuffer.Unbind(false);
|
||||
VAO.Unbind();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
RenderSurface::~RenderSurface() {
|
||||
delete shader;
|
||||
}
|
||||
|
||||
void RenderSurface::Draw() {
|
||||
|
||||
}
|
53
BarinkEngine/src/Graphics/Renderable.cpp
Normal file
53
BarinkEngine/src/Graphics/Renderable.cpp
Normal file
@ -0,0 +1,53 @@
|
||||
#include "Graphics/Renderable.h"
|
||||
#include "AssetManager/ModelImporter.h"
|
||||
#include "PerfCounter.h"
|
||||
|
||||
|
||||
BarinkEngine::Renderable::Renderable()
|
||||
{
|
||||
/*
|
||||
|
||||
VAO.Create();
|
||||
VAO.Bind();
|
||||
|
||||
|
||||
vertexBuffer.createBuffer();
|
||||
vertexBuffer.Bind(false);
|
||||
vertexBuffer.setBufferData(&meshes[0].vertices[0], meshes[0].vertices.size() * sizeof(BarinkEngine::Vertex), false);
|
||||
|
||||
elementBuffer.createBuffer();
|
||||
elementBuffer.Bind(true);
|
||||
elementBuffer.setBufferData(&meshes[0].elements[0], meshes[0].elements.size() * sizeof(unsigned int), true);
|
||||
|
||||
VAO.AttachAttribute(0, 3, sizeof(BarinkEngine::Vertex));
|
||||
|
||||
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(BarinkEngine::Vertex),(void* )offsetof(BarinkEngine::Vertex, vertices));
|
||||
glEnableVertexAttribArray(1);
|
||||
|
||||
//vertexBuffer.Unbind(false);
|
||||
|
||||
VAO.Unbind();
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
BarinkEngine::Renderable::~Renderable()
|
||||
{
|
||||
// glDeleteBuffers(1, &UV_id);
|
||||
}
|
||||
|
||||
// Draw call Example !!
|
||||
/*
|
||||
VAO.Bind();
|
||||
elementBuffer.Bind(true);
|
||||
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
glUniform1i(glGetUniformLocation(shader->id, "Texture"), GL_TEXTURE0);
|
||||
texture->Bind();
|
||||
|
||||
ES->verts = meshes[0].vertices.size();
|
||||
ES->DC++;
|
||||
glDrawElements(GL_TRIANGLES, static_cast<unsigned int>(meshes[0].elements.size()), GL_UNSIGNED_INT, NULL);
|
||||
VAO.Unbind();
|
||||
*/
|
||||
|
25
BarinkEngine/src/Graphics/Renderer.cpp
Normal file
25
BarinkEngine/src/Graphics/Renderer.cpp
Normal file
@ -0,0 +1,25 @@
|
||||
#include "Graphics/Renderer.h"
|
||||
|
||||
BarinkEngine::Renderer::Renderer()
|
||||
{
|
||||
models = std::vector<Renderable*>();
|
||||
}
|
||||
|
||||
BarinkEngine::Renderer::~Renderer()
|
||||
{
|
||||
// CleanUp!
|
||||
}
|
||||
|
||||
void BarinkEngine::Renderer::Render()
|
||||
{
|
||||
|
||||
for (auto model : models) {
|
||||
//model->Draw();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void BarinkEngine::Renderer::Submit(Renderable* model)
|
||||
{
|
||||
models.push_back(model);
|
||||
}
|
124
BarinkEngine/src/Graphics/Shader.cpp
Normal file
124
BarinkEngine/src/Graphics/Shader.cpp
Normal file
@ -0,0 +1,124 @@
|
||||
#include "Graphics/Shader.h"
|
||||
#include "spdlog/spdlog.h"
|
||||
Shader::Shader(const std::string vertexShaderPath, const std::string fragmentShaderPath)
|
||||
{
|
||||
char infoLog[512];
|
||||
int succes;
|
||||
|
||||
char* vertexCode = readFile(vertexShaderPath.c_str());
|
||||
//spdlog::info(vertexCode);
|
||||
unsigned int vertId = glCreateShader(GL_VERTEX_SHADER);
|
||||
|
||||
glShaderSource(vertId, 1, &vertexCode, NULL);
|
||||
glCompileShader(vertId);
|
||||
|
||||
glGetShaderiv(vertId, GL_COMPILE_STATUS, &succes);
|
||||
if(!succes){
|
||||
glGetShaderInfoLog(vertId, 512, NULL, infoLog);
|
||||
spdlog::error( "Vertex shader has compile error {}", infoLog);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
char* fragmentCode = readFile(fragmentShaderPath.c_str());
|
||||
//spdlog::info(fragmentCode);
|
||||
unsigned int fragId = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
|
||||
|
||||
|
||||
glShaderSource(fragId, 1, &fragmentCode, NULL);
|
||||
glCompileShader(fragId);
|
||||
|
||||
|
||||
glGetShaderiv(fragId, GL_COMPILE_STATUS, &succes);
|
||||
if(!succes){
|
||||
glGetShaderInfoLog(fragId, 512, NULL, infoLog);
|
||||
spdlog::error("Fragment shader has compile error {}", infoLog);
|
||||
return;
|
||||
}
|
||||
|
||||
id = glCreateProgram();
|
||||
|
||||
glAttachShader(id, vertId);
|
||||
glAttachShader(id, fragId);
|
||||
glLinkProgram(id);
|
||||
|
||||
|
||||
int success;
|
||||
glGetProgramiv(id, GL_LINK_STATUS, &success);
|
||||
if(!success) {
|
||||
glGetProgramInfoLog(id, 512, NULL, infoLog);
|
||||
printf("ERROR::SHADER_PROGRAM::LINKING_FAILED\n %s", infoLog);
|
||||
}
|
||||
|
||||
|
||||
delete vertexCode;
|
||||
delete fragmentCode;
|
||||
|
||||
|
||||
}
|
||||
char* Shader::readFile (const char* filePath){
|
||||
|
||||
std::ifstream file ;
|
||||
file.open(filePath);
|
||||
|
||||
if(file.is_open() == false){
|
||||
spdlog::info("File not found.");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
// Determine the file size!
|
||||
file.seekg(0, std::ios::end);
|
||||
size_t filesize = file.tellg();
|
||||
|
||||
// Undo previous seek.
|
||||
file.seekg(0, std::ios::beg);
|
||||
//spdlog::info("filesize: {}", filesize);
|
||||
|
||||
|
||||
// Create a big enough buffer for the file
|
||||
|
||||
size_t bufferSize = filesize + 3;
|
||||
char* FileBuffer = new char[bufferSize];
|
||||
|
||||
memset(FileBuffer, '\0', bufferSize);
|
||||
|
||||
// read the whole file
|
||||
file.read(FileBuffer, filesize);
|
||||
|
||||
return FileBuffer;
|
||||
}
|
||||
|
||||
void Shader::Use()
|
||||
{
|
||||
glUseProgram(id);
|
||||
}
|
||||
|
||||
|
||||
void Shader::setUniformMat4(std::string uniformName, glm::mat4 matrix4) const
|
||||
{
|
||||
glUniformMatrix4fv(glGetUniformLocation(id, uniformName.c_str()), 1, GL_FALSE, glm::value_ptr(matrix4));
|
||||
}
|
||||
void Shader::setUniformVec4(std::string uniformName, glm::vec4 vector4) const
|
||||
{
|
||||
glUniform4fv(glGetUniformLocation(id, uniformName.c_str()), 1, glm::value_ptr(vector4));
|
||||
}
|
||||
void Shader::setUniformVec3(std::string uniformName, glm::vec3 vector3) const
|
||||
{
|
||||
glUniform3fv(glGetUniformLocation(id, uniformName.c_str()), 1, glm::value_ptr(vector3));
|
||||
}
|
||||
void Shader::setUniformVec2(std::string uniformName, glm::vec2 vector2) const
|
||||
{
|
||||
glUniform2fv(glGetUniformLocation(id, uniformName.c_str()),1, glm::value_ptr(vector2));
|
||||
}
|
||||
|
||||
void Shader::setUniformFloat(std::string uniformName, float value) const
|
||||
{
|
||||
glUniform1f(glGetUniformLocation(id, uniformName.c_str()), value);
|
||||
}
|
||||
|
||||
void Shader::setUniformInt(std::string uniformName, int value) const
|
||||
{
|
||||
glUniform1i(glGetUniformLocation(id, uniformName.c_str()), value);
|
||||
}
|
40
BarinkEngine/src/Graphics/Texture.cpp
Normal file
40
BarinkEngine/src/Graphics/Texture.cpp
Normal file
@ -0,0 +1,40 @@
|
||||
#include "../Include/Graphics/Texture.h"
|
||||
#include <glad/glad.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
#define STB_IMAGE_IMPLEMENTATION
|
||||
#include "Graphics/stb_image.h"
|
||||
#include <iostream>
|
||||
|
||||
Texture::Texture(const std::string texturePath) {
|
||||
|
||||
int width, height, channels;
|
||||
unsigned char* data = stbi_load(texturePath.c_str(), &width, &height, &channels, 0);
|
||||
std::cout << channels << std::endl;
|
||||
|
||||
if (data) {
|
||||
glGenTextures(1, &Id);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, Id);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
||||
}
|
||||
else {
|
||||
spdlog::error("Failed to load image (%s)", texturePath );
|
||||
}
|
||||
stbi_image_free(data);
|
||||
|
||||
}
|
||||
|
||||
void Texture::Bind() {
|
||||
glBindTexture(GL_TEXTURE_2D, Id);
|
||||
}
|
||||
|
||||
void Texture::Unbind() {
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
}
|
25
BarinkEngine/src/Graphics/VertexArray.cpp
Normal file
25
BarinkEngine/src/Graphics/VertexArray.cpp
Normal file
@ -0,0 +1,25 @@
|
||||
#include "Graphics/VertexArray.h"
|
||||
#include <glad/glad.h>
|
||||
|
||||
void VertexArray::Create(){
|
||||
glGenVertexArrays(1, &id);
|
||||
}
|
||||
|
||||
void VertexArray::Bind(){
|
||||
glBindVertexArray(id);
|
||||
}
|
||||
|
||||
void VertexArray::Unbind(){
|
||||
glBindVertexArray(0);
|
||||
}
|
||||
|
||||
void VertexArray::Delete() {
|
||||
glDeleteVertexArrays(1, &id);
|
||||
}
|
||||
|
||||
|
||||
void VertexArray::AttachAttribute(unsigned int index , int size, int stride ){
|
||||
glVertexAttribPointer(index, size, GL_FLOAT, GL_FALSE, stride, 0);
|
||||
glEnableVertexAttribArray(0);
|
||||
}
|
||||
|
11
BarinkEngine/src/Graphics/shaders/RenderSurfaceFrag.shader
Normal file
11
BarinkEngine/src/Graphics/shaders/RenderSurfaceFrag.shader
Normal file
@ -0,0 +1,11 @@
|
||||
#version 440 core
|
||||
layout (location = 0) in vec2 aPos;
|
||||
layout (location = 1) in vec2 aTexCoords;
|
||||
|
||||
|
||||
out vec2 aTexCoords;
|
||||
|
||||
void main(){
|
||||
gl_Position = vec4(aPos.xy , 0.0 ,1.0);
|
||||
aTexCoords = aTexCoords;
|
||||
}
|
11
BarinkEngine/src/Graphics/shaders/RenderSurfaceVert.shader
Normal file
11
BarinkEngine/src/Graphics/shaders/RenderSurfaceVert.shader
Normal file
@ -0,0 +1,11 @@
|
||||
#version 440 core
|
||||
out vec4 FragColor;
|
||||
|
||||
in vec2 TexCoords;
|
||||
|
||||
uniform sampler2D screenTexture;
|
||||
|
||||
|
||||
void main(){
|
||||
FragColor = texture(screenTexture, aTexCoords);
|
||||
}
|
11
BarinkEngine/src/Graphics/shaders/fragment.shader
Normal file
11
BarinkEngine/src/Graphics/shaders/fragment.shader
Normal file
@ -0,0 +1,11 @@
|
||||
#version 440 core
|
||||
|
||||
out vec4 FragColor;
|
||||
uniform vec3 Color;
|
||||
in vec2 TexCoord;
|
||||
uniform sampler2D Texture;
|
||||
|
||||
|
||||
void main(){
|
||||
FragColor = mix ( texture(Texture, TexCoord), vec4(Color, 1.0f), 0.5f);
|
||||
}
|
15
BarinkEngine/src/Graphics/shaders/vertex.shader
Normal file
15
BarinkEngine/src/Graphics/shaders/vertex.shader
Normal file
@ -0,0 +1,15 @@
|
||||
#version 440 core
|
||||
in layout(location=0) vec3 aPos;
|
||||
in layout(location=1) vec2 uv;
|
||||
|
||||
uniform mat4 M;
|
||||
uniform mat4 V;
|
||||
uniform mat4 P;
|
||||
|
||||
out vec2 TexCoord;
|
||||
|
||||
|
||||
void main() {
|
||||
TexCoord = uv;
|
||||
gl_Position = P * V * M * vec4(aPos.x, aPos.y, aPos.z, 1.0);
|
||||
}
|
84
BarinkEngine/src/Graphics/window.cpp
Normal file
84
BarinkEngine/src/Graphics/window.cpp
Normal file
@ -0,0 +1,84 @@
|
||||
#include "Graphics/Window.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <iostream>
|
||||
#include <GLFW/glfw3.h>
|
||||
#include <spdlog/spdlog.h>
|
||||
#include "../Include/EventSystem/Event.h"
|
||||
|
||||
bool BarinkWindow::InitGLFW(){
|
||||
if(!glfwInit())
|
||||
{
|
||||
spdlog::error("Failed to initialise GLFW!");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
BarinkWindow::BarinkWindow(const int width, const int height) :
|
||||
Width(width), Height(height), FullScreen(false){
|
||||
if (InitGLFW()==false) {
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
window = glfwCreateWindow(Width, Height, "BarinkEngine", NULL, NULL);
|
||||
|
||||
if( !window)
|
||||
{
|
||||
spdlog::error("GLFW failed to create window!");
|
||||
glfwTerminate();
|
||||
return;
|
||||
}
|
||||
|
||||
glfwMakeContextCurrent(window);
|
||||
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
|
||||
printf("Failed to initialize GLAD!\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
// Set vsync off !!
|
||||
glfwSwapInterval(0);
|
||||
|
||||
VulkanSupported = glfwVulkanSupported();
|
||||
|
||||
glfwGetFramebufferSize(window, &Width, &Height);
|
||||
glViewport(0,0, Width, Height);
|
||||
|
||||
|
||||
|
||||
glClearColor(0.2f, 0.2f, 0.2f, 1.0f);
|
||||
|
||||
}
|
||||
|
||||
|
||||
BarinkWindow::~BarinkWindow(){
|
||||
|
||||
glfwTerminate();
|
||||
}
|
||||
|
||||
GLFWwindow* BarinkWindow::windowptr()
|
||||
{
|
||||
return window;
|
||||
}
|
||||
|
||||
bool BarinkWindow::WindowShouldClose(){
|
||||
return glfwWindowShouldClose(window);
|
||||
}
|
||||
|
||||
void BarinkWindow::Poll()
|
||||
{
|
||||
glfwPollEvents();
|
||||
}
|
||||
|
||||
void BarinkWindow::SwapBuffers()
|
||||
{
|
||||
glfwSwapBuffers(window);
|
||||
}
|
||||
|
||||
|
||||
void BarinkWindow::ReceiveEvent(Event& incident)
|
||||
{
|
||||
std::cout << "EVENT RECEIVED: " << incident.name << std::endl;
|
||||
|
||||
}
|
Reference in New Issue
Block a user