[vtk-developers] Gradient backgrounds in vtkRenderer.

Jeff Baumes jeff.baumes at kitware.com
Tue Apr 8 09:41:45 EDT 2008


Thanks for the suggestions, Francois. I've incorporated those changes
and commited them, plus added a test called TestGradientBackground.

Jeff

On Mon, Apr 7, 2008 at 5:05 PM, Francois Bertel
<francois.bertel at kitware.com> wrote:
> You'd better not use query functions like glIsEnable() because it
>  requires the driver to send information back to the client (which may
>  involve a flush of OpenGL commands). glPushAttrib/glPopAttrib should
>  be  faster:
>
>  glPushAttrib(GL_ENABLE_BIT); // save depth test value and lighting value
>  glDisable(GL_DEPTH_TEST);
>  glDisable(GL_LIGHTING);
>  [...]
>  glPopAttrib();
>
>  glColor() change the current color. You don't need to call it before
>
> each call to glVertex() if it does not change. Just write:
>
>   //first Vertex (-1, -1)
>          glColor3dv(this->Background);
>          glVertex2f(-1.0, -1.0);
>
>          //second vertex
>
>          glVertex2f(1.0, -1.0);
>
>          //third vertex
>          glColor3dv(this->Background2);
>          glVertex2f(1.0, 1.0);
>
>          //fourth vertex
>
>          glVertex2f(-1.0, 1.0);
>
>
>
>
> On Mon, Apr 7, 2008 at 4:24 PM, Jeff Baumes <jeff.baumes at kitware.com> wrote:
>  > In certain applications, gradient backgrounds can add to the quality
>  >  of a visualization (in particular in information visualization). Does
>  >  anyone object to the addition of a top-to-bottom gradient in
>  >  vtkRenderer (by default it is disabled, of course)?
>  >
>  >  This involves adding the following functions to vtkViewport:
>  >
>  >   vtkSetVector3Macro(Background2,double);
>  >   vtkGetVector3Macro(Background2,double);
>  >
>  >   vtkSetMacro(GradientBackground,bool);
>  >   vtkGetMacro(GradientBackground,bool);
>  >   vtkBooleanMacro(GradientBackground,bool);
>  >
>  >  And the following to vtkOpenGLRenderer:
>  >
>  >   if (!this->Transparent() && this->GradientBackground)
>  >     {
>  >     GLboolean is_depth_en = glIsEnabled(GL_DEPTH_TEST);
>  >     GLboolean is_light_en = glIsEnabled(GL_LIGHTING);
>  >
>  >     if (is_depth_en)
>  >       {
>  >       glDisable(GL_DEPTH_TEST);
>  >       }
>  >
>  >     if (is_light_en)
>  >       {
>  >       glDisable(GL_LIGHTING);
>  >       }
>  >
>  >     glMatrixMode(GL_MODELVIEW);
>  >     glPushMatrix();
>  >     {
>  >       glLoadIdentity ();
>  >       glMatrixMode (GL_PROJECTION);
>  >       glPushMatrix ();
>  >       {
>  >         glLoadIdentity ();
>  >         glBegin(GL_QUADS);
>  >
>  >         //first Vertex (-1, -1)
>  >         glColor3dv(this->Background);
>  >         glVertex2f(-1.0, -1.0);
>  >
>  >         //second vertex
>  >         glColor3dv(this->Background);
>  >         glVertex2f(1.0, -1.0);
>  >
>  >         //third vertex
>  >         glColor3dv(this->Background2);
>  >         glVertex2f(1.0, 1.0);
>  >
>  >         //fourth vertex
>  >         glColor3dv(this->Background2);
>  >         glVertex2f(-1.0, 1.0);
>  >         glEnd();
>  >       }
>  >       glPopMatrix();
>  >       glMatrixMode(GL_MODELVIEW);
>  >     }
>  >     glPopMatrix();
>  >
>  >     if (is_depth_en)
>  >       {
>  >       glEnable(GL_DEPTH_TEST);
>  >       }
>  >
>  >     if (is_light_en)
>  >       {
>  >       glEnable(GL_LIGHTING);
>  >       }
>  >     }
>  >
>  >  --
>  >  Jeff Baumes, Ph.D.
>  >  R&D Engineer, Kitware Inc.
>  >  (518) 371-3971 x132
>  >  jeff.baumes at kitware.com
>
>
> >  _______________________________________________
>  >  vtk-developers mailing list
>  >  vtk-developers at vtk.org
>  >  http://www.vtk.org/mailman/listinfo/vtk-developers
>  >
>
>
>
>  --
>  François Bertel, PhD | Kitware Inc. Suite 204
>  1 (518) 371 3971 x113 | 28 Corporate Drive
>   | Clifton Park NY 12065, USA
>



-- 
Jeff Baumes, Ph.D.
R&D Engineer, Kitware Inc.
(518) 371-3971 x132
jeff.baumes at kitware.com



More information about the vtk-developers mailing list