[Gtk2hs-users] [Haskell-cafe] Anyone know why this always returns
invalid texture objects?
Jefferson Heard
jefferson.r.heard at gmail.com
Thu Nov 6 21:57:59 EST 2008
Ah, that's good to know. I thought initGL would create the context.
Sorry to be unclear in the code I posted, but part of createGUIObject
is a glDrawingAreaNew. It creates a drawing area, which is then
stored in a giant UserInterface record.
data UserInterface = MainWindow {
...
, drawing_canvas :: GLDrawingArea
}
createGUIObject = do
...
config <- glConfigNew ...
canvas <- glDrawingAreaNew config
return $ MainWindow { ... drawing_canvas = canvas .. }
It seems that won't create the context? do I have to show the window
first, or can I just do...
withGLDrawingArea $ glGenObjects n
?
Thanks!
-- Jeff
On Thu, Nov 6, 2008 at 9:15 PM, Bertram Felgenhauer
<bertram.felgenhauer at googlemail.com> wrote:
> [CCing gtk2hs-users]
>
> Jefferson Heard wrote:
>> import Graphics.UI.Gtk
>> import Graphics.UI.Gtk.Glade
>> import Graphics.UI.Gtk.OpenGL
>> import qualified Graphics.Rendering.OpenGL as GL
>> import Graphics.Rendering.OpenGL (($=))
>>
>> main = do
>> initGUI
>> initGL
>
> "initGL" may be slightly misleading - it initialises the
> gtkglext gtk+ extension. It does not create a GL context.
>
>> GL.shadeModel $= GL.Flat
>> GL.depthFunc $= Just GL.Less
>> (window1,gui,dlgs) <- constructGUIObject
>> (sX, sY) <- liftM (mapPair fromIntegral) . widgetGetSize .
>> drawing_canvas $ gui -- get the canvas size for determining the part
>> of the widget to repaint
>> pb <- pixbufNew ColorspaceRgb False 8 (round pbWidth) (round pbHeight)
>> pixbufFill pb 0 0 0 255
>> pxbufs <- initSubpixbufs pb texRows texCols
>> textures <- GL.genObjectNames (texRows*texCols)
>> print textures
>
> There is no active GL context at this point. GtkGLExt creates
> new GL contexts for GL enabled widgets when they're realized -
> I think. I'm a bit fuzzy about the exact life time of the GL
> context. [1]
>
> After the context was created, you have to activate it before
> doing any GL operations.
>
> In Gtk2hs you can use the GLDrawingArea widget, which provides
> withGLDrawingArea for easy activation of the GL context.
>
> There's an example in the gtk2hs sources, in examples/opengl.
>
> Enabling GL for other widgets is not supported well at the moment.
> (There are low level bindings (using DrawWindow), but no generic
> binding to the higher level gtk_widget_set_gl_capability() call.
> Such support wouldn't be too hard to add, I think.)
>
> HTH,
>
> Bertram
>
> [1] see http://gtkglext.sourceforge.net/reference/gtkglext/gtkglext-gtkglwidget.html#gtk-widget-get-gl-context
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Gtk2hs-users mailing list
> Gtk2hs-users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gtk2hs-users
>
--
I try to take things like a crow; war and chaos don't always ruin a
picnic, they just mean you have to be careful what you swallow.
-- Jessica Edwards
More information about the Haskell-Cafe
mailing list