Load shaders from file
This commit is contained in:
parent
0b7da3fad7
commit
a711521f17
7
shaders/frag.glsl
Normal file
7
shaders/frag.glsl
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#version 460 core
|
||||||
|
|
||||||
|
out vec4 color;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
color = vec4(0.93f, 0.42f, 0.35f, 1.0f);
|
||||||
|
};
|
7
shaders/vert.glsl
Normal file
7
shaders/vert.glsl
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#version 460 core
|
||||||
|
|
||||||
|
in vec4 position;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
gl_Position = vec4(position.x, position.y, position.z, position.w);
|
||||||
|
};
|
31
src/main.cc
31
src/main.cc
@ -48,6 +48,7 @@ void run_main_loop (App &app);
|
|||||||
void cleanup (App &app);
|
void cleanup (App &app);
|
||||||
GLuint create_shader_program (const std::string &vertex_shader_source, const std::string &fragment_shader_source);
|
GLuint create_shader_program (const std::string &vertex_shader_source, const std::string &fragment_shader_source);
|
||||||
GLuint compile_shader (GLuint type, const std::string &source);
|
GLuint compile_shader (GLuint type, const std::string &source);
|
||||||
|
std::string load_shader (const std::string &filepath);
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
App app = {};
|
App app = {};
|
||||||
@ -148,18 +149,8 @@ void create_vertex_spec(App &app) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void create_graphics_pipeline(App &app) {
|
void create_graphics_pipeline(App &app) {
|
||||||
const std::string vs_source =
|
const std::string vs_source = load_shader("shaders/vert.glsl");
|
||||||
"#version 460 core\n"
|
const std::string fs_source = load_shader("shaders/frag.glsl");
|
||||||
"in vec4 position;\n"
|
|
||||||
"void main() {\n"
|
|
||||||
" gl_Position = vec4(position.x, position.y, position.z, position.w);\n"
|
|
||||||
"}";
|
|
||||||
const std::string fs_source =
|
|
||||||
"#version 460 core\n"
|
|
||||||
"out vec4 color;\n"
|
|
||||||
"void main() {\n"
|
|
||||||
" color = vec4(0.93f, 0.42f, 0.35f, 1.0f);\n"
|
|
||||||
"}";
|
|
||||||
|
|
||||||
app.shader_program = create_shader_program(vs_source, fs_source);
|
app.shader_program = create_shader_program(vs_source, fs_source);
|
||||||
}
|
}
|
||||||
@ -256,3 +247,19 @@ GLuint compile_shader(GLuint type, const std::string &source) {
|
|||||||
|
|
||||||
return shader;
|
return shader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string load_shader(const std::string &filepath) {
|
||||||
|
FILE *fp = fopen(filepath.c_str(), "r");
|
||||||
|
if (!fp) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string output = {};
|
||||||
|
|
||||||
|
char buf[1024] = {0};
|
||||||
|
while (fgets(buf, sizeof(buf), fp)) {
|
||||||
|
output += buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user