Moved shaders to standalone source file
This commit is contained in:
@@ -6,7 +6,10 @@
|
|||||||
"generator": "Visual Studio 17 2022",
|
"generator": "Visual Studio 17 2022",
|
||||||
"architecture": "x64",
|
"architecture": "x64",
|
||||||
"binaryDir": "${sourceDir}/build",
|
"binaryDir": "${sourceDir}/build",
|
||||||
"toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
|
"toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_VS_DEBUGGER_WORKING_DIRECTORY": "${sourceDir}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
8
assets/shaders/shader.frag
Normal file
8
assets/shaders/shader.frag
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#version 150 core
|
||||||
|
|
||||||
|
in vec3 _color;
|
||||||
|
out vec4 color;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
color = vec4(_color, 1.0);
|
||||||
|
}
|
||||||
10
assets/shaders/shader.vert
Normal file
10
assets/shaders/shader.vert
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#version 150 core
|
||||||
|
|
||||||
|
in vec2 position;
|
||||||
|
in vec3 color;
|
||||||
|
out vec3 _color;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
_color = color;
|
||||||
|
gl_Position = vec4(position, 0.0, 1.0);
|
||||||
|
}
|
||||||
@@ -47,16 +47,7 @@ App::App():
|
|||||||
if(glewInit() != GLEW_OK) {
|
if(glewInit() != GLEW_OK) {
|
||||||
error_callback_s(GLFW_NO_ERROR, "glewInit() failed");
|
error_callback_s(GLFW_NO_ERROR, "glewInit() failed");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
App::~App() {
|
|
||||||
glfwTerminate();
|
|
||||||
glfwSetErrorCallback(NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void App::game_loop() {
|
|
||||||
float vertices[] = {
|
float vertices[] = {
|
||||||
.0f, .5f, 1.f, 0.f, 0.f,
|
.0f, .5f, 1.f, 0.f, 0.f,
|
||||||
.5f, -.5f, 0.f, 1.f, 0.f,
|
.5f, -.5f, 0.f, 1.f, 0.f,
|
||||||
@@ -68,24 +59,9 @@ void App::game_loop() {
|
|||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
||||||
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
|
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
|
||||||
|
|
||||||
auto vertexSource = R"glsl(
|
|
||||||
#version 150 core
|
|
||||||
in vec2 position;
|
|
||||||
in vec3 color;
|
|
||||||
out vec3 _color;
|
|
||||||
void main() { _color = color; gl_Position = vec4(position, 0.0, 1.0); }
|
|
||||||
)glsl";
|
|
||||||
|
|
||||||
auto fragmentSource = R"glsl(
|
|
||||||
#version 150 core
|
|
||||||
in vec3 _color;
|
|
||||||
out vec4 color;
|
|
||||||
void main() { color = vec4(_color, 1.0); }
|
|
||||||
)glsl";
|
|
||||||
|
|
||||||
GLuint shaderProgram = ugly::ShaderProgramBuilder{}
|
GLuint shaderProgram = ugly::ShaderProgramBuilder{}
|
||||||
.attachFromMemory(GL_VERTEX_SHADER, vertexSource)
|
.attachFromFile(GL_VERTEX_SHADER, "assets/shaders/shader.vert")
|
||||||
.attachFromMemory(GL_FRAGMENT_SHADER, fragmentSource)
|
.attachFromFile(GL_FRAGMENT_SHADER, "assets/shaders/shader.frag")
|
||||||
.link();
|
.link();
|
||||||
glUseProgram(shaderProgram);
|
glUseProgram(shaderProgram);
|
||||||
|
|
||||||
@@ -96,7 +72,16 @@ void App::game_loop() {
|
|||||||
glEnableVertexAttribArray(0);
|
glEnableVertexAttribArray(0);
|
||||||
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 5*sizeof(float), (void*)(2*sizeof(float)));
|
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 5*sizeof(float), (void*)(2*sizeof(float)));
|
||||||
glEnableVertexAttribArray(1);
|
glEnableVertexAttribArray(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
App::~App() {
|
||||||
|
glfwTerminate();
|
||||||
|
glfwSetErrorCallback(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void App::game_loop() {
|
||||||
while(!glfwWindowShouldClose(mpWindow)) {
|
while(!glfwWindowShouldClose(mpWindow)) {
|
||||||
glfwPollEvents();
|
glfwPollEvents();
|
||||||
|
|
||||||
|
|||||||
@@ -46,10 +46,10 @@ ugly::ShaderProgramBuilder &ugly::ShaderProgramBuilder::attachFromMemory(GLenum
|
|||||||
|
|
||||||
|
|
||||||
ugly::ShaderProgramBuilder &ugly::ShaderProgramBuilder::attachFromFile(GLenum type, const char *filename) {
|
ugly::ShaderProgramBuilder &ugly::ShaderProgramBuilder::attachFromFile(GLenum type, const char *filename) {
|
||||||
auto file = std::ifstream{filename};
|
auto file = std::filebuf{};
|
||||||
file.exceptions(std::ios_base::badbit);
|
auto ss = std::ostringstream{};
|
||||||
std::ostringstream ss;
|
ss.exceptions(std::ios_base::badbit);
|
||||||
ss << file.rdbuf();
|
ss << file.open(filename, std::ios_base::in);
|
||||||
return attachFromMemory(type, ss.str().c_str());
|
return attachFromMemory(type, ss.str().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ GLuint ugly::ShaderProgramBuilder::link() {
|
|||||||
char buf[512];
|
char buf[512];
|
||||||
glGetProgramInfoLog(mProgram, 512, NULL, buf);
|
glGetProgramInfoLog(mProgram, 512, NULL, buf);
|
||||||
std::cerr << "Failed to link program:\n\t" << buf << '\n';
|
std::cerr << "Failed to link program:\n\t" << buf << '\n';
|
||||||
throw Error{"program failed to link"};
|
throw Error{"program failed to link"};
|
||||||
}
|
}
|
||||||
|
|
||||||
auto result = mProgram;
|
auto result = mProgram;
|
||||||
|
|||||||
Reference in New Issue
Block a user