Implemented textures
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
project(UglyMain)
|
||||
|
||||
add_executable(${PROJECT_NAME}
|
||||
main.cpp
|
||||
src/App.cpp
|
||||
./main.cpp
|
||||
./src/App.cpp
|
||||
)
|
||||
|
||||
target_include_directories(${PROJECT_NAME}
|
||||
@@ -13,6 +13,7 @@ target_link_libraries(${PROJECT_NAME}
|
||||
GLEW::GLEW
|
||||
glfw
|
||||
glm::glm
|
||||
stb_image
|
||||
UglyLogLib
|
||||
UglyShaderLib
|
||||
)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "LogUtils.hpp"
|
||||
#include "ShaderProgramBuilder.hpp"
|
||||
#include "stb_image.h"
|
||||
#include "TimestampLog.hpp"
|
||||
|
||||
namespace ugly {
|
||||
@@ -58,9 +59,14 @@ App::App(GLFWwindow *window):
|
||||
glfwSetKeyCallback(mpWindow, key_callback_s);
|
||||
|
||||
float vertices[] = {
|
||||
.0f, .5f, 1.f, 0.f, 0.f,
|
||||
.5f, -.5f, 0.f, 1.f, 0.f,
|
||||
-.5f, -.5f, 0.f, 0.f, 1.f
|
||||
// Position(3), Color(2), TexCoord(2)
|
||||
-0.75f, 0.75f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // Top-left
|
||||
0.75f, 0.75f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // Top-right
|
||||
0.75f, -0.75f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, // Bottom-right
|
||||
|
||||
0.75f, -0.75f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, // Bottom-right
|
||||
-0.75f, -0.75f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, // Bottom-left
|
||||
-0.75f, 0.75f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f // Top-left
|
||||
};
|
||||
|
||||
GLuint vbo;
|
||||
@@ -73,23 +79,46 @@ App::App(GLFWwindow *window):
|
||||
.attachFromFile(GL_FRAGMENT_SHADER, "assets/shaders/shader.frag")
|
||||
.link();
|
||||
glUseProgram(shaderProgram);
|
||||
mShaderProgram = shaderProgram;
|
||||
|
||||
GLuint tex;
|
||||
glGenTextures(1, &tex);
|
||||
glBindTexture(GL_TEXTURE_2D, tex);
|
||||
int x, y, n;
|
||||
auto data = stbi_load("assets/textures/bliss.jpg", &x, &y, &n, 3);
|
||||
if(data == nullptr) {
|
||||
log("stbi_load() failed!");
|
||||
}
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, x, y, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
stbi_image_free(data);
|
||||
|
||||
GLuint vao;
|
||||
glGenVertexArrays(1, &vao);
|
||||
glBindVertexArray(vao);
|
||||
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 5*sizeof(float), 0);
|
||||
glEnableVertexAttribArray(0);
|
||||
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 5*sizeof(float), (void*)(2*sizeof(float)));
|
||||
glEnableVertexAttribArray(1);
|
||||
|
||||
GLint posAttrib = glGetAttribLocation(shaderProgram, "inPos");
|
||||
GLint colorAttrib = glGetAttribLocation(shaderProgram, "inColor");
|
||||
GLint coordAttrib = glGetAttribLocation(shaderProgram, "inCoord");
|
||||
glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, 7*sizeof(float), 0);
|
||||
glVertexAttribPointer(colorAttrib, 3, GL_FLOAT, GL_FALSE, 7*sizeof(float), (void*)(2*sizeof(float)));
|
||||
glVertexAttribPointer(coordAttrib, 2, GL_FLOAT, GL_FALSE, 7*sizeof(float), (void*)(5*sizeof(float)));
|
||||
glEnableVertexAttribArray(posAttrib);
|
||||
glEnableVertexAttribArray(colorAttrib);
|
||||
glEnableVertexAttribArray(coordAttrib);
|
||||
}
|
||||
|
||||
|
||||
void App::game_loop() {
|
||||
GLint timeUniform = glGetUniformLocation(mShaderProgram, "time");
|
||||
|
||||
auto startTime = glfwGetTime();
|
||||
while(!glfwWindowShouldClose(mpWindow)) {
|
||||
glfwPollEvents();
|
||||
|
||||
glUniform1f(timeUniform, glfwGetTime() - startTime);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
glDrawArrays(GL_TRIANGLES, 0, 3);
|
||||
glDrawArrays(GL_TRIANGLES, 0, 6);
|
||||
|
||||
glfwSwapBuffers(mpWindow);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ private:
|
||||
|
||||
private:
|
||||
GLFWwindow *mpWindow;
|
||||
unsigned int mShaderProgram;
|
||||
|
||||
private:
|
||||
App(GLFWwindow *window);
|
||||
|
||||
9
source/image/CMakeLists.txt
Normal file
9
source/image/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
project(stb_image)
|
||||
|
||||
add_library(${PROJECT_NAME}
|
||||
./src/stb_image.c
|
||||
)
|
||||
|
||||
target_include_directories(${PROJECT_NAME}
|
||||
PUBLIC ./include
|
||||
)
|
||||
37
source/image/LICENSE.txt
Normal file
37
source/image/LICENSE.txt
Normal file
@@ -0,0 +1,37 @@
|
||||
This software is available under 2 licenses -- choose whichever you prefer.
|
||||
------------------------------------------------------------------------------
|
||||
ALTERNATIVE A - MIT License
|
||||
Copyright (c) 2017 Sean Barrett
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
------------------------------------------------------------------------------
|
||||
ALTERNATIVE B - Public Domain (www.unlicense.org)
|
||||
This is free and unencumbered software released into the public domain.
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
|
||||
software, either in source code form or as a compiled binary, for any purpose,
|
||||
commercial or non-commercial, and by any means.
|
||||
In jurisdictions that recognize copyright laws, the author or authors of this
|
||||
software dedicate any and all copyright interest in the software to the public
|
||||
domain. We make this dedication for the benefit of the public at large and to
|
||||
the detriment of our heirs and successors. We intend this dedication to be an
|
||||
overt act of relinquishment in perpetuity of all present and future rights to
|
||||
this software under copyright law.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
7988
source/image/include/stb_image.h
Normal file
7988
source/image/include/stb_image.h
Normal file
File diff suppressed because it is too large
Load Diff
2
source/image/src/stb_image.c
Normal file
2
source/image/src/stb_image.c
Normal file
@@ -0,0 +1,2 @@
|
||||
#define STB_IMAGE_IMPLEMENTATION
|
||||
#include "stb_image.h"
|
||||
Reference in New Issue
Block a user