GLContext

#GdkGLContext is an object representing the platform-specific OpenGL drawing context.

#GdkGLContexts are created for a #GdkWindow using gdk.window.Window.createGlContext, and the context will match the #GdkVisual of the window.

A #GdkGLContext is not tied to any particular normal framebuffer. For instance, it cannot draw to the #GdkWindow 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.global.cairoDrawFromGl 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, 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 #GdkWindow, which you typically get during the realize call of a widget.

A #GdkGLContext is not realized until either gdk.glcontext.GLContext.makeCurrent, or until it is realized using gdk.glcontext.GLContext.realize. 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.window.Window.createGlContext by calling gdk.glcontext.GLContext.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.glcontext.GLContext.getCurrent; you can also unset any #GdkGLContext that is currently set by calling gdk.glcontext.GLContext.clearCurrent.

Constructors

this
this(void* ptr, Flag!"Take" take)

Members

Functions

getDebugEnabled
bool getDebugEnabled()

Retrieves the value set using gdk.glcontext.GLContext.setDebugEnabled.

getDisplay
gdk.display.Display getDisplay()

Retrieves the #GdkDisplay the context is created for

getForwardCompatible
bool getForwardCompatible()

Retrieves the value set using gdk.glcontext.GLContext.setForwardCompatible.

getRequiredVersion
void getRequiredVersion(int major, int minor)

Retrieves the major and minor version requested by calling gdk.glcontext.GLContext.setRequiredVersion.

getSharedContext
gdk.glcontext.GLContext getSharedContext()

Retrieves the #GdkGLContext that this context share data with.

getUseEs
bool getUseEs()

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

getVersion
void getVersion(int major, int minor)

Retrieves the OpenGL version of the context.

getWindow
gdk.window.Window getWindow()

Retrieves the #GdkWindow used by the context.

isLegacy
bool isLegacy()

Whether the #GdkGLContext is in legacy mode or not.

makeCurrent
void makeCurrent()

Makes the context the current one.

realize
bool realize()

Realizes the given #GdkGLContext.

self
GLContext self()

Returns this, for use in with statements.

setDebugEnabled
void setDebugEnabled(bool enabled)

Sets whether the #GdkGLContext should perform extra validations and run time checking. This is useful during development, but has additional overhead.

setForwardCompatible
void setForwardCompatible(bool compatible)

Sets whether the #GdkGLContext should be forward compatible.

setRequiredVersion
void setRequiredVersion(int major, int minor)

Sets the major and minor version of OpenGL to request.

setUseEs
void setUseEs(int useEs)

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

Properties

_gType
GType _gType [@property getter]
display
gdk.display.Display display [@property getter]

Get display property.

sharedContext
gdk.glcontext.GLContext sharedContext [@property getter]

Get sharedContext property.

window
gdk.window.Window window [@property getter]

Get window property.

Static functions

_getGType
GType _getGType()
builder
GLContextGidBuilder builder()

Get builder for gdk.glcontext.GLContext

clearCurrent
void clearCurrent()

Clears the current #GdkGLContext.

getCurrent
gdk.glcontext.GLContext getCurrent()

Retrieves the current #GdkGLContext.

Inherited Members

From ObjectWrap

_setGObject
void _setGObject(void* cObj, Flag!"Take" take)

Set the GObject of a D ObjectWrap wrapper.

_cPtr
void* _cPtr(Flag!"Dup" dup)

Get a pointer to the underlying C object.

_ref
void* _ref(void* gObj)

Calls g_object_ref() on a GObject.

_unref
_unref(void* gObj)

Calls g_object_unref() on a GObject.

_getGType
GType _getGType()

Get the GType of an object.

_gType
GType _gType [@property getter]

GObject GType property.

self
ObjectWrap self()

Convenience method to return this cast to a type. For use in D with statements.

_getDObject
T _getDObject(void* cptr, Flag!"Take" take)

Template to get the D object from a C GObject and cast it to the given D object type.

connectSignalClosure
gulong connectSignalClosure(string signalDetail, DClosure closure, Flag!"After" after)

Connect a D closure to an object signal.

setProperty
void setProperty(string propertyName, T val)

Template for setting a GObject property.

getProperty
T getProperty(string propertyName)

Template for getting a GObject property.

compatControl
size_t compatControl(size_t what, void* data)
bindProperty
gobject.binding.Binding bindProperty(string sourceProperty, gobject.object.ObjectWrap target, string targetProperty, gobject.types.BindingFlags flags)

Creates a binding between source_property on source and target_property on target.

bindPropertyFull
gobject.binding.Binding bindPropertyFull(string sourceProperty, gobject.object.ObjectWrap target, string targetProperty, gobject.types.BindingFlags flags, gobject.closure.Closure transformTo, gobject.closure.Closure transformFrom)

Creates a binding between source_property on source and target_property on target, allowing you to set the transformation functions to be used by the binding.

forceFloating
void forceFloating()

This function is intended for #GObject implementations to re-enforce a floating[floating-ref] object reference. Doing this is seldom required: all #GInitiallyUnowneds are created with a floating reference which usually just needs to be sunken by calling gobject.object.ObjectWrap.refSink.

freezeNotify
void freezeNotify()

Increases the freeze count on object. If the freeze count is non-zero, the emission of "notify" signals on object is stopped. The signals are queued until the freeze count is decreased to zero. Duplicate notifications are squashed so that at most one #GObject::notify signal is emitted for each property modified while the object is frozen.

getData
void* getData(string key)

Gets a named field from the objects table of associations (see gobject.object.ObjectWrap.setData).

getProperty
void getProperty(string propertyName, gobject.value.Value value)

Gets a property of an object.

getQdata
void* getQdata(glib.types.Quark quark)

This function gets back user data pointers stored via gobject.object.ObjectWrap.setQdata.

getv
void getv(string[] names, gobject.value.Value[] values)

Gets n_properties properties for an object. Obtained properties will be set to values. All properties must be valid. Warnings will be emitted and undefined behaviour may result if invalid properties are passed in.

isFloating
bool isFloating()

Checks whether object has a floating[floating-ref] reference.

notify
void notify(string propertyName)

Emits a "notify" signal for the property property_name on object.

notifyByPspec
void notifyByPspec(gobject.param_spec.ParamSpec pspec)

Emits a "notify" signal for the property specified by pspec on object.

refSink
gobject.object.ObjectWrap refSink()

Increase the reference count of object, and possibly remove the floating[floating-ref] reference, if object has a floating reference.

runDispose
void runDispose()

Releases all references to other objects. This can be used to break reference cycles.

setData
void setData(string key, void* data)

Each object carries around a table of associations from strings to pointers. This function lets you set an association.

setProperty
void setProperty(string propertyName, gobject.value.Value value)

Sets a property on an object.

stealData
void* stealData(string key)

Remove a specified datum from the object's data associations, without invoking the association's destroy handler.

stealQdata
void* stealQdata(glib.types.Quark quark)

This function gets back user data pointers stored via gobject.object.ObjectWrap.setQdata and removes the data from object without invoking its destroy() function (if any was set). Usually, calling this function is only required to update user data pointers with a destroy notifier, for example:

thawNotify
void thawNotify()

Reverts the effect of a previous call to gobject.object.ObjectWrap.freezeNotify. The freeze count is decreased on object and when it reaches zero, queued "notify" signals are emitted.

watchClosure
void watchClosure(gobject.closure.Closure closure)

This function essentially limits the life time of the closure to the life time of the object. That is, when the object is finalized, the closure is invalidated by calling gobject.closure.Closure.invalidate on it, in order to prevent invocations of the closure with a finalized (nonexisting) object. Also, gobject.object.ObjectWrap.ref_ and gobject.object.ObjectWrap.unref are added as marshal guards to the closure, to ensure that an extra reference count is held on object during invocation of the closure. Usually, this function will be called on closures that use this object as closure data.

connectNotify
gulong connectNotify(string detail, T callback, Flag!"After" after)

Connect to Notify signal.