99 virtual const i_shader&
next_in_stage(
const i_shader& aPreviousShader)
const = 0;
118 template <
typename T>
121 return static_cast<const T&
>(*this);
123 template <
typename T>
126 return static_cast<T&
>(*this);
130 return !
stages().
at(
static_cast<std::size_t
>(aStage))->shaders().empty();
virtual const i_shader & shader(const neolib::i_string &aName) const =0
virtual bool dirty() const =0
virtual bool active() const =0
virtual const i_vertex_shader & vertex_shader() const =0
bool stage_dirty(shader_type aStage) const
virtual void update_uniforms(const i_rendering_context &aContext)=0
i_shader_program abstract_type
virtual void instantiate(const i_rendering_context &aContext)=0
neolib::i_ref_ptr< i_shader_stage > i_stage_t
virtual bool supports(vertex_buffer_type aBufferType) const =0
virtual shader_program_type type() const =0
virtual void prepare_uniforms(const i_rendering_context &aContext)=0
virtual i_vertex_shader & vertex_shader()=0
virtual i_shader & shader(const neolib::i_string &aName)=0
virtual i_fragment_shader & fragment_shader()=0
virtual bool is_last_in_stage(const i_shader &aShader) const =0
virtual ~i_shader_program()=default
virtual void deactivate()=0
virtual const i_shader & first_in_stage(shader_type aStage) const =0
virtual const i_shader & next_in_stage(const i_shader &aPreviousShader) const =0
virtual bool created() const =0
neolib::i_vector< i_stage_t > i_stages_t
virtual i_stage_t & stage(shader_type aStage)=0
virtual const i_fragment_shader & fragment_shader() const =0
virtual bool is_first_in_stage(const i_shader &aShader) const =0
virtual i_shader & add_shader(const neolib::i_ref_ptr< i_shader > &aShader)=0
virtual void update_uniform_storage()=0
virtual i_stages_t & stages()=0
virtual void activate(const i_rendering_context &aContext)=0
virtual void * handle() const =0
virtual void update_uniform_locations()=0
virtual void set_clean()=0
bool stage_clean(shader_type aStage) const
bool have_stage(shader_type aStage) const
virtual const i_string & name() const =0
virtual const i_stage_t & stage(shader_type aStage) const =0
virtual const i_shader & last_in_stage(shader_type aStage) const =0
virtual bool uniforms_changed() const =0
virtual const i_stages_t & stages() const =0
neolib::i_ref_ptr< i_shader > i_shader_t
virtual shader_type type() const =0
neolib::i_vector< i_shader_t > i_shaders_t
virtual ~i_shader_stage()=default
virtual i_shaders_t & shaders()=0
virtual i_shaders_t const & shaders() const =0
i_shader_stage abstract_type
virtual const value_type & at(size_type aIndex) const =0
failed_to_create_shader_program(std::string const &aReason)
failed_to_create_shader()
shader_program_error(std::string const &aError)