|
| OpenGl_Context (const Handle< OpenGl_Caps > &theCaps=NULL) |
| Empty constructor. You should call Init() to perform initialization with bound GL context. More...
|
|
virtual | ~OpenGl_Context () |
| Destructor. More...
|
|
void | forcedRelease () |
| Release all resources, including shared ones. More...
|
|
void | Share (const Handle< OpenGl_Context > &theShareCtx) |
| Share GL context resources. theShareCtx - handle to context to retrieve handles to shared resources. More...
|
|
Standard_Boolean | Init (const Standard_Boolean theIsCoreProfile=Standard_False) |
| Initialize class from currently bound OpenGL context. Method should be called only once. More...
|
|
Standard_Boolean | IsValid () const |
|
Standard_Boolean | Init (const Aspect_Drawable theWindow, const Aspect_Display theDisplay, const Aspect_RenderingContext theGContext, const Standard_Boolean theIsCoreProfile=Standard_False) |
| Initialize class from specified window and rendering context. Method should be called only once. More...
|
|
Aspect_Drawable | Window () const |
|
Standard_Boolean | CheckExtension (const char *theExtName) const |
| Check if theExtName extension is supported by active GL context. More...
|
|
template<typename FuncType_t > |
Standard_Boolean | FindProc (const char *theFuncName, FuncType_t &theFuncPtr) |
| Auxiliary template to retrieve GL function pointer. Pointer to function retrieved from library is statically casted to requested type - there no way to check real signature of exported function. The context should be bound before call. More...
|
|
Standard_Boolean | IsGlGreaterEqual (const Standard_Integer theVerMajor, const Standard_Integer theVerMinor) const |
|
Standard_Integer | VersionMajor () const |
| Return cached GL version major number. More...
|
|
Standard_Integer | VersionMinor () const |
| Return cached GL version minor number. More...
|
|
const OpenGl_GlFunctions * | Functions () const |
| Access entire map of loaded OpenGL functions. More...
|
|
bool | ResetErrors (const bool theToPrintErrors=false) |
| Clean up errors stack for this GL context (glGetError() in loop). More...
|
|
Standard_Boolean | IsCurrent () const |
| This method uses system-dependent API to retrieve information about GL context bound to the current thread. More...
|
|
Standard_Boolean | MakeCurrent () |
| Activates current context. Class should be initialized with appropriate info. More...
|
|
void | SwapBuffers () |
| Swap front/back buffers for this GL context (should be activated before!). More...
|
|
Standard_Boolean | SetSwapInterval (const Standard_Integer theInterval) |
| Setup swap interval (VSync). More...
|
|
Standard_Boolean | IsRender () const |
| Return true if active mode is GL_RENDER (cached state) More...
|
|
Standard_Boolean | IsFeedback () const |
| Return true if active mode is GL_FEEDBACK (cached state) More...
|
|
Standard_Size | AvailableMemory () const |
| This function retrieves information from GL about free GPU memory that is: More...
|
|
TCollection_AsciiString | MemoryInfo () const |
| This function retrieves information from GL about GPU memory and contains more vendor-specific values than AvailableMemory(). More...
|
|
void | MemoryInfo (TColStd_IndexedDataMapOfStringString &theDict) const |
| This function retrieves information from GL about GPU memory. More...
|
|
void | DiagnosticInformation (TColStd_IndexedDataMapOfStringString &theDict, Graphic3d_DiagnosticInfo theFlags) const |
| Fill in the dictionary with OpenGL info. Should be called with bound context. More...
|
|
const Handle< OpenGl_Resource > & | GetResource (const TCollection_AsciiString &theKey) const |
| Access shared resource by its name. More...
|
|
template<typename TheHandleType > |
Standard_Boolean | GetResource (const TCollection_AsciiString &theKey, TheHandleType &theValue) const |
| Access shared resource by its name. More...
|
|
Standard_Boolean | ShareResource (const TCollection_AsciiString &theKey, const Handle< OpenGl_Resource > &theResource) |
| Register shared resource. Notice that after registration caller shouldn't release it by himself - it will be automatically released on context destruction. More...
|
|
void | ReleaseResource (const TCollection_AsciiString &theKey, const Standard_Boolean theToDelay=Standard_False) |
| Release shared resource. If there are more than one reference to this resource (also used by some other existing object) then call will be ignored. This means that current object itself should nullify handle before this call. Notice that this is unrecommended operation at all and should be used only in case of fat resources to release memory for other needs. More...
|
|
template<class T > |
void | DelayedRelease (Handle< T > &theResource) |
| Append resource to queue for delayed clean up. Resources in this queue will be released at next redraw call. More...
|
|
void | ReleaseDelayed () |
| Clean up the delayed release queue. More...
|
|
OpenGl_Clipping & | ChangeClipping () |
|
const OpenGl_Clipping & | Clipping () const |
|
const Handle< OpenGl_ShaderManager > & | ShaderManager () const |
|
Standard_Integer | TextureWrapClamp () const |
| Either GL_CLAMP_TO_EDGE (1.2+) or GL_CLAMP (1.1). More...
|
|
Standard_Integer | MaxDegreeOfAnisotropy () const |
|
Standard_Integer | MaxTextureSize () const |
|
Standard_Integer | MaxCombinedTextureUnits () const |
|
Standard_Integer | MaxMsaaSamples () const |
|
Standard_Integer | MaxDrawBuffers () const |
|
Standard_Integer | MaxColorAttachments () const |
|
Standard_Integer | MaxClipPlanes () const |
| Get maximum number of clip planes supported by OpenGl. This value is implementation dependent. At least 6 planes should be supported by OpenGl (see specs). More...
|
|
Standard_Boolean | HasRayTracing () const |
|
Standard_Boolean | HasRayTracingTextures () const |
|
Standard_Boolean | HasRayTracingAdaptiveSampling () const |
|
bool | ToUseVbo () const |
| Returns true if VBO is supported and permitted. More...
|
|
Standard_Boolean | IsGlNormalizeEnabled () const |
|
Standard_Boolean | SetGlNormalizeEnabled (Standard_Boolean isEnabled) |
| Sets GL_NORMALIZE enabled or disabled. More...
|
|
Standard_Integer | PolygonMode () const |
|
Standard_Integer | SetPolygonMode (const Standard_Integer theMode) |
| Sets polygon rasterization mode (glPolygonMode() function). More...
|
|
bool | IsPolygonHatchEnabled () const |
|
bool | SetPolygonHatchEnabled (const bool theIsEnabled) |
| Sets enabled state of polygon hatching rasterization without affecting currently selected hatching pattern. More...
|
|
Standard_Integer | PolygonHatchStyle () const |
|
Standard_Integer | SetPolygonHatchStyle (const Handle< Graphic3d_HatchStyle > &theStyle) |
| Sets polygon hatch pattern. Zero-index value is a default alias for solid filling. More...
|
|
void | ApplyModelWorldMatrix () |
| Applies matrix stored in ModelWorldState to OpenGl. More...
|
|
void | ApplyWorldViewMatrix () |
| Applies matrix stored in WorldViewState to OpenGl. More...
|
|
void | ApplyModelViewMatrix () |
| Applies combination of matrices stored in ModelWorldState and WorldViewState to OpenGl. More...
|
|
void | ApplyProjectionMatrix () |
| Applies matrix stored in ProjectionState to OpenGl. More...
|
|
const Handle< Message_Messenger > & | Messenger () const |
|
void | PushMessage (const unsigned int theSource, const unsigned int theType, const unsigned int theId, const unsigned int theSeverity, const TCollection_ExtendedString &theMessage) |
| Callback for GL_ARB_debug_output extension. More...
|
|
Standard_Boolean | ExcludeMessage (const unsigned int theSource, const unsigned int theId) |
| Adds a filter for messages with theId and theSource (GL_DEBUG_SOURCE_) More...
|
|
Standard_Boolean | IncludeMessage (const unsigned int theSource, const unsigned int theId) |
| Removes a filter for messages with theId and theSource (GL_DEBUG_SOURCE_) More...
|
|
Standard_Boolean | HasStereoBuffers () const |
|
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...
|
|
|
|
OpenGl_GlCore11 * | core11 |
| OpenGL 1.1 core functionality. More...
|
|
OpenGl_GlCore11Fwd * | core11fwd |
| OpenGL 1.1 without deprecated entry points. More...
|
|
OpenGl_GlCore15 * | core15 |
| OpenGL 1.5 core functionality. More...
|
|
OpenGl_GlCore15Fwd * | core15fwd |
| OpenGL 1.5 without deprecated entry points. More...
|
|
OpenGl_GlCore20 * | core20 |
| OpenGL 2.0 core functionality (includes 1.5) More...
|
|
OpenGl_GlCore20Fwd * | core20fwd |
| OpenGL 2.0 without deprecated entry points. More...
|
|
OpenGl_GlCore32 * | core32 |
| OpenGL 3.2 core profile. More...
|
|
OpenGl_GlCore32Back * | core32back |
| OpenGL 3.2 backward compatibility profile. More...
|
|
OpenGl_GlCore33 * | core33 |
| OpenGL 3.3 core profile. More...
|
|
OpenGl_GlCore33Back * | core33back |
| OpenGL 3.3 backward compatibility profile. More...
|
|
OpenGl_GlCore41 * | core41 |
| OpenGL 4.1 core profile. More...
|
|
OpenGl_GlCore41Back * | core41back |
| OpenGL 4.1 backward compatibility profile. More...
|
|
OpenGl_GlCore42 * | core42 |
| OpenGL 4.2 core profile. More...
|
|
OpenGl_GlCore42Back * | core42back |
| OpenGL 4.2 backward compatibility profile. More...
|
|
OpenGl_GlCore43 * | core43 |
| OpenGL 4.3 core profile. More...
|
|
OpenGl_GlCore43Back * | core43back |
| OpenGL 4.3 backward compatibility profile. More...
|
|
OpenGl_GlCore44 * | core44 |
| OpenGL 4.4 core profile. More...
|
|
OpenGl_GlCore44Back * | core44back |
| OpenGL 4.4 backward compatibility profile. More...
|
|
Handle< OpenGl_Caps > | caps |
| context options More...
|
|
|
Standard_Boolean | hasHighp |
| highp in GLSL ES fragment shader is supported More...
|
|
Standard_Boolean | hasUintIndex |
| GLuint for index buffer is supported (always available on desktop; on OpenGL ES - since 3.0 or as extension GL_OES_element_index_uint) More...
|
|
Standard_Boolean | hasTexRGBA8 |
| always available on desktop; on OpenGL ES - since 3.0 or as extension GL_OES_rgb8_rgba8 More...
|
|
OpenGl_FeatureFlag | hasDrawBuffers |
| Complex flag indicating support of multiple draw buffers (desktop OpenGL 2.0, OpenGL ES 3.0, GL_ARB_draw_buffers, GL_EXT_draw_buffers) More...
|
|
OpenGl_FeatureFlag | hasFloatBuffer |
| Complex flag indicating support of float color buffer format (desktop OpenGL 3.0, GL_ARB_color_buffer_float, GL_EXT_color_buffer_float) More...
|
|
OpenGl_FeatureFlag | hasHalfFloatBuffer |
| Complex flag indicating support of half-float color buffer format (desktop OpenGL 3.0, GL_ARB_color_buffer_float, GL_EXT_color_buffer_half_float) More...
|
|
OpenGl_FeatureFlag | hasSampleVariables |
| Complex flag indicating support of MSAA variables in GLSL shader (desktop OpenGL 4.0, GL_ARB_sample_shading) More...
|
|
Standard_Boolean | arbDrawBuffers |
| GL_ARB_draw_buffers. More...
|
|
Standard_Boolean | arbNPTW |
| GL_ARB_texture_non_power_of_two. More...
|
|
Standard_Boolean | arbTexRG |
| GL_ARB_texture_rg. More...
|
|
Standard_Boolean | arbTexFloat |
| GL_ARB_texture_float (on desktop OpenGL - since 3.0 or as extension GL_ARB_texture_float; on OpenGL ES - since 3.0) More...
|
|
OpenGl_ArbSamplerObject * | arbSamplerObject |
| GL_ARB_sampler_objects (on desktop OpenGL - since 3.3 or as extension GL_ARB_sampler_objects; on OpenGL ES - since 3.0) More...
|
|
OpenGl_ArbTexBindless * | arbTexBindless |
| GL_ARB_bindless_texture. More...
|
|
OpenGl_ArbTBO * | arbTBO |
| GL_ARB_texture_buffer_object. More...
|
|
Standard_Boolean | arbTboRGB32 |
| GL_ARB_texture_buffer_object_rgb32 (3-component TBO), in core since 4.0. More...
|
|
OpenGl_ArbIns * | arbIns |
| GL_ARB_draw_instanced. More...
|
|
OpenGl_ArbDbg * | arbDbg |
| GL_ARB_debug_output. More...
|
|
OpenGl_ArbFBO * | arbFBO |
| GL_ARB_framebuffer_object. More...
|
|
OpenGl_ArbFBOBlit * | arbFBOBlit |
| glBlitFramebuffer function, moved out from OpenGl_ArbFBO structure for compatibility with OpenGL ES 2.0 More...
|
|
Standard_Boolean | arbSampleShading |
| GL_ARB_sample_shading. More...
|
|
Standard_Boolean | extFragDepth |
| GL_EXT_frag_depth on OpenGL ES 2.0 (gl_FragDepthEXT built-in variable, before OpenGL ES 3.0) More...
|
|
Standard_Boolean | extDrawBuffers |
| GL_EXT_draw_buffers. More...
|
|
OpenGl_ExtGS * | extGS |
| GL_EXT_geometry_shader4. More...
|
|
Standard_Boolean | extBgra |
| GL_EXT_bgra or GL_EXT_texture_format_BGRA8888 on OpenGL ES. More...
|
|
Standard_Boolean | extAnis |
| GL_EXT_texture_filter_anisotropic. More...
|
|
Standard_Boolean | extPDS |
| GL_EXT_packed_depth_stencil. More...
|
|
Standard_Boolean | atiMem |
| GL_ATI_meminfo. More...
|
|
Standard_Boolean | nvxMem |
| GL_NVX_gpu_memory_info. More...
|
|
Standard_Boolean | oesSampleVariables |
| GL_OES_sample_variables. More...
|
|
|
static Standard_Boolean | CheckIsTransparent (const OpenGl_AspectFace *theAspect, const Handle< Graphic3d_PresentationAttributes > &theHighlight, Standard_ShortReal &theAlphaFront, Standard_ShortReal &theAlphaBack) |
| Checks if transparency is required for the given aspect and highlight style. More...
|
|
static Standard_Boolean | CheckIsTransparent (const OpenGl_AspectFace *theAspect, const Handle< Graphic3d_PresentationAttributes > &theHighlight) |
| Checks if transparency is required for the given aspect and highlight style. More...
|
|
const Standard_Integer * | Viewport () const |
| Return cached viewport definition (x, y, width, height). More...
|
|
void | ResizeViewport (const Standard_Integer theRect[4]) |
| Resize the viewport (alias for glViewport). More...
|
|
const Standard_Integer * | VirtualViewport () const |
| Return virtual viewport definition (x, y, width, height). More...
|
|
Standard_Integer | ReadBuffer () |
| Return active read buffer. More...
|
|
void | SetReadBuffer (const Standard_Integer theReadBuffer) |
| Switch read buffer, wrapper for ::glReadBuffer(). More...
|
|
Standard_Integer | DrawBuffer (const Standard_Integer theIndex=0) |
| Return active draw buffer attached to a render target referred by index (layout location). More...
|
|
void | SetDrawBuffer (const Standard_Integer theDrawBuffer) |
| Switch draw buffer, wrapper for ::glDrawBuffer(). More...
|
|
void | SetDrawBuffers (const Standard_Integer theNb, const Standard_Integer *theDrawBuffers) |
| Switch draw buffer, wrapper for ::glDrawBuffers (GLsizei, const GLenum*). More...
|
|
void | SetReadDrawBuffer (const Standard_Integer theBuffer) |
| Switch read/draw buffers. More...
|
|
bool | ToCullBackFaces () const |
| Return back face culling state. More...
|
|
void | SetCullBackFaces (bool theToEnable) |
| Enable or disable back face culling (glEnable (GL_CULL_FACE)). More...
|
|
void | FetchState () |
| Fetch OpenGl context state. This class tracks value of several OpenGl state variables. Consulting the cached values is quicker than doing the same via OpenGl API. Call this method if any of the controlled OpenGl state variables has a possibility of being out-of-date. More...
|
|
const Handle< OpenGl_TextureSet > & | ActiveTextures () const |
|
Handle< OpenGl_TextureSet > | BindTextures (const Handle< OpenGl_TextureSet > &theTextures) |
| Bind specified texture set to current context, or unbind previous one when NULL specified. More...
|
|
const Handle< OpenGl_ShaderProgram > & | ActiveProgram () const |
|
Standard_Boolean | BindProgram (const Handle< OpenGl_ShaderProgram > &theProgram) |
| Bind specified program to current context, or unbind previous one when NULL specified. More...
|
|
void | SetShadingMaterial (const OpenGl_AspectFace *theAspect, const Handle< Graphic3d_PresentationAttributes > &theHighlight) |
| Setup current shading material. More...
|
|
void | SetColor4fv (const OpenGl_Vec4 &theColor) |
| Setup current color. More...
|
|
void | SetTypeOfLine (const Aspect_TypeOfLine theType, const Standard_ShortReal theFactor=1.0f) |
| Setup type of line. More...
|
|
void | SetLineWidth (const Standard_ShortReal theWidth) |
| Setup width of line. More...
|
|
void | SetPointSize (const Standard_ShortReal theSize) |
| Setup point size. More...
|
|
void | SetPointSpriteOrigin () |
| Setup point sprite origin using GL_POINT_SPRITE_COORD_ORIGIN state: More...
|
|
void | SetTextureMatrix (const Handle< Graphic3d_TextureParams > &theParams) |
| Setup texture matrix to active GLSL program or to FFP global state using glMatrixMode (GL_TEXTURE). More...
|
|
void | BindDefaultVao () |
| Bind default Vertex Array Object. More...
|
|
const Handle< OpenGl_FrameBuffer > & | DefaultFrameBuffer () const |
| Default Frame Buffer Object. More...
|
|
Handle< OpenGl_FrameBuffer > | SetDefaultFrameBuffer (const Handle< OpenGl_FrameBuffer > &theFbo) |
| Setup new Default Frame Buffer Object and return previously set. This call doesn't change Active FBO! More...
|
|
Standard_Boolean | IsDebugContext () const |
| Return debug context initialization state. More...
|
|
void | EnableFeatures () const |
| Checks if transparency is required for the given aspect and highlight style. More...
|
|
void | DisableFeatures () const |
| Checks if transparency is required for the given aspect and highlight style. More...
|
|
unsigned int | Resolution () const |
| Return resolution for rendering text. More...
|
|
Standard_ShortReal | ResolutionRatio () const |
| Resolution scale factor (rendered resolution to standard resolution). This scaling factor for parameters like text size to be properly displayed on device (screen / printer). More...
|
|
Standard_ShortReal | RenderScale () const |
| Rendering scale factor (rendering viewport height to real window buffer height). More...
|
|
Standard_Boolean | HasRenderScale () const |
| Return TRUE if rendering scale factor is not 1. More...
|
|
Standard_ShortReal | RenderScaleInv () const |
| Rendering scale factor (inverted value). More...
|
|
void | SetResolution (unsigned int theResolution, Standard_ShortReal theRatio, Standard_ShortReal theScale) |
| Set resolution ratio. Note that this method rounds to nearest integer. More...
|
|
void | SetResolutionRatio (const Standard_ShortReal theRatio) |
| Set resolution ratio. Note that this method rounds to nearest integer. More...
|
|
This class generalize access to the GL context and available extensions.
Functions related to specific OpenGL version or extension are grouped into structures which can be accessed as fields of this class. The most simple way to check that required functionality is available - is NULL check for the group:
if (myContext->core20 != NULL)
{
myGlProgram = myContext->core20->glCreateProgram();
.. do more stuff ..
}
else
{
.. compatibility with outdated configurations ..
}
Current implementation provide access to OpenGL core functionality up to 4.4 version (core12, core13, core14, core15, fields core20) as well as several extensions (arbTBO, arbFBO, etc.).
OpenGL context might be initialized in Core Profile. In this case deprecated functionality become unavailable. To make code easily adaptable to wide range of OpenGL versions, function sets related to each version has two kinds of suffixes:
- "back" for version 3.2+. Represents function set for Backward-Compatible Profile. Function sets without this suffix represents core profile.
- "fwd" for version 3.0-. Represents non-deprecated function set of earlier OpenGL versions, which are still available within OpenGL 3.2 Core Profile. Function sets without this suffix represents complete list of functions related to specific OpenGL version.
To select which core** function set should be used in specific case:
- Determine the minimal OpenGL version required for implemented functionality and use it to access all functions. For example, if algorithm requires OpenGL 2.1+, it is better to write core20fwd->glEnable() rather than core11fwd->glEnable() for uniformity.
- If functionality will work within Core Profile, use function sets with appropriate suffix.
- Validate minimal requirements at initialization/creation time and omit checks within code where algorithm should be already initialized. Properly escape code incompatible with Core Profile. The simplest way to check Core Profile is "if (core11 == NULL)".
Simplified extensions classification:
- prefixed with NV, AMD, ATI are vendor-specific (however may be provided by other vendors in some cases);
- prefixed with EXT are accepted by 2+ vendors;
- prefixed with ARB are accepted by Architecture Review Board and are candidates for inclusion into GL core functionality. Some functionality can be represented in several extensions simultaneously. In this case developer should be careful because different specification may differ in aspects (like enumeration values and error-handling).
Notice that some systems provide mechanisms to simultaneously incorporate with GL contexts with different capabilities. For this reason OpenGl_Context should be initialized and used for each GL context independently.