My working platform is: OS: Windows 7 Ultimate x64 Compiler: Visual Studio 2008 x64 Version 9.0.30729.1 SP Gcc 4.4.5 20100710(prerelease) gtk version: gtk+-bundle_2.20.1-20100912_win64 gtkglext version:1.2.0
2010/10/19 <[email protected]> > Send gtkglext-list mailing list submissions to > [email protected] > > To subscribe or unsubscribe via the World Wide Web, visit > http://mail.gnome.org/mailman/listinfo/gtkglext-list > or, via email, send a message with subject or body 'help' to > [email protected] > > You can reach the person managing the list at > [email protected] > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of gtkglext-list digest..." > > > Today's Topics: > > 1. gtkglext cannot draw geometries (jiangtengfei) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Tue, 19 Oct 2010 21:57:53 +0800 > From: jiangtengfei <[email protected]> > To: [email protected] > Subject: [GtkGLExt] gtkglext cannot draw geometries > Message-ID: > <[email protected]> > Content-Type: text/plain; charset="windows-1252" > > While using the gtkglext package,I met some problems. > > I have built the 64bit gtkglext dynamic library. When I run a test example, > I can not get the correct result. The result supposed to be some > geometries, > but I just get a blank. > I tried to change the clean color, but it doesn?t work. > At first, I thought it was caused by the 64bit gtkglext dynamic library. So > I downloaded the 32bit gtkglext binaries, and rebuilt the test code. Then I > only got the same result. > > I will be very pleased if you can do me a favor. > Thank you for reading. > > the test code is as follows: > //************************************************************* > //*********************************************************** > /* > * simple.c: > * Simple GtkGLExt example. > * > * written by Naofumi Yasufuku <[email protected]> > */ > > #include <stdlib.h> > > #include <gtk/gtk.h> > > #include <gtk/gtkgl.h> > > #ifdef G_OS_WIN32 > #define WIN32_LEAN_AND_MEAN 1 > #include <windows.h> > #endif > > #include <GL/gl.h> > #include <GL/glu.h> > > static void realize (GtkWidget *widget,gpointer data) > { > GdkGLContext *glcontext = gtk_widget_get_gl_context (widget); > GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget); > > GLUquadricObj *qobj; > static GLfloat light_diffuse[] = {1.0, 0.0, 0.0, 1.0}; > static GLfloat light_position[] = {1.0, 1.0, 1.0, 0.0}; > > /*** OpenGL BEGIN ***/ > if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) > return; > > qobj = gluNewQuadric (); > gluQuadricDrawStyle (qobj, GLU_FILL); > glNewList (1, GL_COMPILE); > gluSphere (qobj, 1.0, 20, 20); > glEndList (); > > glLightfv (GL_LIGHT0, GL_DIFFUSE, light_diffuse); > glLightfv (GL_LIGHT0, GL_POSITION, light_position); > glEnable (GL_LIGHTING); > glEnable (GL_LIGHT0); > glEnable (GL_DEPTH_TEST); > > glClearColor (0.0, 0.0, 0.0, 0.0); > glClearDepth (1.0); > > glViewport (0, 0, > widget->allocation.width, widget->allocation.height); > > glMatrixMode (GL_PROJECTION); > glLoadIdentity (); > gluPerspective (40.0, 1.0, 1.0, 10.0); > > glMatrixMode (GL_MODELVIEW); > glLoadIdentity (); > gluLookAt (0.0, 0.0, 3.0, > 0.0, 0.0, 0.0, > 0.0, 1.0, 0.0); > glTranslatef (0.0, 0.0, -3.0); > > gdk_gl_drawable_gl_end (gldrawable); > /*** OpenGL END ***/ > } > > static gboolean configure_event (GtkWidget *widget, > GdkEventConfigure *event, > gpointer data) > { > GdkGLContext *glcontext = gtk_widget_get_gl_context (widget); > GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget); > > /*** OpenGL BEGIN ***/ > if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) > return FALSE; > > glViewport (0, 0, > widget->allocation.width, widget->allocation.height); > > gdk_gl_drawable_gl_end (gldrawable); > /*** OpenGL END ***/ > > return TRUE; > } > > static gboolean expose_event (GtkWidget *widget, > GdkEventExpose *event, > gpointer data) > { > GdkGLContext *glcontext = gtk_widget_get_gl_context (widget); > GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget); > > /*** OpenGL BEGIN ***/ > if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) > return FALSE; > > glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); > > glCallList (1); > > if (gdk_gl_drawable_is_double_buffered (gldrawable)) > gdk_gl_drawable_swap_buffers (gldrawable); > else > glFlush (); > > gdk_gl_drawable_gl_end (gldrawable); > /*** OpenGL END ***/ > > return TRUE; > } > > static void print_gl_config_attrib (GdkGLConfig *glconfig, > const gchar *attrib_str, > int attrib, > gboolean is_boolean) > { > int value; > > g_print ("%s = ", attrib_str); > if (gdk_gl_config_get_attrib (glconfig, attrib, &value)) > { > if (is_boolean) > g_print ("%s\n", value == TRUE ? "TRUE" : "FALSE"); > else > g_print ("%d\n", value); > } > else > g_print ("*** Cannot get %s attribute value\n", attrib_str); > } > > static void examine_gl_config_attrib (GdkGLConfig *glconfig) > { > g_print ("\nOpenGL visual configurations :\n\n"); > > g_print ("gdk_gl_config_is_rgba (glconfig) = %s\n", > gdk_gl_config_is_rgba (glconfig) ? "TRUE" : "FALSE"); > g_print ("gdk_gl_config_is_double_buffered (glconfig) = %s\n", > gdk_gl_config_is_double_buffered (glconfig) ? "TRUE" : "FALSE"); > g_print ("gdk_gl_config_is_stereo (glconfig) = %s\n", > gdk_gl_config_is_stereo (glconfig) ? "TRUE" : "FALSE"); > g_print ("gdk_gl_config_has_alpha (glconfig) = %s\n", > gdk_gl_config_has_alpha (glconfig) ? "TRUE" : "FALSE"); > g_print ("gdk_gl_config_has_depth_buffer (glconfig) = %s\n", > gdk_gl_config_has_depth_buffer (glconfig) ? "TRUE" : "FALSE"); > g_print ("gdk_gl_config_has_stencil_buffer (glconfig) = %s\n", > gdk_gl_config_has_stencil_buffer (glconfig) ? "TRUE" : "FALSE"); > g_print ("gdk_gl_config_has_accum_buffer (glconfig) = %s\n", > gdk_gl_config_has_accum_buffer (glconfig) ? "TRUE" : "FALSE"); > > g_print ("\n"); > > print_gl_config_attrib (glconfig, "GDK_GL_USE_GL", > GDK_GL_USE_GL, TRUE); > print_gl_config_attrib (glconfig, "GDK_GL_BUFFER_SIZE", > GDK_GL_BUFFER_SIZE, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_LEVEL", GDK_GL_LEVEL, > FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_RGBA", GDK_GL_RGBA, > TRUE); > print_gl_config_attrib (glconfig, "GDK_GL_DOUBLEBUFFER", > GDK_GL_DOUBLEBUFFER, TRUE); > print_gl_config_attrib (glconfig, "GDK_GL_STEREO", > GDK_GL_STEREO, TRUE); > print_gl_config_attrib (glconfig, "GDK_GL_AUX_BUFFERS", > GDK_GL_AUX_BUFFERS, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_RED_SIZE", > GDK_GL_RED_SIZE, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_GREEN_SIZE", > GDK_GL_GREEN_SIZE, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_BLUE_SIZE", > GDK_GL_BLUE_SIZE, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_ALPHA_SIZE", > GDK_GL_ALPHA_SIZE, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_DEPTH_SIZE", > GDK_GL_DEPTH_SIZE, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_STENCIL_SIZE", > GDK_GL_STENCIL_SIZE, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_ACCUM_RED_SIZE", > GDK_GL_ACCUM_RED_SIZE, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_ACCUM_GREEN_SIZE", > GDK_GL_ACCUM_GREEN_SIZE, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_ACCUM_BLUE_SIZE", > GDK_GL_ACCUM_BLUE_SIZE, FALSE); > print_gl_config_attrib (glconfig, "GDK_GL_ACCUM_ALPHA_SIZE", > GDK_GL_ACCUM_ALPHA_SIZE, FALSE); > > g_print ("\n"); > } > > int main (int argc,char *argv[]){ > GdkGLConfig *glconfig; > gint major, minor; > > GtkWidget *window; > GtkWidget *vbox; > GtkWidget *drawing_area; > GtkWidget *button; > > > /* > * Init GTK. > */ > > gtk_init (&argc, &argv); > > /* > * Init GtkGLExt. > */ > > gtk_gl_init (&argc, &argv); > > /* > * Query OpenGL extension version. > */ > > gdk_gl_query_version (&major, &minor); > g_print ("\nOpenGL extension version - %d.%d\n", > major, minor); > > /* > * Configure OpenGL-capable visual. > */ > > /* Try double-buffered visual */ > glconfig = gdk_gl_config_new_by_mode (GDK_GL_MODE_RGB | > GDK_GL_MODE_DEPTH | > GDK_GL_MODE_DOUBLE); > if (glconfig == NULL) > { > g_print ("*** Cannot find the double-buffered visual.\n"); > g_print ("*** Trying single-buffered visual.\n"); > > /* Try single-buffered visual */ > glconfig = gdk_gl_config_new_by_mode (GDK_GL_MODE_RGB | > GDK_GL_MODE_DEPTH); > if (glconfig == NULL) > { > g_print ("*** No appropriate OpenGL-capable visual found.\n"); > exit (1); > } > } > > examine_gl_config_attrib (glconfig); > > /* > * Top-level window. > */ > > window = gtk_window_new (GTK_WINDOW_TOPLEVEL); > gtk_window_set_title (GTK_WINDOW (window), "simple"); > > /* Get automatically redrawn if any of their children changed allocation. > */ > gtk_container_set_reallocate_redraws (GTK_CONTAINER (window), TRUE); > > g_signal_connect (G_OBJECT (window), "delete_event", > G_CALLBACK (gtk_main_quit), NULL); > > /* > * VBox. > */ > > vbox = gtk_vbox_new (FALSE, 0); > gtk_container_add (GTK_CONTAINER (window), vbox); > gtk_widget_show (vbox); > > /* > * Drawing area for drawing OpenGL scene. > */ > > drawing_area = gtk_drawing_area_new (); > gtk_widget_set_size_request (drawing_area, 200, 200); > > /* Set OpenGL-capability to the widget. */ > gtk_widget_set_gl_capability (drawing_area, > glconfig, > NULL, > TRUE, > GDK_GL_RGBA_TYPE); > > g_signal_connect_after (G_OBJECT (drawing_area), "realize", > G_CALLBACK (realize), NULL); > g_signal_connect (G_OBJECT (drawing_area), "configure_event", > G_CALLBACK (configure_event), NULL); > g_signal_connect (G_OBJECT (drawing_area), "expose_event", > G_CALLBACK (expose_event), NULL); > > gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0); > > gtk_widget_show (drawing_area); > > /* > * Simple quit button. > */ > > button = gtk_button_new_with_label ("Quit"); > > g_signal_connect (G_OBJECT (button), "clicked", > G_CALLBACK (gtk_main_quit), NULL); > > gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); > > gtk_widget_show (button); > > /* > * Show window. > */ > > gtk_widget_show (window); > > /* > * Main loop. > */ > > gtk_main (); > > return 0; > } > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: < > http://mail.gnome.org/archives/gtkglext-list/attachments/20101019/9ed458bc/attachment.html > > > > ------------------------------ > > _______________________________________________ > gtkglext-list mailing list > [email protected] > http://mail.gnome.org/mailman/listinfo/gtkglext-list > > > End of gtkglext-list Digest, Vol 73, Issue 10 > ********************************************* >
_______________________________________________ gtkglext-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gtkglext-list
