Gdk::GLContext Class Reference

A Gdk::GLContext is an OpenGL context abstraction. More...

`#include <gdkmm/glcontext.h>`

Inheritance diagram for Gdk::GLContext:
[legend]

## Public Member Functions

| GLContext (GLContext && src) noexcept
GLContext & | operator= (GLContext && src) noexcept
| ~GLContext () noexcept override
GdkGLContext * | gobj ()
| Provides access to the underlying C GObject.
const GdkGLContext * | gobj () const
| Provides access to the underlying C GObject.
GdkGLContext * | gobj_copy ()
| Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
Glib::RefPtr< Display > | get_display ()
| Retrieves the Gdk::Display the context is created for.
Glib::RefPtr< const Display > | get_display () const
| Retrieves the Gdk::Display the context is created for.
Glib::RefPtr< Window > | get_window ()
| Retrieves the Gdk::Window used by the context.
Glib::RefPtr< const Window > | get_window () const
| Retrieves the Gdk::Window used by the context.
Glib::RefPtr< GLContext > | get_shared_context ()
| Retrieves the Gdk::GLContext that this context share data with.
Glib::RefPtr< const GLContext > | get_shared_context () const
| Retrieves the Gdk::GLContext that this context share data with.
void | get_version (int & major, int & minor) const
| Retrieves the OpenGL version of the context.
bool | is_legacy () const
| Whether the Gdk::GLContext is in legacy mode or not.
void | get_required_version (int & major, int & minor) const
| Retrieves the major and minor version requested by calling gdk_gl_context_set_required_version().
void | set_required_version (int major, int minor)
| Sets the major and minor version of OpenGL to request.
bool | get_debug_enabled () const
| Retrieves the value set using gdk_gl_context_set_debug_enabled().
void | set_debug_enabled (bool enabled=true)
| Sets whether the Gdk::GLContext should perform extra validations and run time checking.
bool | get_forward_compatible () const
| Retrieves the value set using gdk_gl_context_set_forward_compatible().
void | set_forward_compatible (bool compatible=true)
| Sets whether the Gdk::GLContext should be forward compatible.
void | set_use_es (bool use_es=true)
| Requests that GDK create an OpenGL ES context instead of an OpenGL one, if the platform and windowing system allows it.
void | unset_use_es ()
| Undo a previous call to set_use_es().
bool | get_use_es () const
| Checks whether the context is using an OpenGL or OpenGL ES profile.
bool | realize ()
| Realizes the given Gdk::GLContext.
void | make_current ()
| Makes the context the current one.
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< Display > > | property_display () const
| The Gdk::Display used to create the Gdk::GLContext.
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< GLContext > > | property_shared_context () const
| The Gdk::GLContext that this context is sharing data with, or `nullptr`
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< Window > > | property_window () const
| The Gdk::Window the gl context is bound to.

## Static Public Member Functions

static GType | get_type ()
| Get the GType for this class, for use with the underlying GObject type system.
static Glib::RefPtr< GLContext > | get_current ()
| Retrieves the current Gdk::GLContext.
static void | clear_current ()
| Clears the current Gdk::GLContext.

## Protected Member Functions

| GLContext ()

## Related Symbols

(Note that these are not member symbols.)
Glib::RefPtr< Gdk::GLContext > | wrap (GdkGLContext * object, bool take_copy=false)
| A Glib::wrap() method for this object.

## Detailed Description

A Gdk::GLContext is an OpenGL context abstraction.

It's a low-level object, used to implement high-level objects such as Gtk::GLArea on the GTK+ level.

Since gtkmm 3.18:

## Constructor & Destructor Documentation

## GLContext() [1/2]

Gdk::GLContext::GLContext | ( | GLContext && | src | ) |

noexcept

## ~GLContext()

Gdk::GLContext::~GLContext | ( |  | ) |

override noexcept

## GLContext() [2/2]

Gdk::GLContext::GLContext | ( |  | ) |

protected

## Member Function Documentation

## clear_current()

static void Gdk::GLContext::clear_current | ( |  | ) |

static

Clears the current Gdk::GLContext.

Any OpenGL call after this function returns will be ignored until gdk_gl_context_make_current() is called.

Since gtkmm 3.18:

## get_current()

static Glib::RefPtr< GLContext > Gdk::GLContext::get_current | ( |  | ) |

static

Retrieves the current Gdk::GLContext.

Since gtkmm 3.18:

Returns
  The current Gdk::GLContext, or `nullptr`.

## get_debug_enabled()

bool Gdk::GLContext::get_debug_enabled | ( |  | ) | const

Retrieves the value set using gdk_gl_context_set_debug_enabled().

Since gtkmm 3.18:

Returns
  `true` if debugging is enabled.

## get_display() [1/2]

Glib::RefPtr< Display > Gdk::GLContext::get_display | ( |  | ) |

Retrieves the Gdk::Display the context is created for.

Since gtkmm 3.18:

Returns
  A Gdk::Display or `nullptr`.

## get_display() [2/2]

Glib::RefPtr< const Display > Gdk::GLContext::get_display | ( |  | ) | const

Retrieves the Gdk::Display the context is created for.

Since gtkmm 3.18:

Returns
  A Gdk::Display or `nullptr`.

## get_forward_compatible()

bool Gdk::GLContext::get_forward_compatible | ( |  | ) | const

Retrieves the value set using gdk_gl_context_set_forward_compatible().

Since gtkmm 3.18:

Returns
  `true` if the context should be forward compatible.

## get_required_version()

void Gdk::GLContext::get_required_version | ( | int & | major,
|  | int & | minor
| ) |  | const

Retrieves the major and minor version requested by calling gdk_gl_context_set_required_version().

Since gtkmm 3.18:

Parameters

  major | Return location for the major version to request.
  minor | Return location for the minor version to request.

## get_shared_context() [1/2]

Glib::RefPtr< GLContext > Gdk::GLContext::get_shared_context | ( |  | ) |

Retrieves the Gdk::GLContext that this context share data with.

Since gtkmm 3.18:

Returns
  A Gdk::GLContext or `nullptr`.

## get_shared_context() [2/2]

Glib::RefPtr< const GLContext > Gdk::GLContext::get_shared_context | ( |  | ) | const

Retrieves the Gdk::GLContext that this context share data with.

Since gtkmm 3.18:

Returns
  A Gdk::GLContext or `nullptr`.

## get_type()

static GType Gdk::GLContext::get_type | ( |  | ) |

static

Get the GType for this class, for use with the underlying GObject type system.

## get_use_es()

bool Gdk::GLContext::get_use_es | ( |  | ) | const

Checks whether the context is using an OpenGL or OpenGL ES profile.

Since gtkmm 3.22:

Returns
  `true` if the Gdk::GLContext is using an OpenGL ES profile.

## get_version()

void Gdk::GLContext::get_version | ( | int & | major,
|  | int & | minor
| ) |  | const

Retrieves the OpenGL version of the context.

The context must be realized prior to calling this function.

Since gtkmm 3.18:

Parameters

  major | Return location for the major version.
  minor | Return location for the minor version.

## get_window() [1/2]

Glib::RefPtr< Window > Gdk::GLContext::get_window | ( |  | ) |

Retrieves the Gdk::Window used by the context.

Since gtkmm 3.18:

Returns
  A Gdk::Window or `nullptr`.

## get_window() [2/2]

Glib::RefPtr< const Window > Gdk::GLContext::get_window | ( |  | ) | const

Retrieves the Gdk::Window used by the context.

Since gtkmm 3.18:

Returns
  A Gdk::Window or `nullptr`.

## gobj() [1/2]

GdkGLContext * Gdk::GLContext::gobj | ( |  | ) |

inline

Provides access to the underlying C GObject.

## gobj() [2/2]

const GdkGLContext * Gdk::GLContext::gobj | ( |  | ) | const

inline

Provides access to the underlying C GObject.

## gobj_copy()

GdkGLContext * Gdk::GLContext::gobj_copy | ( |  | ) |

Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.

## is_legacy()

bool Gdk::GLContext::is_legacy | ( |  | ) | const

Whether the Gdk::GLContext is in legacy mode or not.

The Gdk::GLContext must be realized before calling this function.

When realizing a GL context, GDK will try to use the OpenGL 3.2 core profile; this profile removes all the OpenGL API that was deprecated prior to the 3.2 version of the specification. If the realization is successful, this function will return `false`.

If the underlying OpenGL implementation does not support core profiles, GDK will fall back to a pre-3.2 compatibility profile, and this function will return `true`.

You can use the value returned by this function to decide which kind of OpenGL API to use, or whether to do extension discovery, or what kind of shader programs to load.

Since gtkmm 3.20:

Returns
  `true` if the GL context is in legacy mode.

## make_current()

void Gdk::GLContext::make_current | ( |  | ) |

Makes the context the current one.

Since gtkmm 3.18:

## operator=()

GLContext & Gdk::GLContext::operator= | ( | GLContext && | src | ) |

noexcept

## property_display()

Glib::PropertyProxy_ReadOnly< Glib::RefPtr< Display > > Gdk::GLContext::property_display | ( |  | ) | const

The Gdk::Display used to create the Gdk::GLContext.

Since gtkmm 3.18:

Returns
  A PropertyProxy_ReadOnly that allows you to get the value of the property, or receive notification when the value of the property changes.

## property_shared_context()

Glib::PropertyProxy_ReadOnly< Glib::RefPtr< GLContext > > Gdk::GLContext::property_shared_context | ( |  | ) | const

The Gdk::GLContext that this context is sharing data with, or `nullptr`

Since gtkmm 3.18:

Returns
  A PropertyProxy_ReadOnly that allows you to get the value of the property, or receive notification when the value of the property changes.

## property_window()

Glib::PropertyProxy_ReadOnly< Glib::RefPtr< Window > > Gdk::GLContext::property_window | ( |  | ) | const

The Gdk::Window the gl context is bound to.

Since gtkmm 3.18:

Returns
  A PropertyProxy_ReadOnly that allows you to get the value of the property, or receive notification when the value of the property changes.

## realize()

bool Gdk::GLContext::realize | ( |  | ) |

Realizes the given Gdk::GLContext.

It is safe to call this function on a realized Gdk::GLContext.

Since gtkmm 3.18:

Returns
  `true` if the context is realized.

Exceptions

  Glib::Error |

## set_debug_enabled()

void Gdk::GLContext::set_debug_enabled | ( | bool | enabled = `true` | ) |

Sets whether the Gdk::GLContext should perform extra validations and run time checking.

This is useful during development, but has additional overhead.

The Gdk::GLContext must not be realized or made current prior to calling this function.

Since gtkmm 3.18:

Parameters

  enabled | Whether to enable debugging in the context.

## set_forward_compatible()

void Gdk::GLContext::set_forward_compatible | ( | bool | compatible = `true` | ) |

Sets whether the Gdk::GLContext should be forward compatible.

Forward compatibile contexts must not support OpenGL functionality that has been marked as deprecated in the requested version; non-forward compatible contexts, on the other hand, must support both deprecated and non deprecated functionality.

The Gdk::GLContext must not be realized or made current prior to calling this function.

Since gtkmm 3.18:

Parameters

  compatible | Whether the context should be forward compatible.

## set_required_version()

void Gdk::GLContext::set_required_version | ( | int | major,
|  | int | minor
| ) |  |

Sets the major and minor version of OpenGL to request.

Setting major and minor to zero will use the default values.

The Gdk::GLContext must not be realized or made current prior to calling this function.

Since gtkmm 3.18:

Parameters

  major | The major version to request.
  minor | The minor version to request.

## set_use_es()

void Gdk::GLContext::set_use_es | ( | bool | use_es = `true` | ) |

Requests that GDK create an OpenGL ES context instead of an OpenGL one, if the platform and windowing system allows it.

The GLContext must not have been realized.

By default, GDK will attempt to automatically detect whether the underlying GL implementation is OpenGL or OpenGL ES once the GLContext is realized.

You should check the return value of get_use_es() after calling realize() to decide whether to use the OpenGL or OpenGL ES API, extensions, or shaders.

Since gtkmm 3.22:

Parameters

  use_es | Whether the context should use OpenGL ES instead of OpenGL.

## unset_use_es()

void Gdk::GLContext::unset_use_es | ( |  | ) |

Undo a previous call to set_use_es().

GDK will attempt to automatically detect whether the underlying GL implementation is OpenGL or OpenGL ES once the GLContext is realized.

Since gtkmm 3.24:

## Friends And Related Symbol Documentation

## wrap()

Glib::RefPtr< Gdk::GLContext > wrap | ( | GdkGLContext * | object,
|  | bool | take_copy = `false`
| ) |  |

related

A Glib::wrap() method for this object.

Parameters

  object | The C instance.
  take_copy | False if the result should take ownership of the C instance. True if it should take a new copy or ref.

Returns
  A C++ instance that wraps this C instance.