Class
GdkGLContext
Description [src]
abstract class Gdk.GLContext : Gdk.DrawContext
{
/* No available fields */
}
GdkGLContext
is an object representing a platform-specific
OpenGL draw context.
GdkGLContext
s are created for a surface using
gdk_surface_create_gl_context()
, and the context will match
the characteristics of the surface.
A GdkGLContext
is not tied to any particular normal framebuffer.
For instance, it cannot draw to the surface back buffer. The GDK
repaint system is in full control of the painting to that. Instead,
you can create render buffers or textures and use gdk_cairo_draw_from_gl()
in the draw function of your widget to draw them. Then GDK will handle
the integration of your rendering with that of other widgets.
Support for GdkGLContext
is platform-specific and context creation
can fail, returning NULL
context.
A GdkGLContext
has to be made “current” in order to start using
it, otherwise any OpenGL call will be ignored.
Creating a new OpenGL context
In order to create a new GdkGLContext
instance you need a GdkSurface
,
which you typically get during the realize call of a widget.
A GdkGLContext
is not realized until either gdk_gl_context_make_current()
or gdk_gl_context_realize()
is called. It is possible to specify
details of the GL context like the OpenGL version to be used, or whether
the GL context should have extra state validation enabled after calling
gdk_surface_create_gl_context()
by calling gdk_gl_context_realize()
.
If the realization fails you have the option to change the settings of
the GdkGLContext
and try again.
Using a GdkGLContext
You will need to make the GdkGLContext
the current context before issuing
OpenGL calls; the system sends OpenGL commands to whichever context is current.
It is possible to have multiple contexts, so you always need to ensure that
the one which you want to draw with is the current one before issuing commands:
gdk_gl_context_make_current (context);
You can now perform your drawing using OpenGL commands.
You can check which GdkGLContext
is the current one by using
gdk_gl_context_get_current()
; you can also unset any GdkGLContext
that is currently set by calling gdk_gl_context_clear_current()
.
Instance methods
gdk_gl_context_get_allowed_apis
Gets the allowed APIs set via gdk_gl_context_set_allowed_apis().
since: 4.6
gdk_gl_context_get_debug_enabled
Retrieves whether the context is doing extra validations and runtime checking.
gdk_gl_context_get_required_version
Retrieves required OpenGL version set as a requirement for the context
realization. It will not change even if a greater OpenGL version is supported
and used after the context
is realized. See
gdk_gl_context_get_version()
for the real version in use.
gdk_gl_context_get_shared_context
Used to retrieves the GdkGLContext
that this context
share data with.
deprecated: 4.4
gdk_gl_context_set_allowed_apis
Sets the allowed APIs. When gdk_gl_context_realize()
is called, only the
allowed APIs will be tried. If you set this to 0, realizing will always fail.
since: 4.6
gdk_gl_context_set_debug_enabled
Sets whether the GdkGLContext
should perform extra validations and
runtime checking.
Methods inherited from GdkDrawContext (6)
gdk_draw_context_begin_frame
Indicates that you are beginning the process of redrawing region
on the context
‘s surface.
deprecated: 4.16
gdk_draw_context_end_frame
Ends a drawing operation started with gdk_draw_context_begin_frame().
deprecated: 4.16
gdk_draw_context_get_display
Retrieves the GdkDisplay
the context
is created for.
gdk_draw_context_get_frame_region
Retrieves the region that is currently being repainted.
deprecated: 4.16
gdk_draw_context_get_surface
Retrieves the surface that context
is bound to.
gdk_draw_context_is_in_frame
Returns TRUE
if context
is in the process of drawing to its surface.
deprecated: 4.16
Properties
Properties inherited from GdkDrawContext (2)
Gdk.DrawContext:display
The GdkDisplay
used to create the GdkDrawContext
.
Gdk.DrawContext:surface
The GdkSurface
the context is bound to.
Signals
Signals inherited from GObject (1)
GObject::notify
The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.