Getting GtkD working with OpenGL

Mike Wey via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Oct 4 10:00:34 PDT 2016


On 10/03/2016 11:46 PM, Chalix wrote:
> On Monday, 3 October 2016 at 18:00:53 UTC, Mike Wey wrote:
>> The signal functions can be found in the gobject.Signals module.
>>
>> But you should use the GLArea.addOnCreateContext / addOnRender /
>> addOnResize functions to attach a D delegate to the signal.
>> You will still need to link with the OpenGL libraries or use someting
>> like Derelict.
>
> Hi Mike, thanks for your fast answer again!
>
> I just read about this delegates and I liked the concept. I experimented
> with it for a while and read a bit on the Internet, but I still don't
> get it working...
>
> My minimal example looks like this:
>
> import gtk.Main;
> import gtk.MainWindow;
> import gtk.GLArea;
> import glgdk.GLContext;
>
> void main(string[] args)
> {
>     bool render(GLContext context, GLArea area)
>     {
>         return true;
>     }
>
>     Main.init(args);
>     MainWindow win = new MainWindow("Hello World");
>     GLArea area = new GLArea();
>
>     area.addOnRender(&render,cast(GConnectFlags)0);
>
>     win.add(area);
>     win.showAll();
>     Main.run();
> }
>
> If I compile it, I get this error:
>
> $ dmd main.d -I/usr/local/include/d/gtkd-3 -L-lgtkd-3
> main.d(27):
> Error: function gtk.GLArea.GLArea.addOnRender
> (bool delegate(GLContext, GLArea) dlg, GConnectFlags connectFlags =
> cast(GConnectFlags)0)
> is not callable using argument types
> (bool delegate(GLContext context, GLArea area), GConnectFlags)
>
> I cant see, what I am doing wrong... Someone else sees the error?
> Tomorrow I try to subclass the GLArea, if this works I am happy :) But
> I'd like to use the handler stuff.
>
> Ah, and I know now, that I have to link against the GL and GLU library,
> but which module do I have to import, to make the functions visible for
> the compiler? Or do I need another binding therefore?

Replace "import glgdk.GLContext;" with "import gdk.GLContext;"

The error is a bit confusing without the fully qualified names of the 
types, but GLArea depends on the OpenGL functionality build in to GDK, 
and doesn't depend on gtkglext.

-- 
Mike Wey


More information about the Digitalmars-d-learn mailing list