Open CASCADE Technology
7.4.0
|
Wrapper for OpenGL shader object. More...
#include <OpenGl_ShaderObject.hxx>
Data Structures | |
struct | ShaderVariable |
Structure defining shader uniform or in/out variable. More... | |
Public Types | |
typedef NCollection_Sequence< ShaderVariable > | ShaderVariableList |
List of variable of shader program. More... | |
Public Types inherited from Standard_Transient | |
typedef void | base_type |
Returns a type descriptor about this object. More... | |
Public Member Functions | |
OpenGl_ShaderObject (GLenum theType) | |
Creates uninitialized shader object. More... | |
virtual | ~OpenGl_ShaderObject () |
Releases resources of shader object. More... | |
Standard_Boolean | LoadSource (const Handle< OpenGl_Context > &theCtx, const TCollection_AsciiString &theSource) |
Loads shader source code. More... | |
Standard_Boolean | Compile (const Handle< OpenGl_Context > &theCtx) |
Compiles the shader object. More... | |
Standard_Boolean | LoadAndCompile (const Handle< OpenGl_Context > &theCtx, const TCollection_AsciiString &theId, const TCollection_AsciiString &theSource, bool theIsVerbose=true, bool theToPrintSource=true) |
Wrapper for compiling shader object with verbose printing on error. More... | |
void | DumpSourceCode (const Handle< OpenGl_Context > &theCtx, const TCollection_AsciiString &theId, const TCollection_AsciiString &theSource) const |
Print source code of this shader object to messenger. More... | |
Standard_Boolean | FetchInfoLog (const Handle< OpenGl_Context > &theCtx, TCollection_AsciiString &theLog) |
Fetches information log of the last compile operation. More... | |
Standard_Boolean | Create (const Handle< OpenGl_Context > &theCtx) |
Creates new empty shader object of specified type. More... | |
virtual void | Release (OpenGl_Context *theCtx) override |
Destroys shader object. More... | |
virtual Standard_Size | EstimatedDataSize () const override |
Returns estimated GPU memory usage - not implemented. More... | |
GLenum | Type () const |
Returns type of shader object. More... | |
Standard_Boolean | updateDebugDump (const Handle< OpenGl_Context > &theCtx, const TCollection_AsciiString &theId, const TCollection_AsciiString &theFolder, Standard_Boolean theToBeautify, Standard_Boolean theToReset) |
Update the shader object from external file in the following way: 1) If external file does not exist, then it will be created (current source code will be dumped, no recompilation) and FALSE will be returned. 2) If external file exists and it has the same timestamp as myDumpDate, nothing will be done and FALSE will be returned. 3) If external file exists and it has newer timestamp than myDumpDate, shader will be recompiled and TRUE will be returned. More... | |
Public Member Functions inherited from OpenGl_Resource | |
OpenGl_Resource () | |
Empty constructor. More... | |
virtual | ~OpenGl_Resource () |
Destructor. Inheritors should call Clean (NULL) within it. More... | |
Public Member Functions inherited from Standard_Transient | |
Standard_Transient () | |
Empty constructor. More... | |
Standard_Transient (const Standard_Transient &) | |
Copy constructor – does nothing. More... | |
Standard_Transient & | operator= (const Standard_Transient &) |
Assignment operator, needed to avoid copying reference counter. More... | |
virtual | ~Standard_Transient () |
Destructor must be virtual. More... | |
virtual void | Delete () const |
Memory deallocator for transient classes. More... | |
virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
Returns a type descriptor about this object. More... | |
Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
Returns a true value if this is an instance of Type. More... | |
Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
Returns a true value if this is an instance of TypeName. More... | |
Standard_Boolean | IsKind (const opencascade::handle< Standard_Type > &theType) const |
Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. More... | |
Standard_Boolean | IsKind (const Standard_CString theTypeName) const |
Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. More... | |
Standard_Transient * | This () const |
Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero. More... | |
Standard_Integer | GetRefCount () const |
Get the reference counter of this object. More... | |
void | IncrementRefCounter () const |
Increments the reference counter of this object. More... | |
Standard_Integer | DecrementRefCounter () const |
Decrements the reference counter of this object; returns the decremented value. More... | |
Static Public Member Functions | |
static Handle< Graphic3d_ShaderObject > | CreateFromSource (TCollection_AsciiString &theSource, Graphic3d_TypeOfShaderObject theType, const ShaderVariableList &theUniforms, const ShaderVariableList &theStageInOuts, const TCollection_AsciiString &theInName=TCollection_AsciiString(), const TCollection_AsciiString &theOutName=TCollection_AsciiString(), Standard_Integer theNbGeomInputVerts=0) |
This is a preprocessor for Graphic3d_ShaderObject::CreateFromSource() function. Creates a new shader object from specified source according to list of uniforms and in/out variables. More... | |
Static Public Member Functions inherited from Standard_Transient | |
static const char * | get_type_name () |
Returns a type descriptor about this object. More... | |
static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
Returns type descriptor of Standard_Transient class. More... | |
Static Public Attributes | |
static const GLuint | NO_SHADER = 0 |
Non-valid shader name. More... | |
Protected Attributes | |
Quantity_Date | myDumpDate |
The recent date of the shader dump. More... | |
GLenum | myType |
Type of OpenGL shader object. More... | |
GLuint | myShaderID |
Handle of OpenGL shader object. More... | |
Wrapper for OpenGL shader object.
List of variable of shader program.
OpenGl_ShaderObject::OpenGl_ShaderObject | ( | GLenum | theType | ) |
Creates uninitialized shader object.
|
virtual |
Releases resources of shader object.
Standard_Boolean OpenGl_ShaderObject::Compile | ( | const Handle< OpenGl_Context > & | theCtx | ) |
Compiles the shader object.
Standard_Boolean OpenGl_ShaderObject::Create | ( | const Handle< OpenGl_Context > & | theCtx | ) |
Creates new empty shader object of specified type.
|
static |
This is a preprocessor for Graphic3d_ShaderObject::CreateFromSource() function. Creates a new shader object from specified source according to list of uniforms and in/out variables.
theSource | shader object source code to modify |
theType | shader object type to create |
theUniforms | list of uniform variables |
theStageInOuts | list of stage in/out variables |
theInName | name of input variables block; can be empty for accessing each variable without block prefix (mandatory for stages accessing both inputs and outputs) |
theOutName | name of output variables block; can be empty for accessing each variable without block prefix (mandatory for stages accessing both inputs and outputs) |
theNbGeomInputVerts | number of geometry shader input vertexes |
void OpenGl_ShaderObject::DumpSourceCode | ( | const Handle< OpenGl_Context > & | theCtx, |
const TCollection_AsciiString & | theId, | ||
const TCollection_AsciiString & | theSource | ||
) | const |
Print source code of this shader object to messenger.
|
inlineoverridevirtual |
Returns estimated GPU memory usage - not implemented.
Implements OpenGl_Resource.
Standard_Boolean OpenGl_ShaderObject::FetchInfoLog | ( | const Handle< OpenGl_Context > & | theCtx, |
TCollection_AsciiString & | theLog | ||
) |
Fetches information log of the last compile operation.
Standard_Boolean OpenGl_ShaderObject::LoadAndCompile | ( | const Handle< OpenGl_Context > & | theCtx, |
const TCollection_AsciiString & | theId, | ||
const TCollection_AsciiString & | theSource, | ||
bool | theIsVerbose = true , |
||
bool | theToPrintSource = true |
||
) |
Wrapper for compiling shader object with verbose printing on error.
theCtx | bound OpenGL context |
theId | GLSL program id to define file name |
theSource | source code to load |
theIsVerbose | flag to print log on error |
theToPrintSource | flag to print source code on error |
Standard_Boolean OpenGl_ShaderObject::LoadSource | ( | const Handle< OpenGl_Context > & | theCtx, |
const TCollection_AsciiString & | theSource | ||
) |
Loads shader source code.
|
overridevirtual |
Destroys shader object.
Implements OpenGl_Resource.
|
inline |
Returns type of shader object.
Standard_Boolean OpenGl_ShaderObject::updateDebugDump | ( | const Handle< OpenGl_Context > & | theCtx, |
const TCollection_AsciiString & | theId, | ||
const TCollection_AsciiString & | theFolder, | ||
Standard_Boolean | theToBeautify, | ||
Standard_Boolean | theToReset | ||
) |
Update the shader object from external file in the following way: 1) If external file does not exist, then it will be created (current source code will be dumped, no recompilation) and FALSE will be returned. 2) If external file exists and it has the same timestamp as myDumpDate, nothing will be done and FALSE will be returned. 3) If external file exists and it has newer timestamp than myDumpDate, shader will be recompiled and TRUE will be returned.
theCtx | OpenGL context bound to this working thread |
theId | GLSL program id to define file name |
theFolder | folder to store files |
theToBeautify | flag improving formatting (add extra newlines) |
theToReset | when TRUE, existing dumps will be overridden |
|
protected |
The recent date of the shader dump.
|
protected |
Handle of OpenGL shader object.
|
protected |
Type of OpenGL shader object.
|
static |
Non-valid shader name.