neoGFX
Cross-platform C++ app/game engine
Loading...
Searching...
No Matches
neogfx::i_shader_program Class Referenceabstract

#include <i_shader_program.hpp>

Inheritance diagram for neogfx::i_shader_program:
neolib::i_reference_counted neogfx::i_standard_shader_program

Public Types

typedef i_shader_program abstract_type
 
typedef neolib::i_ref_ptr< i_shader_stagei_stage_t
 
typedef neolib::i_vector< i_stage_ti_stages_t
 

Public Member Functions

virtual ~i_shader_program ()=default
 
virtual shader_program_type type () const =0
 
virtual const i_stringname () const =0
 
virtual bool supports (vertex_buffer_type aBufferType) const =0
 
virtual bool created () const =0
 
virtual void * handle () const =0
 
virtual const i_stages_tstages () const =0
 
virtual i_stages_tstages ()=0
 
virtual const i_stage_tstage (shader_type aStage) const =0
 
virtual i_stage_tstage (shader_type aStage)=0
 
virtual const i_shader & shader (const neolib::i_string &aName) const =0
 
virtual i_shader & shader (const neolib::i_string &aName)=0
 
virtual const i_vertex_shadervertex_shader () const =0
 
virtual i_vertex_shadervertex_shader ()=0
 
virtual const i_fragment_shaderfragment_shader () const =0
 
virtual i_fragment_shaderfragment_shader ()=0
 
virtual bool is_first_in_stage (const i_shader &aShader) const =0
 
virtual bool is_last_in_stage (const i_shader &aShader) const =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 const i_shader & last_in_stage (shader_type aStage) const =0
 
virtual i_shader & add_shader (const neolib::i_ref_ptr< i_shader > &aShader)=0
 
virtual bool dirty () const =0
 
virtual void set_clean ()=0
 
virtual void prepare_uniforms (const i_rendering_context &aContext)=0
 
virtual void make ()=0
 
virtual void compile ()=0
 
virtual void link ()=0
 
virtual void use ()=0
 
virtual void update_uniform_storage ()=0
 
virtual void update_uniform_locations ()=0
 
virtual bool uniforms_changed () const =0
 
virtual void update_uniforms (const i_rendering_context &aContext)=0
 
virtual bool active () const =0
 
virtual void activate (const i_rendering_context &aContext)=0
 
virtual void deactivate ()=0
 
virtual void instantiate (const i_rendering_context &aContext)=0
 
template<typename T >
const T & as () const
 
template<typename T >
T & as ()
 
bool have_stage (shader_type aStage) const
 
bool stage_clean (shader_type aStage) const
 
bool stage_dirty (shader_type aStage) const
 
- Public Member Functions inherited from neolib::i_reference_counted
virtual ~i_reference_counted ()=default
 
virtual void add_ref () const noexcept=0
 
virtual void release () const =0
 
virtual int32_t use_count () const noexcept=0
 
virtual const i_reference_countedrelease_and_take_ownership () const =0
 
virtual i_reference_countedrelease_and_take_ownership ()=0
 
virtual void pin () const noexcept=0
 
virtual void unpin () const =0
 
virtual i_ref_control_blockcontrol_block ()=0
 

Detailed Description

Definition at line 68 of file i_shader_program.hpp.

Member Typedef Documentation

◆ abstract_type

◆ i_stage_t

◆ i_stages_t

Constructor & Destructor Documentation

◆ ~i_shader_program()

virtual neogfx::i_shader_program::~i_shader_program ( )
virtualdefault

Member Function Documentation

◆ activate()

virtual void neogfx::i_shader_program::activate ( const i_rendering_context aContext)
pure virtual

◆ active()

virtual bool neogfx::i_shader_program::active ( ) const
pure virtual

◆ add_shader()

virtual i_shader & neogfx::i_shader_program::add_shader ( const neolib::i_ref_ptr< i_shader > &  aShader)
pure virtual

◆ as() [1/2]

template<typename T >
T & neogfx::i_shader_program::as ( )
inline

Definition at line 124 of file i_shader_program.hpp.

◆ as() [2/2]

template<typename T >
const T & neogfx::i_shader_program::as ( ) const
inline

Definition at line 119 of file i_shader_program.hpp.

◆ compile()

virtual void neogfx::i_shader_program::compile ( )
pure virtual

◆ created()

virtual bool neogfx::i_shader_program::created ( ) const
pure virtual

◆ deactivate()

virtual void neogfx::i_shader_program::deactivate ( )
pure virtual

◆ dirty()

virtual bool neogfx::i_shader_program::dirty ( ) const
pure virtual

◆ first_in_stage()

virtual const i_shader & neogfx::i_shader_program::first_in_stage ( shader_type  aStage) const
pure virtual

◆ fragment_shader() [1/2]

virtual const i_fragment_shader & neogfx::i_shader_program::fragment_shader ( ) const
pure virtual

◆ fragment_shader() [2/2]

virtual i_fragment_shader & neogfx::i_shader_program::fragment_shader ( )
pure virtual

◆ handle()

virtual void * neogfx::i_shader_program::handle ( ) const
pure virtual

◆ have_stage()

bool neogfx::i_shader_program::have_stage ( shader_type  aStage) const
inline

Definition at line 128 of file i_shader_program.hpp.

◆ instantiate()

virtual void neogfx::i_shader_program::instantiate ( const i_rendering_context aContext)
pure virtual

◆ is_first_in_stage()

virtual bool neogfx::i_shader_program::is_first_in_stage ( const i_shader &  aShader) const
pure virtual

◆ is_last_in_stage()

virtual bool neogfx::i_shader_program::is_last_in_stage ( const i_shader &  aShader) const
pure virtual

◆ last_in_stage()

virtual const i_shader & neogfx::i_shader_program::last_in_stage ( shader_type  aStage) const
pure virtual

◆ link()

virtual void neogfx::i_shader_program::link ( )
pure virtual

◆ make()

virtual void neogfx::i_shader_program::make ( )
pure virtual

◆ name()

virtual const i_string & neogfx::i_shader_program::name ( ) const
pure virtual

◆ next_in_stage()

virtual const i_shader & neogfx::i_shader_program::next_in_stage ( const i_shader &  aPreviousShader) const
pure virtual

◆ prepare_uniforms()

virtual void neogfx::i_shader_program::prepare_uniforms ( const i_rendering_context aContext)
pure virtual

◆ set_clean()

virtual void neogfx::i_shader_program::set_clean ( )
pure virtual

◆ shader() [1/2]

virtual const i_shader & neogfx::i_shader_program::shader ( const neolib::i_string aName) const
pure virtual

◆ shader() [2/2]

virtual i_shader & neogfx::i_shader_program::shader ( const neolib::i_string aName)
pure virtual

◆ stage() [1/2]

virtual const i_stage_t & neogfx::i_shader_program::stage ( shader_type  aStage) const
pure virtual

◆ stage() [2/2]

virtual i_stage_t & neogfx::i_shader_program::stage ( shader_type  aStage)
pure virtual

◆ stage_clean()

bool neogfx::i_shader_program::stage_clean ( shader_type  aStage) const
inline

Definition at line 132 of file i_shader_program.hpp.

◆ stage_dirty()

bool neogfx::i_shader_program::stage_dirty ( shader_type  aStage) const
inline

Definition at line 146 of file i_shader_program.hpp.

◆ stages() [1/2]

virtual const i_stages_t & neogfx::i_shader_program::stages ( ) const
pure virtual

◆ stages() [2/2]

virtual i_stages_t & neogfx::i_shader_program::stages ( )
pure virtual

◆ supports()

virtual bool neogfx::i_shader_program::supports ( vertex_buffer_type  aBufferType) const
pure virtual

◆ type()

virtual shader_program_type neogfx::i_shader_program::type ( ) const
pure virtual

◆ uniforms_changed()

virtual bool neogfx::i_shader_program::uniforms_changed ( ) const
pure virtual

◆ update_uniform_locations()

virtual void neogfx::i_shader_program::update_uniform_locations ( )
pure virtual

◆ update_uniform_storage()

virtual void neogfx::i_shader_program::update_uniform_storage ( )
pure virtual

◆ update_uniforms()

virtual void neogfx::i_shader_program::update_uniforms ( const i_rendering_context aContext)
pure virtual

◆ use()

virtual void neogfx::i_shader_program::use ( )
pure virtual

◆ vertex_shader() [1/2]

virtual const i_vertex_shader & neogfx::i_shader_program::vertex_shader ( ) const
pure virtual

◆ vertex_shader() [2/2]

virtual i_vertex_shader & neogfx::i_shader_program::vertex_shader ( )
pure virtual

The documentation for this class was generated from the following file: