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

Reply via email to