Exemplo n.º 1
0
/***
 *** The "realize" signal handler. All the OpenGL initialization
 *** should be performed here, such as default background colour,
 *** certain states etc.
 ***/
static void
realize (GtkWidget *widget,
	 gpointer   data)
{
  void (APIENTRY *PolygonOffset)(GLfloat, GLfloat) = NULL;

  /*** OpenGL BEGIN ***/
  if (!gtk_widget_begin_gl (widget))
    return;

  /* glPolygonOffsetEXT */
  PolygonOffset = (void (APIENTRY *)(GLfloat, GLfloat))gdk_gl_get_proc_address ("glPolygonOffsetEXT");
  if (PolygonOffset == NULL)
    {
      /* glPolygonOffset */
      PolygonOffset = (void (APIENTRY *)(GLfloat, GLfloat))gdk_gl_get_proc_address ("glPolygonOffset");
      if (PolygonOffset == NULL)
        {
          g_print ("Sorry, glPolygonOffset() is not supported by this renderer.\n");
          exit (1);
        }
    }

  glEnable (GL_DEPTH_TEST);
  glDepthFunc (GL_LEQUAL);
  glClearColor (0.0, 0.0, 0.0, 0.0);
  PolygonOffset (1.0, 1.0);
  glEnable (GL_CULL_FACE);
  glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
  glHint (GL_POLYGON_SMOOTH_HINT, GL_NICEST);
  glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  glEnable (GL_COLOR_MATERIAL);
  glColorMaterial (GL_FRONT, GL_DIFFUSE);
  glLightfv (GL_LIGHT0, GL_POSITION, lightPosition);
  glEnable (GL_LIGHT0);
  glShadeModel (GL_FLAT);
  glDisable (GL_LIGHTING);

  resetWireframe ();

  gtk_widget_end_gl (widget, FALSE);
  /*** OpenGL END ***/

  return;
}
Exemplo n.º 2
0
PolygonOffset *PolygonOffset::getOrCreate(GLfloat factor, GLfloat units)
{
    return getOrCreateImpl(PolygonOffset(factor, units));
}