GL3GraphicContextProvider::GL3GraphicContextProvider(const OpenGLWindowProvider * const render_window) : render_window(render_window), framebuffer_bound(false), opengl_version_major(0), shader_version_major(0), scissor_enabled(false) { check_opengl_version(); calculate_shading_language_version(); create_standard_programs(); reset_program_object(); SharedGCData::add_provider(this); }
GL1GraphicContextProvider::GL1GraphicContextProvider(OpenGLWindowProvider * render_window) : render_window(render_window), prim_arrays_set(false), num_set_tex_arrays(0), primitives_array_texture_set(false), primitives_array_texindex_set(false), scissor_enabled(false), framebuffer_bound(false) { check_opengl_version(); max_texture_coords = get_max_texture_coords(); // Limit the internal texture coords, to avoid situations where the opengl driver says there are unlimited texture coords if (max_texture_coords > 32) max_texture_coords = 32; // Hack, so the sprite render batcher does not exceed the allowed number of textures if (max_texture_coords < RenderBatchTriangle::max_textures) { if (max_texture_coords > 0) { RenderBatchTriangle::max_textures = max_texture_coords; } else { RenderBatchTriangle::max_textures = 1; } } selected_textures.resize(max_texture_coords); internal_program_provider = new GL1ProgramObjectProvider(this); // <-- To be owned by "standard_program" internal_program = ProgramObject(internal_program_provider); // Enable point sprites for legacy opengl glEnable(GL_POINT_SPRITE); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); SharedGCData::add_provider(this); }