Merge pull request #13 from ibbles/master

Support for out-of-source builds.
This commit is contained in:
JoeyDeVries
2015-08-02 21:04:38 +02:00
29 changed files with 194 additions and 117 deletions

View File

@@ -10,7 +10,13 @@ Note that you still have to manually copy the required .DLL files from the /dlls
## Linux building ## Linux building
First make sure you have CMake, Git, and GCC by typing as root (sudo) `apt-get install g++ cmake git` and then get the required packages: First make sure you have CMake, Git, and GCC by typing as root (sudo) `apt-get install g++ cmake git` and then get the required packages:
Using root (sudo) and type `apt-get install libsoil-dev libglm-dev libassimp-dev libglew-dev libglfw3-dev` . Next, run CMake (preferably CMake-gui). The source directory is LearnOpenGL and specify the build directory as LearnOpenGL/build. Creating the build directory within LearnOpenGL is important for linking to the resource files (it also will be ignored by Git). Hit configure and specify your compiler files (Unix Makefiles are recommended), resolve any missing directories or libraries, and then hit generate. Navigate to the build directory (`cd LearnOpenGL/build`) and type `make` in the terminal. This should generate the executables in the respective chapter folders. Note that using CodeBlocks or an IDE may have issues running the programs due to problems finding the shader and resource files, however it should still be able to generate the exectuables. Using root (sudo) and type `apt-get install libsoil-dev libglm-dev libassimp-dev libglew-dev libglfw3-dev` . Next, run CMake (preferably CMake-gui). The source directory is LearnOpenGL and specify the build directory as LearnOpenGL/build. Creating the build directory within LearnOpenGL is important for linking to the resource files (it also will be ignored by Git). Hit configure and specify your compiler files (Unix Makefiles are recommended), resolve any missing directories or libraries, and then hit generate. Navigate to the build directory (`cd LearnOpenGL/build`) and type `make` in the terminal. This should generate the executables in the respective chapter folders.
Note that CodeBlocks or other IDEs may have issues running the programs due to problems finding the shader and resource files, however it should still be able to generate the exectuables. To work around this problem it is possible to set an environment variable to tell the tutorials where the resource files can be found. The environment variable is named LOGL_ROOT_PATH and may be set to the path to the root of the LearnOpenGL directory tree. For example:
`export LOGL_ROOT_PATH=/home/user/tutorials/LearmOpenGL`
Running `ls $LOGL_ROOT_PATH` should list, among other things, this README file and the resources direcory.
## Mac OS X building ## Mac OS X building
Thanks to Stéphane le Boeuf, a Github fork was set up that successfully compiles on Mac OSX (and Linux as well); current CMake hasn't been adapted for Mac OSX yet. The following command lines build the projects on Mac OSX: Thanks to Stéphane le Boeuf, a Github fork was set up that successfully compiles on Mac OSX (and Linux as well); current CMake hasn't been adapted for Mac OSX yet. The following command lines build the projects on Mac OSX:

View File

@@ -0,0 +1,49 @@
#ifndef FILESYSTEM_H
#define FILESYSTEM_H
#include <string>
class FileSystem
{
private:
typedef std::string (*Builder) (const std::string& path);
public:
static std::string getPath(const std::string& path)
{
static std::string(*pathBuilder)(std::string const &) = getPathBuilder();
return (*pathBuilder)(path);
}
private:
static std::string const & getRoot()
{
static char const * givenRoot {getenv("LOGL_ROOT_PATH")};
static std::string root {givenRoot != nullptr ? givenRoot : ""};
return root;
}
//static std::string(*foo (std::string const &)) getPathBuilder()
static Builder getPathBuilder()
{
if (getRoot() != "")
return &FileSystem::getPathRelativeRoot;
else
return &FileSystem::getPathRelativeBinary;
}
static std::string getPathRelativeRoot(const std::string& path)
{
return getRoot() + std::string("/") + path;
}
static std::string getPathRelativeBinary(const std::string& path)
{
return "../../../" + path;
}
};
// FILESYSTEM_H
#endif

View File

@@ -31,7 +31,7 @@ public:
/* Functions */ /* Functions */
// Constructor, expects a filepath to a 3D model. // Constructor, expects a filepath to a 3D model.
Model(GLchar* path, bool gamma = false) : gammaCorrection(gamma) Model(string const & path, bool gamma = false) : gammaCorrection(gamma)
{ {
this->loadModel(path); this->loadModel(path);
} }

View File

@@ -12,7 +12,7 @@
// Other includes // Other includes
#include <learnopengl/shader.h> #include <learnopengl/shader.h>
#include <learnopengl/filesystem.h>
// Function prototypes // Function prototypes
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode); void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode);
@@ -105,7 +105,9 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Load, create texture and generate mipmaps // Load, create texture and generate mipmaps
int width, height; int width, height;
unsigned char* image = SOIL_load_image("../../../resources/textures/container.jpg", &width, &height, 0, SOIL_LOAD_RGB);
unsigned char* image = SOIL_load_image(FileSystem::getPath("resources/textures/container.jpg").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
SOIL_free_image_data(image); SOIL_free_image_data(image);
@@ -122,7 +124,7 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Load, create texture and generate mipmaps // Load, create texture and generate mipmaps
image = SOIL_load_image("../../../resources/textures/awesomeface.png", &width, &height, 0, SOIL_LOAD_RGB); image = SOIL_load_image(FileSystem::getPath("resources/textures/awesomeface.png").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
SOIL_free_image_data(image); SOIL_free_image_data(image);

View File

@@ -16,7 +16,7 @@
// Other includes // Other includes
#include <learnopengl/shader.h> #include <learnopengl/shader.h>
#include <learnopengl/filesystem.h>
// Function prototypes // Function prototypes
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode); void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode);
@@ -109,7 +109,7 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Load, create texture and generate mipmaps // Load, create texture and generate mipmaps
int width, height; int width, height;
unsigned char* image = SOIL_load_image("../../../resources/textures/container.jpg", &width, &height, 0, SOIL_LOAD_RGB); unsigned char* image = SOIL_load_image(FileSystem::getPath("resources/textures/container.jpg").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
SOIL_free_image_data(image); SOIL_free_image_data(image);
@@ -126,7 +126,7 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Load, create texture and generate mipmaps // Load, create texture and generate mipmaps
image = SOIL_load_image("../../../resources/textures/awesomeface.png", &width, &height, 0, SOIL_LOAD_RGB); image = SOIL_load_image(FileSystem::getPath("resources/textures/awesomeface.png").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
SOIL_free_image_data(image); SOIL_free_image_data(image);

View File

@@ -16,7 +16,7 @@
// Other includes // Other includes
#include <learnopengl/shader.h> #include <learnopengl/shader.h>
#include <learnopengl/filesystem.h>
// Function prototypes // Function prototypes
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode); void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode);
@@ -150,7 +150,7 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Load, create texture and generate mipmaps // Load, create texture and generate mipmaps
int width, height; int width, height;
unsigned char* image = SOIL_load_image("../../../resources/textures/container.jpg", &width, &height, 0, SOIL_LOAD_RGB); unsigned char* image = SOIL_load_image(FileSystem::getPath("resources/textures/container.jpg").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
SOIL_free_image_data(image); SOIL_free_image_data(image);
@@ -167,7 +167,7 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Load, create texture and generate mipmaps // Load, create texture and generate mipmaps
image = SOIL_load_image("../../../resources/textures/awesomeface.png", &width, &height, 0, SOIL_LOAD_RGB); image = SOIL_load_image(FileSystem::getPath("resources/textures/awesomeface.png").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
SOIL_free_image_data(image); SOIL_free_image_data(image);

View File

@@ -19,6 +19,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
GLuint screenWidth = 800, screenHeight = 600; GLuint screenWidth = 800, screenHeight = 600;
@@ -162,7 +163,7 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Load, create texture and generate mipmaps // Load, create texture and generate mipmaps
int width, height; int width, height;
unsigned char* image = SOIL_load_image("../../../resources/textures/container.jpg", &width, &height, 0, SOIL_LOAD_RGB); unsigned char* image = SOIL_load_image(FileSystem::getPath("resources/textures/container.jpg").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
SOIL_free_image_data(image); SOIL_free_image_data(image);
@@ -177,7 +178,7 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Load, create texture and generate mipmaps // Load, create texture and generate mipmaps
image = SOIL_load_image("../../../resources/textures/awesomeface.png", &width, &height, 0, SOIL_LOAD_RGB); image = SOIL_load_image(FileSystem::getPath("resources/textures/awesomeface.png").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
SOIL_free_image_data(image); SOIL_free_image_data(image);

View File

@@ -18,7 +18,7 @@
// Other includes // Other includes
#include <learnopengl/shader.h> #include <learnopengl/shader.h>
#include <learnopengl/camera.h> #include <learnopengl/camera.h>
#include <learnopengl/filesystem.h>
// Function prototypes // Function prototypes
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode); void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode);
@@ -163,7 +163,7 @@ int main()
int width, height; int width, height;
unsigned char* image; unsigned char* image;
// Diffuse map // Diffuse map
image = SOIL_load_image("../../../resources/textures/container2.png", &width, &height, 0, SOIL_LOAD_RGB); image = SOIL_load_image(FileSystem::getPath("resources/textures/container2.png").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glBindTexture(GL_TEXTURE_2D, diffuseMap); glBindTexture(GL_TEXTURE_2D, diffuseMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
@@ -173,7 +173,7 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST_MIPMAP_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST_MIPMAP_NEAREST);
// Specular map // Specular map
image = SOIL_load_image("../../../resources/textures/container2_specular.png", &width, &height, 0, SOIL_LOAD_RGB); image = SOIL_load_image(FileSystem::getPath("resources/textures/container2_specular.png").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glBindTexture(GL_TEXTURE_2D, specularMap); glBindTexture(GL_TEXTURE_2D, specularMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);

View File

@@ -18,7 +18,7 @@
// Other includes // Other includes
#include <learnopengl/shader.h> #include <learnopengl/shader.h>
#include <learnopengl/camera.h> #include <learnopengl/camera.h>
#include <learnopengl/filesystem.h>
// Function prototypes // Function prototypes
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode); void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode);
@@ -176,7 +176,7 @@ int main()
int width, height; int width, height;
unsigned char* image; unsigned char* image;
// Diffuse map // Diffuse map
image = SOIL_load_image("../../../resources/textures/container2.png", &width, &height, 0, SOIL_LOAD_RGB); image = SOIL_load_image(FileSystem::getPath("resources/textures/container2.png").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glBindTexture(GL_TEXTURE_2D, diffuseMap); glBindTexture(GL_TEXTURE_2D, diffuseMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
@@ -186,7 +186,7 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST_MIPMAP_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST_MIPMAP_NEAREST);
// Specular map // Specular map
image = SOIL_load_image("../../../resources/textures/container2_specular.png", &width, &height, 0, SOIL_LOAD_RGB); image = SOIL_load_image(FileSystem::getPath("resources/textures/container2_specular.png").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glBindTexture(GL_TEXTURE_2D, specularMap); glBindTexture(GL_TEXTURE_2D, specularMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);

View File

@@ -18,7 +18,7 @@
// Other includes // Other includes
#include <learnopengl/shader.h> #include <learnopengl/shader.h>
#include <learnopengl/camera.h> #include <learnopengl/camera.h>
#include <learnopengl/filesystem.h>
// Function prototypes // Function prototypes
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode); void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode);
@@ -183,7 +183,7 @@ int main()
int width, height; int width, height;
unsigned char* image; unsigned char* image;
// Diffuse map // Diffuse map
image = SOIL_load_image("../../../resources/textures/container2.png", &width, &height, 0, SOIL_LOAD_RGB); image = SOIL_load_image(FileSystem::getPath("resources/textures/container2.png").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glBindTexture(GL_TEXTURE_2D, diffuseMap); glBindTexture(GL_TEXTURE_2D, diffuseMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
@@ -193,7 +193,7 @@ int main()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST_MIPMAP_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST_MIPMAP_NEAREST);
// Specular map // Specular map
image = SOIL_load_image("../../../resources/textures/container2_specular.png", &width, &height, 0, SOIL_LOAD_RGB); image = SOIL_load_image(FileSystem::getPath("resources/textures/container2_specular.png").c_str(), &width, &height, 0, SOIL_LOAD_RGB);
glBindTexture(GL_TEXTURE_2D, specularMap); glBindTexture(GL_TEXTURE_2D, specularMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);

View File

@@ -20,6 +20,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
GLuint screenWidth = 800, screenHeight = 600; GLuint screenWidth = 800, screenHeight = 600;
@@ -74,7 +75,7 @@ int main()
Shader shader("shader.vs", "shader.frag"); Shader shader("shader.vs", "shader.frag");
// Load models // Load models
Model ourModel("../../../resources/objects/nanosuit/nanosuit.obj"); Model ourModel(FileSystem::getPath("resources/objects/nanosuit/nanosuit.obj").c_str());
// Draw in wireframe // Draw in wireframe
//glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

View File

@@ -19,6 +19,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
GLuint screenWidth = 800, screenHeight = 600; GLuint screenWidth = 800, screenHeight = 600;
@@ -28,7 +29,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
// Camera // Camera
Camera camera(glm::vec3(0.0f, 0.0f, 3.0f)); Camera camera(glm::vec3(0.0f, 0.0f, 3.0f));
@@ -156,8 +157,8 @@ int main()
glBindVertexArray(0); glBindVertexArray(0);
// Load textures // Load textures
GLuint cubeTexture = loadTexture("../../../resources/textures/marble.jpg"); GLuint cubeTexture = loadTexture(FileSystem::getPath("resources/textures/marble.jpg").c_str());
GLuint floorTexture = loadTexture("../../../resources/textures/metal.png"); GLuint floorTexture = loadTexture(FileSystem::getPath("resources/textures/metal.png").c_str());
#pragma endregion #pragma endregion
// Game loop // Game loop
@@ -213,7 +214,7 @@ int main()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
//Generate texture ID and load texture data //Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -15,6 +15,8 @@
#include <glm/gtc/matrix_transform.hpp> #include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp> #include <glm/gtc/type_ptr.hpp>
#include <learnopengl/filesystem.h>
// Properties // Properties
GLuint screenWidth = 800, screenHeight = 600; GLuint screenWidth = 800, screenHeight = 600;
@@ -67,8 +69,8 @@ int main()
Shader instanceShader("instanced_asteroids.vs", "instanced_asteroids.frag"); Shader instanceShader("instanced_asteroids.vs", "instanced_asteroids.frag");
// Load models // Load models
Model rock("../../../resources/objects/rock/rock.obj"); Model rock(FileSystem::getPath("resources/objects/rock/rock.obj").c_str());
Model planet("../../../resources/objects/planet/planet.obj"); Model planet(FileSystem::getPath("resources/objects/planet/planet.obj").c_str());
// Set projection matrix // Set projection matrix
glm::mat4 projection = glm::perspective(45.0f, (GLfloat)screenWidth/(GLfloat)screenHeight, 1.0f, 10000.0f); glm::mat4 projection = glm::perspective(45.0f, (GLfloat)screenWidth/(GLfloat)screenHeight, 1.0f, 10000.0f);

View File

@@ -19,6 +19,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
GLuint screenWidth = 800, screenHeight = 600; GLuint screenWidth = 800, screenHeight = 600;
@@ -28,7 +29,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
// Camera // Camera
Camera camera(glm::vec3(0.0f, 0.0f, 3.0f)); Camera camera(glm::vec3(0.0f, 0.0f, 3.0f));
@@ -160,8 +161,8 @@ int main()
glBindVertexArray(0); glBindVertexArray(0);
// Load textures // Load textures
GLuint cubeTexture = loadTexture("../../../resources/textures/marble.jpg"); GLuint cubeTexture = loadTexture(FileSystem::getPath("resources/textures/marble.jpg").c_str());
GLuint floorTexture = loadTexture("../../../resources/textures/metal.png"); GLuint floorTexture = loadTexture(FileSystem::getPath("resources/textures/metal.png").c_str());
#pragma endregion #pragma endregion
// Game loop // Game loop
@@ -260,7 +261,7 @@ void DrawScene()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
//Generate texture ID and load texture data //Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -19,6 +19,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
GLuint screenWidth = 800, screenHeight = 600; GLuint screenWidth = 800, screenHeight = 600;
@@ -28,7 +29,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path, GLboolean alpha = false); GLuint loadTexture(GLchar const * path, GLboolean alpha = false);
// Camera // Camera
Camera camera(glm::vec3(0.0f, 0.0f, 3.0f)); Camera camera(glm::vec3(0.0f, 0.0f, 3.0f));
@@ -177,9 +178,9 @@ int main()
glBindVertexArray(0); glBindVertexArray(0);
// Load textures // Load textures
GLuint cubeTexture = loadTexture("../../../resources/textures/marble.jpg"); GLuint cubeTexture = loadTexture(FileSystem::getPath("resources/textures/marble.jpg").c_str());
GLuint floorTexture = loadTexture("../../../resources/textures/metal.png"); GLuint floorTexture = loadTexture(FileSystem::getPath("resources/textures/metal.png").c_str());
GLuint transparentTexture = loadTexture("../../../resources/textures/grass.png", true); GLuint transparentTexture = loadTexture(FileSystem::getPath("resources/textures/grass.png").c_str(), true);
#pragma endregion #pragma endregion
std::vector<glm::vec3> vegetation; std::vector<glm::vec3> vegetation;
@@ -252,7 +253,7 @@ int main()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path, GLboolean alpha) GLuint loadTexture(GLchar const * path, GLboolean alpha)
{ {
//Generate texture ID and load texture data //Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -20,6 +20,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
GLuint screenWidth = 800, screenHeight = 600; GLuint screenWidth = 800, screenHeight = 600;
@@ -29,7 +30,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path, GLboolean alpha = false); GLuint loadTexture(GLchar const * path, GLboolean alpha = false);
// Camera // Camera
Camera camera(glm::vec3(0.0f, 0.0f, 3.0f)); Camera camera(glm::vec3(0.0f, 0.0f, 3.0f));
@@ -180,9 +181,9 @@ int main()
glBindVertexArray(0); glBindVertexArray(0);
// Load textures // Load textures
GLuint cubeTexture = loadTexture("../../../resources/textures/marble.jpg"); GLuint cubeTexture = loadTexture(FileSystem::getPath("resources/textures/marble.jpg").c_str());
GLuint floorTexture = loadTexture("../../../resources/textures/metal.png"); GLuint floorTexture = loadTexture(FileSystem::getPath("resources/textures/metal.png").c_str());
GLuint transparentTexture = loadTexture("../../../resources/textures/window.png", true); GLuint transparentTexture = loadTexture(FileSystem::getPath("resources/textures/window.png").c_str(), true);
#pragma endregion #pragma endregion
std::vector<glm::vec3> windows; std::vector<glm::vec3> windows;
@@ -263,7 +264,7 @@ int main()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path, GLboolean alpha) GLuint loadTexture(GLchar const * path, GLboolean alpha)
{ {
//Generate texture ID and load texture data //Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -21,6 +21,7 @@ using namespace std;
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
GLuint screenWidth = 800, screenHeight = 600; GLuint screenWidth = 800, screenHeight = 600;
@@ -30,7 +31,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path, GLboolean alpha = false); GLuint loadTexture(GLchar const * path, GLboolean alpha = false);
GLuint generateAttachmentTexture(GLboolean depth, GLboolean stencil); GLuint generateAttachmentTexture(GLboolean depth, GLboolean stencil);
// Camera // Camera
@@ -182,8 +183,8 @@ int main()
glBindVertexArray(0); glBindVertexArray(0);
// Load textures // Load textures
GLuint cubeTexture = loadTexture("../../../resources/textures/container.jpg"); GLuint cubeTexture = loadTexture(FileSystem::getPath("resources/textures/container.jpg").c_str());
GLuint floorTexture = loadTexture("../../../resources/textures/metal.png"); GLuint floorTexture = loadTexture(FileSystem::getPath("resources/textures/metal.png").c_str());
#pragma endregion #pragma endregion
// Framebuffers // Framebuffers
@@ -291,7 +292,7 @@ int main()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path, GLboolean alpha) GLuint loadTexture(GLchar const * path, GLboolean alpha)
{ {
//Generate texture ID and load texture data //Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -21,6 +21,7 @@ using namespace std;
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
GLuint screenWidth = 800, screenHeight = 600; GLuint screenWidth = 800, screenHeight = 600;
@@ -30,7 +31,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
GLuint loadCubemap(std::vector<const GLchar*> faces); GLuint loadCubemap(std::vector<const GLchar*> faces);
// Camera // Camera
@@ -198,12 +199,12 @@ int main()
// Cubemap (Skybox) // Cubemap (Skybox)
std::vector<const GLchar*> faces; std::vector<const GLchar*> faces;
faces.push_back("../../../resources/textures/skybox/right.jpg"); faces.push_back(FileSystem::getPath("resources/textures/skybox/right.jpg").c_str());
faces.push_back("../../../resources/textures/skybox/left.jpg"); faces.push_back(FileSystem::getPath("resources/textures/skybox/left.jpg").c_str());
faces.push_back("../../../resources/textures/skybox/top.jpg"); faces.push_back(FileSystem::getPath("resources/textures/skybox/top.jpg").c_str());
faces.push_back("../../../resources/textures/skybox/bottom.jpg"); faces.push_back(FileSystem::getPath("resources/textures/skybox/bottom.jpg").c_str());
faces.push_back("../../../resources/textures/skybox/back.jpg"); faces.push_back(FileSystem::getPath("resources/textures/skybox/back.jpg").c_str());
faces.push_back("../../../resources/textures/skybox/front.jpg"); faces.push_back(FileSystem::getPath("resources/textures/skybox/front.jpg").c_str());
GLuint skyboxTexture = loadCubemap(faces); GLuint skyboxTexture = loadCubemap(faces);
// Draw as wireframe // Draw as wireframe
@@ -300,7 +301,7 @@ GLuint loadCubemap(std::vector<const GLchar*> faces)
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
//Generate texture ID and load texture data //Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -16,6 +16,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600; const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600;
@@ -25,7 +26,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
// Camera // Camera
Camera camera(glm::vec3(0.0f, 0.0f, 3.0f)); Camera camera(glm::vec3(0.0f, 0.0f, 3.0f));
@@ -100,7 +101,7 @@ int main()
glm::vec3 lightPos(0.0f, 0.0f, 0.0f); glm::vec3 lightPos(0.0f, 0.0f, 0.0f);
// Load textures // Load textures
GLuint floorTexture = loadTexture("../../../resources/textures/wood.png"); GLuint floorTexture = loadTexture(FileSystem::getPath("resources/textures/wood.png").c_str());
// Game loop // Game loop
while(!glfwWindowShouldClose(window)) while(!glfwWindowShouldClose(window))
@@ -147,7 +148,7 @@ int main()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
// Generate texture ID and load texture data // Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -16,6 +16,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600; const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600;
@@ -25,7 +26,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path, bool gammaCorrection); GLuint loadTexture(GLchar const * path, bool gammaCorrection);
// Camera // Camera
Camera camera(glm::vec3(0.0f, 0.0f, 3.0f)); Camera camera(glm::vec3(0.0f, 0.0f, 3.0f));
@@ -112,8 +113,8 @@ int main()
}; };
// Load textures // Load textures
GLuint floorTexture = loadTexture("../../../resources/textures/wood.png", false); GLuint floorTexture = loadTexture(FileSystem::getPath("resources/textures/wood.png").c_str(), false);
GLuint floorTextureGammaCorrected = loadTexture("../../../resources/textures/wood.png", true); GLuint floorTextureGammaCorrected = loadTexture(FileSystem::getPath("resources/textures/wood.png").c_str(), true);
// Game loop // Game loop
while (!glfwWindowShouldClose(window)) while (!glfwWindowShouldClose(window))
@@ -161,7 +162,7 @@ int main()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path, bool gammaCorrection) GLuint loadTexture(GLchar const * path, bool gammaCorrection)
{ {
// Generate texture ID and load texture data // Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -16,6 +16,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600; const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600;
@@ -25,7 +26,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
void RenderScene(Shader &shader); void RenderScene(Shader &shader);
void RenderCube(); void RenderCube();
void RenderQuad(); void RenderQuad();
@@ -114,7 +115,7 @@ int main()
glm::vec3 lightPos(-2.0f, 4.0f, -1.0f); glm::vec3 lightPos(-2.0f, 4.0f, -1.0f);
// Load textures // Load textures
woodTexture = loadTexture("../../../resources/textures/wood.png"); woodTexture = loadTexture(FileSystem::getPath("resources/textures/wood.png").c_str());
// Configure depth map FBO // Configure depth map FBO
const GLuint SHADOW_WIDTH = 1024, SHADOW_HEIGHT = 1024; const GLuint SHADOW_WIDTH = 1024, SHADOW_HEIGHT = 1024;
@@ -345,7 +346,7 @@ void RenderCube()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
// Generate texture ID and load texture data // Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -16,6 +16,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600; const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600;
@@ -25,7 +26,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
void RenderScene(Shader &shader); void RenderScene(Shader &shader);
void RenderCube(); void RenderCube();
void RenderQuad(); void RenderQuad();
@@ -89,7 +90,7 @@ int main()
glm::vec3 lightPos(0.0f, 0.0f, 0.0f); glm::vec3 lightPos(0.0f, 0.0f, 0.0f);
// Load textures // Load textures
woodTexture = loadTexture("../../../resources/textures/wood.png"); woodTexture = loadTexture(FileSystem::getPath("resources/textures/wood.png").c_str());
// Configure depth map FBO // Configure depth map FBO
const GLuint SHADOW_WIDTH = 1024, SHADOW_HEIGHT = 1024; const GLuint SHADOW_WIDTH = 1024, SHADOW_HEIGHT = 1024;
@@ -300,7 +301,7 @@ void RenderCube()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
// Generate texture ID and load texture data // Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -28,7 +28,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
// Camera // Camera
Camera camera(glm::vec3(0.0f, 0.0f, 3.0f)); Camera camera(glm::vec3(0.0f, 0.0f, 3.0f));
@@ -156,8 +156,8 @@ int main()
glBindVertexArray(0); glBindVertexArray(0);
// Load textures // Load textures
GLuint cubeTexture = loadTexture("../../../resources/textures/marble.jpg"); GLuint cubeTexture = loadTexture(FileSystem::getPath("resources/textures/marble.jpg").c_str());
GLuint floorTexture = loadTexture("../../../resources/textures/metal.png"); GLuint floorTexture = loadTexture(FileSystem::getPath("resources/textures/metal.png").c_str());
#pragma endregion #pragma endregion
// Game loop // Game loop
@@ -213,7 +213,7 @@ int main()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
//Generate texture ID and load texture data //Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -20,6 +20,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600; const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600;
@@ -29,7 +30,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
void RenderQuad(); void RenderQuad();
// Camera // Camera
@@ -73,8 +74,8 @@ int main()
Shader shader("normal_mapping.vs", "normal_mapping.frag"); Shader shader("normal_mapping.vs", "normal_mapping.frag");
// Load textures // Load textures
GLuint diffuseMap = loadTexture("../../../resources/textures/brickwall.jpg"); GLuint diffuseMap = loadTexture(FileSystem::getPath("resources/textures/brickwall.jpg").c_str());
GLuint normalMap = loadTexture("../../../resources/textures/brickwall_normal.jpg"); GLuint normalMap = loadTexture(FileSystem::getPath("resources/textures/brickwall_normal.jpg").c_str());
// Set texture units // Set texture units
shader.Use(); shader.Use();
@@ -229,7 +230,7 @@ void RenderQuad()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
//Generate texture ID and load texture data //Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -20,6 +20,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600; const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600;
@@ -29,7 +30,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
void RenderQuad(); void RenderQuad();
// Camera // Camera
@@ -76,12 +77,12 @@ int main()
Shader shader("parallax_mapping.vs", "parallax_mapping.frag"); Shader shader("parallax_mapping.vs", "parallax_mapping.frag");
// Load textures // Load textures
GLuint diffuseMap = loadTexture("../../../resources/textures/bricks2.jpg"); GLuint diffuseMap = loadTexture(FileSystem::getPath("resources/textures/bricks2.jpg").c_str());
GLuint normalMap = loadTexture("../../../resources/textures/bricks2_normal.jpg"); GLuint normalMap = loadTexture(FileSystem::getPath("resources/textures/bricks2_normal.jpg").c_str());
GLuint heightMap = loadTexture("../../../resources/textures/bricks2_disp.jpg"); GLuint heightMap = loadTexture(FileSystem::getPath("resources/textures/bricks2_disp.jpg").c_str());
//GLuint diffuseMap = loadTexture("../../../resources/textures/wood.png"); //GLuint diffuseMap = loadTexture(FileSystem::getPath("resources/textures/wood.png").c_str();
//GLuint normalMap = loadTexture("../../../resources/textures/toy_box_normal.png"); //GLuint normalMap = loadTexture(FileSystem::getPath("resources/textures/toy_box_normal.png").c_str());
//GLuint heightMap = loadTexture("../../../resources/textures/toy_box_disp.png"); //GLuint heightMap = loadTexture(FileSystem::getPath("resources/textures/toy_box_disp.png").c_str());
// Set texture units // Set texture units
shader.Use(); shader.Use();
@@ -241,7 +242,7 @@ void RenderQuad()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
//Generate texture ID and load texture data //Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -16,6 +16,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600; const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600;
@@ -25,7 +26,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
void RenderScene(Shader &shader); void RenderScene(Shader &shader);
void RenderCube(); void RenderCube();
void RenderQuad(); void RenderQuad();
@@ -94,7 +95,7 @@ int main()
lightColors.push_back(glm::vec3(0.0f, 0.1f, 0.0f)); lightColors.push_back(glm::vec3(0.0f, 0.1f, 0.0f));
// Load textures // Load textures
woodTexture = loadTexture("../../../resources/textures/wood.png"); woodTexture = loadTexture(FileSystem::getPath("resources/textures/wood.png").c_str());
// Set up floating point framebuffer to render scene to // Set up floating point framebuffer to render scene to
GLuint hdrFBO; GLuint hdrFBO;
@@ -288,7 +289,7 @@ void RenderCube()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
// Generate texture ID and load texture data // Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -16,6 +16,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600; const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600;
@@ -25,7 +26,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
void RenderScene(Shader &shader); void RenderScene(Shader &shader);
void RenderCube(); void RenderCube();
void RenderQuad(); void RenderQuad();
@@ -98,8 +99,8 @@ int main()
lightColors.push_back(glm::vec3(0.0f, 1.5f, 0.0f)); lightColors.push_back(glm::vec3(0.0f, 1.5f, 0.0f));
// Load textures // Load textures
GLuint woodTexture = loadTexture("../../../resources/textures/wood.png"); GLuint woodTexture = loadTexture(FileSystem::getPath("resources/textures/wood.png").c_str());
GLuint containerTexture = loadTexture("../../../resources/textures/container2.png"); GLuint containerTexture = loadTexture(FileSystem::getPath("resources/textures/container2.png").c_str());
// Set up floating point framebuffer to render scene to // Set up floating point framebuffer to render scene to
GLuint hdrFBO; GLuint hdrFBO;
@@ -386,7 +387,7 @@ void RenderCube()
// This function loads a texture from file. Note: texture loading functions like these are usually // This function loads a texture from file. Note: texture loading functions like these are usually
// managed by a 'Resource Manager' that manages all resources (like textures, models, audio). // managed by a 'Resource Manager' that manages all resources (like textures, models, audio).
// For learning purposes we'll just define it as a utility function. // For learning purposes we'll just define it as a utility function.
GLuint loadTexture(GLchar* path) GLuint loadTexture(GLchar const * path)
{ {
// Generate texture ID and load texture data // Generate texture ID and load texture data
GLuint textureID; GLuint textureID;

View File

@@ -17,6 +17,7 @@
// Other Libs // Other Libs
#include <SOIL.h> #include <SOIL.h>
#include <learnopengl/filesystem.h>
// Properties // Properties
const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600; const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600;
@@ -26,7 +27,7 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
void mouse_callback(GLFWwindow* window, double xpos, double ypos); void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void Do_Movement(); void Do_Movement();
GLuint loadTexture(GLchar* path); GLuint loadTexture(GLchar const * path);
void RenderCube(); void RenderCube();
void RenderQuad(); void RenderQuad();
@@ -84,7 +85,7 @@ int main()
glUniform1i(glGetUniformLocation(shaderLightingPass.Program, "gAlbedoSpec"), 2); glUniform1i(glGetUniformLocation(shaderLightingPass.Program, "gAlbedoSpec"), 2);
// Models // Models
Model cyborg("../../../resources/objects/nanosuit/nanosuit.obj"); Model cyborg(FileSystem::getPath("resources/objects/nanosuit/nanosuit.obj").c_str());
std::vector<glm::vec3> objectPositions; std::vector<glm::vec3> objectPositions;
objectPositions.push_back(glm::vec3(-3.0, -3.0, -3.0)); objectPositions.push_back(glm::vec3(-3.0, -3.0, -3.0));
objectPositions.push_back(glm::vec3(0.0, -3.0, -3.0)); objectPositions.push_back(glm::vec3(0.0, -3.0, -3.0));

View File

@@ -19,6 +19,7 @@
#include <SOIL.h> #include <SOIL.h>
#include <random> // necessary for generation of random floats (for sample kernel and noise texture) #include <random> // necessary for generation of random floats (for sample kernel and noise texture)
#include <learnopengl/filesystem.h>
// Properties // Properties
const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600; const GLuint SCR_WIDTH = 800, SCR_HEIGHT = 600;
@@ -96,7 +97,7 @@ int main()
glUniform1i(glGetUniformLocation(shaderSSAO.Program, "texNoise"), 2); glUniform1i(glGetUniformLocation(shaderSSAO.Program, "texNoise"), 2);
// Objects // Objects
Model nanosuit("../../../resources/objects/nanosuit/nanosuit.obj"); Model nanosuit(FileSystem::getPath("resources/objects/nanosuit/nanosuit.obj").c_str());
// Lights // Lights
glm::vec3 lightPos = glm::vec3(2.0, 4.0, -2.0); glm::vec3 lightPos = glm::vec3(2.0, 4.0, -2.0);