GPU_ShaderBlock load_shaders(Uint32* v, Uint32* f, Uint32* p) { *v = load_shader(GPU_VERTEX_SHADER, "data/shaders/time_mod.vert"); if(!*v) GPU_LogError("Failed to load vertex shader: %s\n", GPU_GetShaderMessage()); *f = load_shader(GPU_FRAGMENT_SHADER, "data/shaders/time_mod.frag"); if(!*f) GPU_LogError("Failed to load fragment shader: %s\n", GPU_GetShaderMessage()); *p = GPU_LinkShaders(*v, *f); if(!*p) { GPU_ShaderBlock b = {-1, -1, -1, -1}; GPU_LogError("Failed to link shader program: %s\n", GPU_GetShaderMessage()); return b; } { GPU_ShaderBlock block = GPU_LoadShaderBlock(*p, "gpu_Vertex", "gpu_TexCoord", "gpu_Color", "gpu_ModelViewProjectionMatrix"); GPU_ActivateShaderProgram(*p, &block); return block; } }
void shader_program::activate() { block_ = GPU_LoadShaderBlock(program_object_, "vert_vertex", "vert_texture_pos", "vert_draw_color", "model_view_proj"); GPU_ActivateShaderProgram(program_object_, &block_); //NOTE: this line can be removed once we made sure that a sane overlay // will be set before rendering anything. set_overlay(image::get_texture("misc/blank.png")); }