mirror of
https://github.com/Ed94/DuctTaped_GL.git
synced 2024-12-22 15:04:47 -08:00
extra commit...
This commit is contained in:
parent
6d7750ebfb
commit
da4a38c11f
@ -1,19 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
// GLEW
|
|
||||||
#include <glew.h>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace DGL
|
|
||||||
{
|
|
||||||
// Fundamental Types
|
|
||||||
|
|
||||||
using gChar = GLchar ;
|
|
||||||
using gBitfield = GLbitfield;
|
|
||||||
using gFloat = GLfloat ;
|
|
||||||
using gFloatClamped = GLclampf ;
|
|
||||||
using gInt = GLint ;
|
|
||||||
using gUInt = GLuint ;
|
|
||||||
using gSize = GLsizei ;
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
// OpenGL
|
|
||||||
#include <glew.h >
|
|
||||||
#include <glm/detail/type_vec3.hpp>
|
|
||||||
#include <glm/detail/type_vec2.hpp>
|
|
||||||
|
|
||||||
|
|
||||||
// Duck Tape
|
|
||||||
#include "DGL_FundamentalTypes.hpp"
|
|
||||||
|
|
||||||
// Non-Standard C++
|
|
||||||
#include "Cpp_Alias.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace DGL
|
|
||||||
{
|
|
||||||
namespace Generic
|
|
||||||
{
|
|
||||||
template<typename Type>
|
|
||||||
using Vector3 = glm::tvec3<Type>;
|
|
||||||
|
|
||||||
template<typename Type>
|
|
||||||
using Vector2 = glm::tvec2<Type>;
|
|
||||||
}
|
|
||||||
|
|
||||||
using DataPtr = ptr<GLvoid>;
|
|
||||||
|
|
||||||
template<typename ReferenceType>
|
|
||||||
using ID = gUInt;
|
|
||||||
|
|
||||||
// ID Reference Types
|
|
||||||
|
|
||||||
class VertexBuffer ;
|
|
||||||
class NormalBuffer ;
|
|
||||||
class Vec3 ;
|
|
||||||
class Matrix ;
|
|
||||||
class Shader ;
|
|
||||||
class ShaderProgram;
|
|
||||||
class VertexArray ;
|
|
||||||
class TextureBuffer;
|
|
||||||
class ElementBuffer;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
using Matrix4x4 = glm::mat4;
|
|
||||||
|
|
||||||
using Vector2 = glm::vec2;
|
|
||||||
using Vector3 = glm::vec3;
|
|
||||||
using Vector4 = glm::vec4;
|
|
||||||
|
|
||||||
struct LinearColor
|
|
||||||
{
|
|
||||||
gFloatClamped Red, Green, Blue, Alpha;
|
|
||||||
|
|
||||||
LinearColor(gFloatClamped _red, gFloatClamped _green, gFloatClamped _blue, gFloatClamped _alpha) :
|
|
||||||
Red(_red), Green(_green), Blue(_blue), Alpha(_alpha) {};
|
|
||||||
|
|
||||||
sfn Vector() -> Vector3
|
|
||||||
{
|
|
||||||
return Vector3(Red, Green, Blue);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
#pragma once
|
|
@ -1,203 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef SHADER_H
|
|
||||||
#define SHADER_H
|
|
||||||
|
|
||||||
//#include <glad/glad.h>
|
|
||||||
#include <glew.h>
|
|
||||||
#include <glm/glm.hpp>
|
|
||||||
#include "DGL.hpp"
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <fstream>
|
|
||||||
#include <sstream>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
class Shader
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
unsigned int ID;
|
|
||||||
// constructor generates the shader on the fly
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
Shader(const char* vertexPath, const char* fragmentPath, const char* geometryPath = nullptr)
|
|
||||||
{
|
|
||||||
// 1. retrieve the vertex/fragment source code from filePath
|
|
||||||
std::string vertexCode;
|
|
||||||
std::string fragmentCode;
|
|
||||||
std::string geometryCode;
|
|
||||||
std::ifstream vShaderFile;
|
|
||||||
std::ifstream fShaderFile;
|
|
||||||
std::ifstream gShaderFile;
|
|
||||||
// ensure ifstream objects can throw exceptions:
|
|
||||||
vShaderFile.exceptions (std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
fShaderFile.exceptions (std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
gShaderFile.exceptions (std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// open files
|
|
||||||
vShaderFile.open(vertexPath);
|
|
||||||
fShaderFile.open(fragmentPath);
|
|
||||||
std::stringstream vShaderStream, fShaderStream;
|
|
||||||
// read file's buffer contents into streams
|
|
||||||
vShaderStream << vShaderFile.rdbuf();
|
|
||||||
fShaderStream << fShaderFile.rdbuf();
|
|
||||||
// close file handlers
|
|
||||||
vShaderFile.close();
|
|
||||||
fShaderFile.close();
|
|
||||||
// convert stream into string
|
|
||||||
vertexCode = vShaderStream.str();
|
|
||||||
fragmentCode = fShaderStream.str();
|
|
||||||
// if geometry shader path is present, also load a geometry shader
|
|
||||||
if (geometryPath != nullptr)
|
|
||||||
{
|
|
||||||
gShaderFile.open(geometryPath);
|
|
||||||
std::stringstream gShaderStream;
|
|
||||||
gShaderStream << gShaderFile.rdbuf();
|
|
||||||
gShaderFile.close();
|
|
||||||
geometryCode = gShaderStream.str();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (std::ifstream::failure e)
|
|
||||||
{
|
|
||||||
std::cout << "ERROR::SHADER::FILE_NOT_SUCCESFULLY_READ" << std::endl;
|
|
||||||
}
|
|
||||||
const char* vShaderCode = vertexCode.c_str();
|
|
||||||
const char* fShaderCode = fragmentCode.c_str();
|
|
||||||
// 2. compile shaders
|
|
||||||
unsigned int vertex, fragment;
|
|
||||||
// vertex shader
|
|
||||||
|
|
||||||
|
|
||||||
vertex = glCreateShader(GL_VERTEX_SHADER);
|
|
||||||
glShaderSource(vertex, 1, &vShaderCode, NULL);
|
|
||||||
glCompileShader(vertex);
|
|
||||||
checkCompileErrors(vertex, "VERTEX");
|
|
||||||
// fragment Shader
|
|
||||||
fragment = glCreateShader(GL_FRAGMENT_SHADER);
|
|
||||||
glShaderSource(fragment, 1, &fShaderCode, NULL);
|
|
||||||
glCompileShader(fragment);
|
|
||||||
checkCompileErrors(fragment, "FRAGMENT");
|
|
||||||
// if geometry shader is given, compile geometry shader
|
|
||||||
unsigned int geometry;
|
|
||||||
if (geometryPath != nullptr)
|
|
||||||
{
|
|
||||||
const char* gShaderCode = geometryCode.c_str();
|
|
||||||
geometry = glCreateShader(GL_GEOMETRY_SHADER);
|
|
||||||
glShaderSource(geometry, 1, &gShaderCode, NULL);
|
|
||||||
glCompileShader(geometry);
|
|
||||||
checkCompileErrors(geometry, "GEOMETRY");
|
|
||||||
}
|
|
||||||
|
|
||||||
DGL::MakeShaderProgram(ID, vertex, fragment);
|
|
||||||
|
|
||||||
// shader Program
|
|
||||||
/* ID = glCreateProgram();
|
|
||||||
glAttachShader(ID, vertex);
|
|
||||||
glAttachShader(ID, fragment);
|
|
||||||
if (geometryPath != nullptr)
|
|
||||||
glAttachShader(ID, geometry);
|
|
||||||
glLinkProgram(ID);*/
|
|
||||||
checkCompileErrors(ID, "PROGRAM");
|
|
||||||
// delete the shaders as they're linked into our program now and no longer necessery
|
|
||||||
glDeleteShader(vertex);
|
|
||||||
glDeleteShader(fragment);
|
|
||||||
if (geometryPath != nullptr)
|
|
||||||
glDeleteShader(geometry);
|
|
||||||
|
|
||||||
}
|
|
||||||
// activate the shader
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void use()
|
|
||||||
{
|
|
||||||
glUseProgram(ID);
|
|
||||||
}
|
|
||||||
// utility uniform functions
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void setBool(const std::string& name, bool value) const
|
|
||||||
{
|
|
||||||
glUniform1i(glGetUniformLocation(ID, name.c_str()), (int)value);
|
|
||||||
}
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void setInt(const std::string& name, int value) const
|
|
||||||
{
|
|
||||||
glUniform1i(glGetUniformLocation(ID, name.c_str()), value);
|
|
||||||
}
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void setFloat(const std::string& name, float value) const
|
|
||||||
{
|
|
||||||
glUniform1f(glGetUniformLocation(ID, name.c_str()), value);
|
|
||||||
}
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void setVec2(const std::string& name, const glm::vec2& value) const
|
|
||||||
{
|
|
||||||
glUniform2fv(glGetUniformLocation(ID, name.c_str()), 1, &value[0]);
|
|
||||||
}
|
|
||||||
void setVec2(const std::string& name, float x, float y) const
|
|
||||||
{
|
|
||||||
glUniform2f(glGetUniformLocation(ID, name.c_str()), x, y);
|
|
||||||
}
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void setVec3(const std::string& name, const glm::vec3& value) const
|
|
||||||
{
|
|
||||||
glUniform3fv(glGetUniformLocation(ID, name.c_str()), 1, &value[0]);
|
|
||||||
}
|
|
||||||
void setVec3(const std::string& name, float x, float y, float z) const
|
|
||||||
{
|
|
||||||
glUniform3f(glGetUniformLocation(ID, name.c_str()), x, y, z);
|
|
||||||
}
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void setVec4(const std::string& name, const glm::vec4& value) const
|
|
||||||
{
|
|
||||||
glUniform4fv(glGetUniformLocation(ID, name.c_str()), 1, &value[0]);
|
|
||||||
}
|
|
||||||
void setVec4(const std::string& name, float x, float y, float z, float w)
|
|
||||||
{
|
|
||||||
glUniform4f(glGetUniformLocation(ID, name.c_str()), x, y, z, w);
|
|
||||||
}
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void setMat2(const std::string& name, const glm::mat2& mat) const
|
|
||||||
{
|
|
||||||
glUniformMatrix2fv(glGetUniformLocation(ID, name.c_str()), 1, GL_FALSE, &mat[0][0]);
|
|
||||||
}
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void setMat3(const std::string& name, const glm::mat3& mat) const
|
|
||||||
{
|
|
||||||
glUniformMatrix3fv(glGetUniformLocation(ID, name.c_str()), 1, GL_FALSE, &mat[0][0]);
|
|
||||||
}
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void setMat4(const std::string& name, const glm::mat4& mat) const
|
|
||||||
{
|
|
||||||
deduce bullshit = glGetUniformLocation(ID, name.c_str());
|
|
||||||
|
|
||||||
glUniformMatrix4fv(glGetUniformLocation(ID, name.c_str()), 1, GL_FALSE, &mat[0][0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
// utility function for checking shader compilation/linking errors.
|
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
void checkCompileErrors(GLuint shader, std::string type)
|
|
||||||
{
|
|
||||||
GLint success;
|
|
||||||
GLchar infoLog[1024];
|
|
||||||
if (type != "PROGRAM")
|
|
||||||
{
|
|
||||||
glGetShaderiv(shader, GL_COMPILE_STATUS, &success);
|
|
||||||
if (!success)
|
|
||||||
{
|
|
||||||
glGetShaderInfoLog(shader, 1024, NULL, infoLog);
|
|
||||||
std::cout << "ERROR::SHADER_COMPILATION_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
glGetProgramiv(shader, GL_LINK_STATUS, &success);
|
|
||||||
if (!success)
|
|
||||||
{
|
|
||||||
glGetProgramInfoLog(shader, 1024, NULL, infoLog);
|
|
||||||
std::cout << "ERROR::PROGRAM_LINKING_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
# Blender v2.80 (sub 74) OBJ File: ''
|
|
||||||
# www.blender.org
|
|
||||||
mtllib blenderCube.mtl
|
|
||||||
o Cube
|
|
||||||
v 1.000000 1.000000 -1.000000
|
|
||||||
v 1.000000 -1.000000 -1.000000
|
|
||||||
v 1.000000 1.000000 1.000000
|
|
||||||
v 1.000000 -1.000000 1.000000
|
|
||||||
v -1.000000 1.000000 -1.000000
|
|
||||||
v -1.000000 -1.000000 -1.000000
|
|
||||||
v -1.000000 1.000000 1.000000
|
|
||||||
v -1.000000 -1.000000 1.000000
|
|
||||||
vt 0.375000 0.000000
|
|
||||||
vt 0.625000 0.000000
|
|
||||||
vt 0.625000 0.250000
|
|
||||||
vt 0.375000 0.250000
|
|
||||||
vt 0.375000 0.250000
|
|
||||||
vt 0.625000 0.250000
|
|
||||||
vt 0.625000 0.500000
|
|
||||||
vt 0.375000 0.500000
|
|
||||||
vt 0.625000 0.750000
|
|
||||||
vt 0.375000 0.750000
|
|
||||||
vt 0.625000 0.750000
|
|
||||||
vt 0.625000 1.000000
|
|
||||||
vt 0.375000 1.000000
|
|
||||||
vt 0.125000 0.500000
|
|
||||||
vt 0.375000 0.500000
|
|
||||||
vt 0.375000 0.750000
|
|
||||||
vt 0.125000 0.750000
|
|
||||||
vt 0.625000 0.500000
|
|
||||||
vt 0.875000 0.500000
|
|
||||||
vt 0.875000 0.750000
|
|
||||||
vn 0.0000 1.0000 0.0000
|
|
||||||
vn 0.0000 0.0000 1.0000
|
|
||||||
vn -1.0000 0.0000 0.0000
|
|
||||||
vn 0.0000 -1.0000 0.0000
|
|
||||||
vn 1.0000 0.0000 0.0000
|
|
||||||
vn 0.0000 0.0000 -1.0000
|
|
||||||
usemtl Material
|
|
||||||
s off
|
|
||||||
f 1/1/1 5/2/1 7/3/1 3/4/1
|
|
||||||
f 4/5/2 3/6/2 7/7/2 8/8/2
|
|
||||||
f 8/8/3 7/7/3 5/9/3 6/10/3
|
|
||||||
f 6/10/4 2/11/4 4/12/4 8/13/4
|
|
||||||
f 2/14/5 1/15/5 3/16/5 4/17/5
|
|
||||||
f 6/18/6 5/19/6 1/20/6 2/11/6
|
|
@ -1,13 +0,0 @@
|
|||||||
# File produced by Open Asset Import Library (http://www.assimp.sf.net)
|
|
||||||
# (assimp v4.1.216079013)
|
|
||||||
|
|
||||||
newmtl DefaultMaterial
|
|
||||||
Kd 0.6000000238418579 0.6000000238418579 0.6000000238418579
|
|
||||||
Ka 0 0 0
|
|
||||||
Ks 0 0 0
|
|
||||||
Ke 0 0 0
|
|
||||||
Tf 1 1 1
|
|
||||||
d 1
|
|
||||||
Ni 1
|
|
||||||
illum 1
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
# File produced by Open Asset Import Library (http://www.assimp.sf.net)
|
|
||||||
# (assimp v4.1.216079013)
|
|
||||||
|
|
||||||
mtllib cubeGenNormals.mtl
|
|
||||||
|
|
||||||
# 8 vertex positions
|
|
||||||
v 0.02254099957644939 0 0
|
|
||||||
v 1.022541046142578 1 0
|
|
||||||
v 1.022541046142578 0 0
|
|
||||||
v 0.02254099957644939 1 0
|
|
||||||
v 0.02254099957644939 1 1
|
|
||||||
v 0.02254099957644939 0 1
|
|
||||||
v 1.022541046142578 1 1
|
|
||||||
v 1.022541046142578 0 1
|
|
||||||
|
|
||||||
# 0 UV coordinates
|
|
||||||
|
|
||||||
# 6 vertex normals
|
|
||||||
vn 0 0 -1
|
|
||||||
vn -1 0 0
|
|
||||||
vn 0 1 0
|
|
||||||
vn 1 0 0
|
|
||||||
vn 0 -1 0
|
|
||||||
vn 0 0 1
|
|
||||||
|
|
||||||
# Mesh 'cube Mesh' with 12 faces
|
|
||||||
g cube Mesh
|
|
||||||
usemtl DefaultMaterial
|
|
||||||
f 1//1 2//1 3//1
|
|
||||||
f 1//1 4//1 2//1
|
|
||||||
f 1//2 5//2 4//2
|
|
||||||
f 1//2 6//2 5//2
|
|
||||||
f 4//3 7//3 2//3
|
|
||||||
f 4//3 5//3 7//3
|
|
||||||
f 3//4 2//4 7//4
|
|
||||||
f 3//4 7//4 8//4
|
|
||||||
f 1//5 3//5 8//5
|
|
||||||
f 1//5 8//5 6//5
|
|
||||||
f 6//6 8//6 7//6
|
|
||||||
f 6//6 7//6 5//6
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
|||||||
# File produced by Open Asset Import Library (http://www.assimp.sf.net)
|
|
||||||
# (assimp v4.1.216079013)
|
|
||||||
|
|
||||||
newmtl DefaultMaterial
|
|
||||||
Kd 0.6000000238418579 0.6000000238418579 0.6000000238418579
|
|
||||||
Ka 0 0 0
|
|
||||||
Ks 0 0 0
|
|
||||||
Ke 0 0 0
|
|
||||||
Tf 1 1 1
|
|
||||||
d 1
|
|
||||||
Ni 1
|
|
||||||
illum 1
|
|
||||||
|
|
79873
horseWithNormals.obj
79873
horseWithNormals.obj
File diff suppressed because it is too large
Load Diff
@ -1,13 +0,0 @@
|
|||||||
# File produced by Open Asset Import Library (http://www.assimp.sf.net)
|
|
||||||
# (assimp v4.1.216079013)
|
|
||||||
|
|
||||||
newmtl DefaultMaterial
|
|
||||||
Kd 0.6000000238418579 0.6000000238418579 0.6000000238418579
|
|
||||||
Ka 0 0 0
|
|
||||||
Ks 0 0 0
|
|
||||||
Ke 0 0 0
|
|
||||||
Tf 1 1 1
|
|
||||||
d 1
|
|
||||||
Ni 1
|
|
||||||
illum 1
|
|
||||||
|
|
4106
torusWithNormals.obj
4106
torusWithNormals.obj
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user