Moved shaders to standalone source file

This commit is contained in:
2025-07-28 05:22:56 -04:00
parent 370196ef7a
commit 7d8f4561eb
5 changed files with 38 additions and 32 deletions

View File

@@ -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}"
}
} }
] ]
} }

View File

@@ -0,0 +1,8 @@
#version 150 core
in vec3 _color;
out vec4 color;
void main() {
color = vec4(_color, 1.0);
}

View 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);
}

View File

@@ -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();

View File

@@ -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());
} }