Extract getting uniform location into a function
This commit is contained in:
parent
deed9a42af
commit
cb26a0c9ef
31
src/main.cc
31
src/main.cc
@ -120,6 +120,7 @@ void render_model (const Model &model, const Camera &camera)
|
|||||||
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);
|
std::string load_shader (const std::string &filepath);
|
||||||
|
GLint get_uniform_location (GLint shader_program, const char *name);
|
||||||
void handle_object_movement (App &app);
|
void handle_object_movement (App &app);
|
||||||
void handle_camera_movement (App &app);
|
void handle_camera_movement (App &app);
|
||||||
glm::vec3 rotation_to_view_direction(const Camera &camera);
|
glm::vec3 rotation_to_view_direction(const Camera &camera);
|
||||||
@ -313,23 +314,9 @@ void create_graphics_pipeline(Model &model, const char *vs_file, const char *fs_
|
|||||||
|
|
||||||
model.mesh.shader_program = create_shader_program(vs_source, fs_source);
|
model.mesh.shader_program = create_shader_program(vs_source, fs_source);
|
||||||
|
|
||||||
const char *u_model = "u_model";
|
model.u_model_idx = get_uniform_location(model.mesh.shader_program, "u_model");
|
||||||
model.u_model_idx = glGetUniformLocation(model.mesh.shader_program, u_model);
|
model.u_view_idx = get_uniform_location(model.mesh.shader_program, "u_view");
|
||||||
if (model.u_model_idx < 0) {
|
model.u_projection_idx = get_uniform_location(model.mesh.shader_program, "u_projection");
|
||||||
printf("Failed to find uniform %s\n", u_model);
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *u_view = "u_view";
|
|
||||||
model.u_view_idx = glGetUniformLocation(model.mesh.shader_program, u_view);
|
|
||||||
if (model.u_view_idx < 0) {
|
|
||||||
printf("Failed to find uniform %s\n", u_view);
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *u_projection = "u_projection";
|
|
||||||
model.u_projection_idx = glGetUniformLocation(model.mesh.shader_program, u_projection);
|
|
||||||
if (model.u_projection_idx < 0) {
|
|
||||||
printf("Failed to find uniform %s\n", u_projection);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void run_main_loop(App &app) {
|
void run_main_loop(App &app) {
|
||||||
@ -463,6 +450,16 @@ std::string load_shader(const std::string &filepath) {
|
|||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GLint get_uniform_location(GLuint shader_program, const char *name) {
|
||||||
|
GLint location = glGetUniformLocation(shader_program, name);
|
||||||
|
if (location < 0) {
|
||||||
|
printf("Failed to find uniform %s\n", name);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
// Example of moving an object
|
// Example of moving an object
|
||||||
void handle_object_movement(App &app) {
|
void handle_object_movement(App &app) {
|
||||||
switch (app.event.key.keysym.sym) {
|
switch (app.event.key.keysym.sym) {
|
||||||
|
Loading…
Reference in New Issue
Block a user