[EMAIL PROTECTED] schrieb: -----
>An: [email protected] >Von: Dirk Reiners <[EMAIL PROTECTED]> >Gesendet von: [EMAIL PROTECTED] >Datum: 09/18/2006 03:11PM >Thema: Re: [Opensg-users] GTK window > >Antonio Bleile wrote: >> >> >> after the ogl context has been made current by gtk >> you have to call "init()" on the passive window. > >In addition to that the PassiveWindow also needs to be informed about > >Window resizes, that's an easy one to forget, but 0x0 pixel images >are >not that useful. ;) i've tried this, too. i attached my source code. it may be a bad style, but it is only a test application ;-) maybe you find the missing line. ----- snip ------ #include "main.h" #include <gtkmm/main.h> #include <gtkmm/window.h> #include <gtkmm/label.h> #include <gtkmm/drawingarea.h> #include <gdk/gdkgl.h> #include <gtk/gtkgl.h> #include <iostream> #include <OpenSG/OSGPassiveWindow.h> #include <OpenSG/OSGSimpleGeometry.h> #include <OpenSG/OSGSimpleSceneManager.h> #include <OpenSG/OSGDrawAction.h> OSG::SimpleSceneManager* mgr; OSG::PassiveWindowPtr pwin; int main(int argc, char* argv[]){ osg::osgInit(argc,argv); Gtk::Main kit(argc, argv); initOpenGLSubsys(&argc, &argv); Gtk::Window window; Gtk::DrawingArea drawArea; drawArea.set_size_request(600,600); std::cout << "Enabling GL Window.."; GdkGLConfig *glConfigMode = gdk_gl_config_new_by_mode((GdkGLConfigMode)(GDK_GL_MODE_RGB | GDK_GL_MODE_DOUBLE | GDK_GL_MODE_DEPTH)); gtk_widget_set_gl_capability((GtkWidget*)drawArea.gobj(),glConfigMode,NULL,true,GDK_GL_RGBA_TYPE); gboolean isGLCap = gtk_widget_is_gl_capable((GtkWidget*)drawArea.gobj()); if(isGLCap) std::cout << "OK..\n"; else std::cout << "Error..\n"; window.set_title("Test"); window.add(drawArea); drawArea.show(); drawArea.add_events((Gdk::EventMask)GDK_VISIBILITY_NOTIFY_MASK); g_signal_connect_after (G_OBJECT ((GtkWidget*)drawArea.gobj()), "realize", G_CALLBACK (init), NULL); g_signal_connect (G_OBJECT ((GtkWidget*)drawArea.gobj()), "expose_event", G_CALLBACK (draw), NULL); Gtk::Main::run(window); } static gboolean draw (GtkWidget *widget, GdkEventExpose *event, gpointer data) { GdkGLContext *glcontext = gtk_widget_get_gl_context (widget); GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget); gdk_gl_drawable_gl_begin (gldrawable, glcontext); mgr->redraw(); gdk_gl_drawable_gl_end (gldrawable); return true; } void init(GtkWidget *widget, gpointer data){ GdkGLContext *glcontext = gtk_widget_get_gl_context (widget); GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget); gdk_gl_drawable_gl_begin (gldrawable, glcontext); pwin = OSG::PassiveWindow::create(); pwin->init(); pwin->resize(600,600); OSG::NodePtr scene = OSG::makeTorus(.5, 2, 16, 16); // create the SimpleSceneManager helper mgr = new OSG::SimpleSceneManager; // tell the manager what to manage mgr->setWindow(pwin ); mgr->setRoot (scene); // show the whole scene mgr->showAll(); gdk_gl_drawable_gl_end (gldrawable); } void initOpenGLSubsys(int* argc, char*** argv){ gtk_gl_init(argc, argv); gdk_gl_init(argc, argv); std::cout << "Checking for OpenGL.."; gboolean hasOpenGL = gdk_gl_query_extension(); if(hasOpenGL) std::cout << "OK\n"; else std::cout << "NOT FOUND!!!\n"; } ---- snap ---- Hannes ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Opensg-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensg-users
