13 std::string prog_name =
"";
17 bool has_indices =
false;
22 bool success = prog.
build_program(ctx, prog_name, options,
true);
23 prog.allow_context_to_set_color(
false);
31 void destruct(
const context& ctx) {
36 return build_shader_program(ctx, defines);
42 return build_shader_program(ctx, defines);
46 assert(prog.
is_created() &&
"generic_renderer::ref_prog shader program is not created; call init before first use");
51 assert(prog.
is_created() &&
"generic_renderer::enable_prog shader program is not created; call init before first use");
57 bool res = geometry.enable(ctx, prog);
62 has_indices = geometry.has_indices();
67 bool res = geometry.disable(ctx);
74 size_t draw_count = geometry.render_count();
75 start = std::min(start, draw_count);
76 draw_count = std::min(start + (count ? count : draw_count), draw_count) - start;
78 GLenum pt = gl::map_to_gl(type);
80 glDrawElements(pt, (GLsizei)draw_count, GL_UNSIGNED_INT, (
void*)(start *
sizeof(
unsigned)));
82 glDrawArrays(pt, (GLint)start, (GLsizei)draw_count);
87 if(!enable(ctx, geometry))
89 draw(ctx, type, geometry, start, count);
90 return disable(ctx, geometry);
base class for all drawables, which is independent of the used rendering API.