Updated code changes to reflect content updates.

This commit is contained in:
Joey de Vries
2017-05-29 21:04:33 +02:00
parent 5846428705
commit 28eb2bbf62
25 changed files with 90 additions and 92 deletions

View File

@@ -7,8 +7,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
int main() int main()
{ {

View File

@@ -7,8 +7,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
int main() int main()
{ {

View File

@@ -7,8 +7,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
const char *vertexShaderSource = "#version 330 core\n" const char *vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n" "layout (location = 0) in vec3 aPos;\n"

View File

@@ -7,8 +7,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
const char *vertexShaderSource = "#version 330 core\n" const char *vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n" "layout (location = 0) in vec3 aPos;\n"

View File

@@ -7,8 +7,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
const char *vertexShaderSource = "#version 330 core\n" const char *vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n" "layout (location = 0) in vec3 aPos;\n"

View File

@@ -7,8 +7,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
const char *vertexShaderSource = "#version 330 core\n" const char *vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n" "layout (location = 0) in vec3 aPos;\n"

View File

@@ -7,8 +7,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
const char *vertexShaderSource = "#version 330 core\n" const char *vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n" "layout (location = 0) in vec3 aPos;\n"

View File

@@ -7,8 +7,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
const char *vertexShaderSource ="#version 330 core\n" const char *vertexShaderSource ="#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n" "layout (location = 0) in vec3 aPos;\n"

View File

@@ -7,8 +7,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
const char *vertexShaderSource ="#version 330 core\n" const char *vertexShaderSource ="#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n" "layout (location = 0) in vec3 aPos;\n"

View File

@@ -9,8 +9,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
int main() int main()
{ {

View File

@@ -1,13 +1,13 @@
#version 330 core #version 330 core
out vec4 fragColor; out vec4 FragColor;
in vec3 ourColor; in vec3 ourColor;
in vec2 texCoord; in vec2 TexCoord;
// texture sampler // texture sampler
uniform sampler2D texture1; uniform sampler2D texture1;
void main() void main()
{ {
fragColor = texture(texture1, texCoord); FragColor = texture(texture1, TexCoord);
} }

View File

@@ -4,11 +4,11 @@ layout (location = 1) in vec3 aColor;
layout (location = 2) in vec2 aTexCoord; layout (location = 2) in vec2 aTexCoord;
out vec3 ourColor; out vec3 ourColor;
out vec2 texCoord; out vec2 TexCoord;
void main() void main()
{ {
gl_Position = vec4(aPos, 1.0f); gl_Position = vec4(aPos, 1.0);
ourColor = aColor; ourColor = aColor;
texCoord = vec2(aTexCoord.x, aTexCoord.y); TexCoord = vec2(aTexCoord.x, aTexCoord.y);
} }

View File

@@ -11,8 +11,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
int main() int main()
{ {

View File

@@ -1,8 +1,8 @@
#version 330 core #version 330 core
out vec4 fragColor; out vec4 FragColor;
in vec3 ourColor; in vec3 ourColor;
in vec2 texCoord; in vec2 TexCoord;
// texture samplers // texture samplers
uniform sampler2D texture1; uniform sampler2D texture1;
@@ -11,5 +11,5 @@ uniform sampler2D texture2;
void main() void main()
{ {
// linearly interpolate between both textures (80% container, 20% awesomeface) // linearly interpolate between both textures (80% container, 20% awesomeface)
fragColor = mix(texture(texture1, texCoord), texture(texture2, texCoord), 0.2); FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord), 0.2);
} }

View File

@@ -4,11 +4,11 @@ layout (location = 1) in vec3 aColor;
layout (location = 2) in vec2 aTexCoord; layout (location = 2) in vec2 aTexCoord;
out vec3 ourColor; out vec3 ourColor;
out vec2 texCoord; out vec2 TexCoord;
void main() void main()
{ {
gl_Position = vec4(aPos, 1.0f); gl_Position = vec4(aPos, 1.0);
ourColor = aColor; ourColor = aColor;
texCoord = vec2(aTexCoord.x, aTexCoord.y); TexCoord = vec2(aTexCoord.x, aTexCoord.y);
} }

View File

@@ -11,8 +11,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
int main() int main()
{ {

View File

@@ -11,8 +11,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
int main() int main()
{ {

View File

@@ -11,8 +11,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
int main() int main()
{ {

View File

@@ -1,8 +1,8 @@
#version 330 core #version 330 core
out vec4 fragColor; out vec4 FragColor;
in vec3 ourColor; in vec3 ourColor;
in vec2 texCoord; in vec2 TexCoord;
uniform float mixValue; uniform float mixValue;
@@ -13,5 +13,5 @@ uniform sampler2D texture2;
void main() void main()
{ {
// linearly interpolate between both textures // linearly interpolate between both textures
fragColor = mix(texture(texture1, texCoord), texture(texture2, texCoord), mixValue); FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord), mixValue);
} }

View File

@@ -4,11 +4,11 @@ layout (location = 1) in vec3 aColor;
layout (location = 2) in vec2 aTexCoord; layout (location = 2) in vec2 aTexCoord;
out vec3 ourColor; out vec3 ourColor;
out vec2 texCoord; out vec2 TexCoord;
void main() void main()
{ {
gl_Position = vec4(aPos, 1.0f); gl_Position = vec4(aPos, 1.0);
ourColor = aColor; ourColor = aColor;
texCoord = vec2(aTexCoord.x, aTexCoord.y); TexCoord = vec2(aTexCoord.x, aTexCoord.y);
} }

View File

@@ -11,8 +11,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings // settings
const unsigned int SCR_WIDTH = 1280; const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 720; const unsigned int SCR_HEIGHT = 600;
// stores how much we're seeing of either texture // stores how much we're seeing of either texture
float mixValue = 0.2f; float mixValue = 0.2f;

View File

@@ -1,8 +1,7 @@
#version 330 core #version 330 core
out vec4 fragColor; out vec4 FragColor;
in vec3 ourColor; in vec2 TexCoord;
in vec2 texCoord;
// texture samplers // texture samplers
uniform sampler2D texture1; uniform sampler2D texture1;
@@ -11,5 +10,5 @@ uniform sampler2D texture2;
void main() void main()
{ {
// linearly interpolate between both textures (80% container, 20% awesomeface) // linearly interpolate between both textures (80% container, 20% awesomeface)
fragColor = mix(texture(texture1, texCoord), texture(texture2, texCoord), 0.2); FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord), 0.2);
} }

View File

@@ -1,16 +1,13 @@
#version 330 core #version 330 core
layout (location = 0) in vec3 aPos; layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor; layout (location = 1) in vec2 aTexCoord;
layout (location = 2) in vec2 aTexCoord;
out vec3 ourColor; out vec2 TexCoord;
out vec2 texCoord;
uniform mat4 transform; uniform mat4 transform;
void main() void main()
{ {
gl_Position = transform * vec4(aPos, 1.0f); gl_Position = transform * vec4(aPos, 1.0);
ourColor = aColor; TexCoord = vec2(aTexCoord.x, aTexCoord.y);
texCoord = vec2(aTexCoord.x, aTexCoord.y);
} }

View File

@@ -14,6 +14,10 @@
void framebuffer_size_callback(GLFWwindow* window, int width, int height); void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
int main() int main()
{ {
// glfw: initialize and configure // glfw: initialize and configure
@@ -26,14 +30,14 @@ int main()
// glfw window creation // glfw window creation
// -------------------- // --------------------
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL); GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
glfwMakeContextCurrent(window);
if (window == NULL) if (window == NULL)
{ {
std::cout << "Failed to create GLFW window" << std::endl; std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate(); glfwTerminate();
return -1; return -1;
} }
glfwMakeContextCurrent(window);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
// glad: load all OpenGL function pointers // glad: load all OpenGL function pointers
@@ -51,11 +55,11 @@ int main()
// set up vertex data (and buffer(s)) and configure vertex attributes // set up vertex data (and buffer(s)) and configure vertex attributes
// ------------------------------------------------------------------ // ------------------------------------------------------------------
float vertices[] = { float vertices[] = {
// positions // colors // texture coords // positions // texture coords
0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // top right 0.5f, 0.5f, 0.0f, 1.0f, 1.0f, // top right
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // bottom right 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, // bottom right
-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom left -0.5f, -0.5f, 0.0f, 0.0f, 0.0f, // bottom left
-0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f // top left -0.5f, 0.5f, 0.0f, 0.0f, 1.0f // top left
}; };
unsigned int indices[] = { unsigned int indices[] = {
0, 1, 3, // first triangle 0, 1, 3, // first triangle
@@ -75,14 +79,11 @@ int main()
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
// position attribute // position attribute
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
// color attribute
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float)));
glEnableVertexAttribArray(1);
// texture coord attribute // texture coord attribute
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float))); glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)(3 * sizeof(float)));
glEnableVertexAttribArray(2); glEnableVertexAttribArray(1);
// load and create a texture // load and create a texture
@@ -99,9 +100,9 @@ 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 image, create texture and generate mipmaps // load image, create texture and generate mipmaps
int width, height, nrComponents; int width, height, nrChannels;
stbi_set_flip_vertically_on_load(true); // tell stb_image.h to flip loaded texture's on the y-axis. stbi_set_flip_vertically_on_load(true); // tell stb_image.h to flip loaded texture's on the y-axis.
unsigned char *data = stbi_load(FileSystem::getPath("resources/textures/container.jpg").c_str(), &width, &height, &nrComponents, 0); unsigned char *data = stbi_load(FileSystem::getPath("resources/textures/container.jpg").c_str(), &width, &height, &nrChannels, 0);
if (data) if (data)
{ {
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
@@ -123,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 image, create texture and generate mipmaps // load image, create texture and generate mipmaps
data = stbi_load(FileSystem::getPath("resources/textures/awesomeface.png").c_str(), &width, &height, &nrComponents, 0); data = stbi_load(FileSystem::getPath("resources/textures/awesomeface.png").c_str(), &width, &height, &nrChannels, 0);
if (data) if (data)
{ {
// note that the awesomeface.png has transparency and thus an alpha channel, so make sure to tell OpenGL the data type is of GL_RGBA // note that the awesomeface.png has transparency and thus an alpha channel, so make sure to tell OpenGL the data type is of GL_RGBA

View File

@@ -14,6 +14,10 @@
void framebuffer_size_callback(GLFWwindow* window, int width, int height); void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window); void processInput(GLFWwindow *window);
// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
int main() int main()
{ {
// glfw: initialize and configure // glfw: initialize and configure
@@ -26,14 +30,14 @@ int main()
// glfw window creation // glfw window creation
// -------------------- // --------------------
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL); GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
glfwMakeContextCurrent(window);
if (window == NULL) if (window == NULL)
{ {
std::cout << "Failed to create GLFW window" << std::endl; std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate(); glfwTerminate();
return -1; return -1;
} }
glfwMakeContextCurrent(window);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
// glad: load all OpenGL function pointers // glad: load all OpenGL function pointers
@@ -51,11 +55,11 @@ int main()
// set up vertex data (and buffer(s)) and configure vertex attributes // set up vertex data (and buffer(s)) and configure vertex attributes
// ------------------------------------------------------------------ // ------------------------------------------------------------------
float vertices[] = { float vertices[] = {
// positions // colors // texture coords // positions // texture coords
0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // top right 0.5f, 0.5f, 0.0f, 1.0f, 1.0f, // top right
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // bottom right 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, // bottom right
-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom left -0.5f, -0.5f, 0.0f, 0.0f, 0.0f, // bottom left
-0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f // top left -0.5f, 0.5f, 0.0f, 0.0f, 1.0f // top left
}; };
unsigned int indices[] = { unsigned int indices[] = {
0, 1, 3, // first triangle 0, 1, 3, // first triangle
@@ -75,14 +79,11 @@ int main()
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
// position attribute // position attribute
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
// color attribute
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float)));
glEnableVertexAttribArray(1);
// texture coord attribute // texture coord attribute
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float))); glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)(3 * sizeof(float)));
glEnableVertexAttribArray(2); glEnableVertexAttribArray(1);
// load and create a texture // load and create a texture
@@ -99,9 +100,9 @@ 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 image, create texture and generate mipmaps // load image, create texture and generate mipmaps
int width, height, nrComponents; int width, height, nrChannels;
stbi_set_flip_vertically_on_load(true); // tell stb_image.h to flip loaded texture's on the y-axis. stbi_set_flip_vertically_on_load(true); // tell stb_image.h to flip loaded texture's on the y-axis.
unsigned char *data = stbi_load(FileSystem::getPath("resources/textures/container.jpg").c_str(), &width, &height, &nrComponents, 0); unsigned char *data = stbi_load(FileSystem::getPath("resources/textures/container.jpg").c_str(), &width, &height, &nrChannels, 0);
if (data) if (data)
{ {
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
@@ -123,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 image, create texture and generate mipmaps // load image, create texture and generate mipmaps
data = stbi_load(FileSystem::getPath("resources/textures/awesomeface.png").c_str(), &width, &height, &nrComponents, 0); data = stbi_load(FileSystem::getPath("resources/textures/awesomeface.png").c_str(), &width, &height, &nrChannels, 0);
if (data) if (data)
{ {
// note that the awesomeface.png has transparency and thus an alpha channel, so make sure to tell OpenGL the data type is of GL_RGBA // note that the awesomeface.png has transparency and thus an alpha channel, so make sure to tell OpenGL the data type is of GL_RGBA