Re: [GtkGLExt] GdkGLPixmap troubles




    Hi, just to note a few caveats when dealing with GL contexts.

    First, before performing any context reference operations, the GL widget should be +realized+ to manipulate any references inside.  I have included some source code that I use in one of my apps to enlighten. with typecasts to make it easier to associate types:

    // Get OpenGL rendering context.
    gtk_widget_realize ((GtkWidget *) yourGLCapableWidget);
    (GdkGLContext *) theSharedGlContext = gtk_widget_get_gl_context ((GtkWidget *) yourGLCapableWidget);
    // Initialise the other GL areas with the same shared context.
    (GtkWidget *) anotherGLWidget = GTK_WIDGET (gtk_builder_get_object (yourGTKBuilderXml, "GLwidget2"));
    // Add OpenGL-capability to the other widget, sharing the same context.
    gtk_widget_set_gl_capability ((GtkWidget *) anotherGLWidget, glConfig, (GdkGLContext *) theSharedGlContext, TRUE, GDK_GL_RGBA_TYPE);

... etc

    Note that 'gtk_widget_realize' is essential for the following functions to reference data within.

    Another caveat is that some drivers align texture data, depending on hardware - after the storage->framebuffer phase the alignment can vary if the hardware is not capable of non-powers-of-two textures.  You may find that the driver will texture-split any non-power-of-two rectangles.  The solution to this is to make sure that if the driver/hardware does not support non-power-of-two textures, to use the stride value in retrieving data back from the framebuffer.

Regards,
    Jose.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]