globjects  2.0.0.4363356ae2ef
Strict OpenGL objects wrapper.
Loading...
Searching...
No Matches

Encapsulates OpenGL shaders. More...

#include <globjects/include/globjects/Shader.h>

Inheritance diagram for globjects::Shader:
globjects::Object globjects::Instantiator< Shader >

Public Types

enum class  IncludeImplementation { Fallback , ShadingLanguageIncludeARB }
 
using IncludePaths = std::vector< std::string >
 
- Public Types inherited from globjects::Object
enum class  NameImplementation { Legacy , DebugKHR }
 

Public Member Functions

 Shader (const gl::GLenum type, AbstractStringSource *source, const IncludePaths &includePaths=IncludePaths())
 
 Shader (const gl::GLenum type)
 
virtual ~Shader ()
 
gl::GLenum type () const
 
void setSource (AbstractStringSource *source)
 
const AbstractStringSourcesource () const
 
void updateSource ()
 
const IncludePathsincludePaths () const
 
void setIncludePaths (const IncludePaths &includePaths)
 
bool compile () const
 
bool isCompiled () const
 
void invalidate ()
 
gl::GLint get (gl::GLenum pname) const
 
std::string getSource () const
 
bool checkCompileStatus () const
 
std::string infoLog () const
 
std::string typeString () const
 
virtual gl::GLenum objectType () const override
 
void addSubject (AbstractStringSource *subject)
 
virtual void removeSubject (AbstractStringSource *subject)
 
virtual void notifyChanged (const AbstractStringSource *changeable)
 
void changed () const
 
void registerListener (Program *listener)
 
void deregisterListener (Program *listener)
 
- Public Member Functions inherited from globjects::Object
gl::GLuint id () const
 
std::string name () const
 
void setName (const std::string &name)
 
bool hasName () const
 
bool isDefault () const
 
virtual gl::GLenum objectType () const =0
 
void detach ()
 

Static Public Member Functions

static void hintIncludeImplementation (IncludeImplementation impl)
 
static void globalReplace (const std::string &search, const std::string &replacement)
 
static void globalReplace (const std::string &search, int i)
 
static void clearGlobalReplacements ()
 
static std::unique_ptr< StaticStringSourcesourceFromString (const std::string &sourceString)
 
static std::unique_ptr< FilesourceFromFile (const std::string &filename)
 
static std::unique_ptr< AbstractStringSourceapplyGlobalReplacements (AbstractStringSource *source)
 
static std::string typeString (gl::GLenum type)
 
- Static Public Member Functions inherited from globjects::Object
static void hintNameImplementation (NameImplementation impl)
 
- Static Public Member Functions inherited from globjects::Instantiator< Shader >
static std::unique_ptr< Shadercreate (Args &&... args)
 
static std::unique_ptr< ShaderfromId (gl::GLuint id, Args &&... args)
 

Protected Member Functions

std::string shaderString () const
 
- Protected Member Functions inherited from globjects::Object
 Object (std::unique_ptr< IDResource > &&resource)
 
virtual ~Object ()
 

Protected Attributes

std::set< Program * > m_programListeners
 
std::set< AbstractStringSource * > m_sourceSubjects
 
gl::GLenum m_type
 
AbstractStringSourcem_source
 
IncludePaths m_includePaths
 
std::set< Program * > m_programs
 
bool m_compiled
 
bool m_compilationFailed
 
- Protected Attributes inherited from globjects::Object
std::unique_ptr< IDResourcem_resource
 
void * m_objectLabelState
 

Static Protected Attributes

static std::map< std::string, std::string > s_globalReplacements
 

Friends

class Program
 

Detailed Description

Encapsulates OpenGL shaders.

A shader can be constructed using an AbstractStringSource. A shader can be attached to a program using Program::attach(). A Shader subclasses either ChangeListener and Changeable to react to changing shader sources and to propagate this change to ChangeListeners.

See also
http://www.opengl.org/wiki/Shader
Program
ShaderSource
ChangeListener
Changeable

Member Typedef Documentation

◆ IncludePaths

using globjects::Shader::IncludePaths = std::vector<std::string>

Member Enumeration Documentation

◆ IncludeImplementation

Enumerator
Fallback 
ShadingLanguageIncludeARB 

Constructor & Destructor Documentation

◆ Shader() [1/2]

globjects::Shader::Shader ( const gl::GLenum  type,
AbstractStringSource source,
const IncludePaths includePaths = IncludePaths() 
)

◆ Shader() [2/2]

globjects::Shader::Shader ( const gl::GLenum  type)

◆ ~Shader()

virtual globjects::Shader::~Shader ( )
virtual

Member Function Documentation

◆ hintIncludeImplementation()

static void globjects::Shader::hintIncludeImplementation ( IncludeImplementation  impl)
static

◆ globalReplace() [1/2]

static void globjects::Shader::globalReplace ( const std::string &  search,
const std::string &  replacement 
)
static

◆ globalReplace() [2/2]

static void globjects::Shader::globalReplace ( const std::string &  search,
int  i 
)
static

◆ clearGlobalReplacements()

static void globjects::Shader::clearGlobalReplacements ( )
static

◆ sourceFromString()

static std::unique_ptr< StaticStringSource > globjects::Shader::sourceFromString ( const std::string &  sourceString)
static

◆ sourceFromFile()

static std::unique_ptr< File > globjects::Shader::sourceFromFile ( const std::string &  filename)
static

◆ applyGlobalReplacements()

static std::unique_ptr< AbstractStringSource > globjects::Shader::applyGlobalReplacements ( AbstractStringSource source)
static

◆ type()

gl::GLenum globjects::Shader::type ( ) const

◆ setSource()

void globjects::Shader::setSource ( AbstractStringSource source)

◆ source()

const AbstractStringSource * globjects::Shader::source ( ) const

◆ updateSource()

void globjects::Shader::updateSource ( )

◆ includePaths()

const IncludePaths & globjects::Shader::includePaths ( ) const

◆ setIncludePaths()

void globjects::Shader::setIncludePaths ( const IncludePaths includePaths)

◆ compile()

bool globjects::Shader::compile ( ) const

◆ isCompiled()

bool globjects::Shader::isCompiled ( ) const

◆ invalidate()

void globjects::Shader::invalidate ( )

◆ get()

gl::GLint globjects::Shader::get ( gl::GLenum  pname) const

◆ getSource()

std::string globjects::Shader::getSource ( ) const

◆ checkCompileStatus()

bool globjects::Shader::checkCompileStatus ( ) const

◆ infoLog()

std::string globjects::Shader::infoLog ( ) const

◆ typeString() [1/2]

std::string globjects::Shader::typeString ( ) const

◆ objectType()

virtual gl::GLenum globjects::Shader::objectType ( ) const
overridevirtual

Implements globjects::Object.

◆ typeString() [2/2]

static std::string globjects::Shader::typeString ( gl::GLenum  type)
static

◆ addSubject()

void globjects::Shader::addSubject ( AbstractStringSource subject)

◆ removeSubject()

virtual void globjects::Shader::removeSubject ( AbstractStringSource subject)
virtual

◆ notifyChanged()

virtual void globjects::Shader::notifyChanged ( const AbstractStringSource changeable)
virtual

◆ changed()

void globjects::Shader::changed ( ) const

◆ registerListener()

void globjects::Shader::registerListener ( Program listener)

◆ deregisterListener()

void globjects::Shader::deregisterListener ( Program listener)

◆ shaderString()

std::string globjects::Shader::shaderString ( ) const
protected

Friends And Related Function Documentation

◆ Program

friend class Program
friend

Member Data Documentation

◆ m_programListeners

std::set<Program *> globjects::Shader::m_programListeners
protected

◆ m_sourceSubjects

std::set<AbstractStringSource*> globjects::Shader::m_sourceSubjects
protected

◆ m_type

gl::GLenum globjects::Shader::m_type
protected

◆ m_source

AbstractStringSource* globjects::Shader::m_source
protected

◆ m_includePaths

IncludePaths globjects::Shader::m_includePaths
protected

◆ m_programs

std::set<Program *> globjects::Shader::m_programs
protected

◆ m_compiled

bool globjects::Shader::m_compiled
mutableprotected

◆ m_compilationFailed

bool globjects::Shader::m_compilationFailed
mutableprotected

◆ s_globalReplacements

std::map<std::string, std::string> globjects::Shader::s_globalReplacements
staticprotected

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