openvrml::gl::viewer Class Reference

Abstract class for display of VRML models using OpenGL/Mesa. More...

#include <openvrml/gl/viewer.h>

Inheritance diagram for openvrml::gl::viewer:

List of all members.


Classes

struct  event_info
 Input event. More...
struct  light_info
 Light information. More...
class  modelview_matrix_stack
 Encapsulates an extended modelview matrix stack. More...

Public Types

enum  { max_lights = 8 }
enum  light_type {
  light_unused,
  light_directional,
  light_positional
}
 Light type. More...
enum  event_type {
  event_key_down,
  event_mouse_move,
  event_mouse_click,
  event_mouse_drag,
  event_mouse_release
}
 Event type. More...
enum  {
  key_home,
  key_left,
  key_up,
  key_right,
  key_down,
  key_page_up,
  key_page_down
}

Public Member Functions

 viewer ()
 Construct a viewer for the specified browser.
virtual ~viewer () throw ()
 Destroy.
void update (double time=0.0)
 Update the scene.
virtual void redraw ()
 Redraw the scene.
void resize (size_t width, size_t height)
 Resize the viewport.
void input (event_info *e)
 Handle an event generated from user input.

Protected Types

enum  cursor_style {
  cursor_inherit,
  cursor_info,
  cursor_cycle,
  cursor_up_down,
  cursor_crosshair
}
 Cursor style. More...
enum  { maxsensitive = 1000 }

Protected Member Functions

void initialize ()
 Initialize.
void shutdown ()
 Shut down.
void begin_geometry ()
 Reset per-geometry attributes.
void end_geometry ()
 Reset attributes changed during geometry insertion.
void step (float, float, float)
 Translate the user view.
void zoom (float)
 Zoom.
void rotate (const openvrml::rotation &rot) throw ()
 Rotate the user view.
void handleKey (int)
 Handle keypresses.
void handleButton (event_info *e)
 Handle mouse button up/down.
void handleMouseDrag (int, int)
 Handle mouse dragging.
bool checkSensitive (int x, int y, event_type event)
void post_redraw ()
 Called to indicate to the windowing system that a redraw is necessary.
void set_cursor (cursor_style c)
 Called to set the cursor style.
void swap_buffers ()
 Called to indicate to the windowing system that the front and back buffers should be swapped.
void set_timer (double interval)
 Set a delay.

Protected Attributes

modelview_matrix_stack modelview_matrix_stack_
 Modelview matrix stack.
bool gl_initialized
 Indicate whether OpenGL has been initialized for rendering.
bool blend
 Indicate whether alpha blending is enabled.
bool lit
 Indicate whether lighting is enabled.
bool texture
 Indicate whether texture mapping is enabled.
bool wireframe
 Indicate whether wireframe mode is enabled.
size_t win_width
 Window width.
size_t win_height
 Window height.
color background
 Background color.
size_t objects
 Number of objects.
size_t nested_objects
 Number of nested objects.
GLUtesselator * tesselator
 GLU tesselation object.
size_t sensitive
 Count of sensitive nodes.
size_t active_sensitive
 Count of active sensitive nodes.
size_t over_sensitive
 Count of sensitive nodes the mouse is over.
nodesensitive_object [maxsensitive]
 Sensitive nodes.
bool select_mode
 Indicate whether the renderer is in select mode.
double select_z
 Window z-coordinate of last selection.
light_info light_info_ [max_lights]
 light_info for the lights in the scene.
int beginx
 Mouse drag start x-coordinate.
int beginy
 Mouse drag start y-coordinate.
bool rotating
 Whether the viewer is in the process of rotating.
bool scaling
 Whether the viewer is in the process of scaling.
bool translating
 Whether the viewer is in the process of translating.
bool draw_bounding_spheres
 Whether to draw bounding spheres.
double render_time
 Updated at the end of redraw with the time redraw took to execute.
double render_time1
 Rendering time for the previous cycle.

Private Types

typedef std::map< const node
*, GLuint > 
list_map_t
typedef std::map< const
texture_node *, GLuint > 
texture_map_t

Private Member Functions

virtual rendering_mode do_mode ()
 Rendering mode.
virtual double do_frame_rate ()
 Frame rate.
virtual void do_reset_user_navigation ()
 Reset the user view to the position and orientation of the currently bound Viewpoint node.
virtual void do_begin_object (const char *id, bool retain)
 Begin a display list.
virtual void do_end_object ()
 End of group scope.
virtual void do_insert_background (const background_node &n)
 Insert a background into a display list.
virtual void do_insert_box (const geometry_node &n, const vec3f &size)
 Insert a box into a display list.
virtual void do_insert_cone (const geometry_node &n, float height, float radius, bool bottom, bool side)
 Insert a cone into a display list.
virtual void do_insert_cylinder (const geometry_node &n, float height, float radius, bool bottom, bool side, bool top)
 Insert a cylinder into a display list.
virtual void do_insert_elevation_grid (const geometry_node &n, unsigned int mask, const std::vector< float > &height, int32 xDimension, int32 zDimension, float xSpacing, float zSpacing, const std::vector< color > &color, const std::vector< vec3f > &normal, const std::vector< vec2f > &texCoord)
 Insert an elevation grid into a display list.
virtual void do_insert_extrusion (const geometry_node &n, unsigned int mask, const std::vector< vec3f > &spine, const std::vector< vec2f > &crossSection, const std::vector< openvrml::rotation > &orientation, const std::vector< vec2f > &scale)
 Insert an extrusion into a display list.
virtual void do_insert_line_set (const geometry_node &n, const std::vector< vec3f > &coord, const std::vector< int32 > &coordIndex, bool colorPerVertex, const std::vector< color > &color, const std::vector< int32 > &colorIndex)
 Insert a line set into a display list.
virtual void do_insert_point_set (const geometry_node &n, const std::vector< vec3f > &coord, const std::vector< color > &color)
 Insert a point set into a display list.
virtual void do_insert_shell (const geometry_node &n, unsigned int mask, const std::vector< vec3f > &coord, const std::vector< int32 > &coordIndex, const std::vector< color > &color, const std::vector< int32 > &colorIndex, const std::vector< vec3f > &normal, const std::vector< int32 > &normalIndex, const std::vector< vec2f > &texCoord, const std::vector< int32 > &texCoordIndex)
 Insert a shell into a display list.
virtual void do_insert_sphere (const geometry_node &n, float radius)
 Insert a sphere into a display list.
virtual void do_insert_dir_light (float ambientIntensity, float intensity, const color &color, const vec3f &direction)
 Insert a directional light into a display list.
virtual void do_insert_point_light (float ambientIntensity, const vec3f &attenuation, const color &color, float intensity, const vec3f &location, float radius)
 Insert a point light into a display list.
virtual void do_insert_spot_light (float ambientIntensity, const vec3f &attenuation, float beamWidth, const color &color, float cutOffAngle, const vec3f &direction, float intensity, const vec3f &location, float radius)
 Insert a point light into a display list.
virtual void do_remove_object (const node &ref)
 Remove an object from the display list.
virtual void do_enable_lighting (bool)
 Enable/disable lighting.
virtual void do_set_color (const color &rgb, float a=1.0)
 Set the color.
virtual void do_set_fog (const color &color, float visibilityRange, const char *type)
 Set the fog.
virtual void do_set_material (float ambientIntensity, const color &diffuseColor, const color &emissiveColor, float shininess, const color &specularColor, float transparency)
 Set the material.
virtual void do_set_material_mode (size_t tex_components, bool geometry_color)
 Set the material mode.
virtual void do_set_sensitive (node *object)
 Indicate that a node should be sensitive to the pointing device.
virtual void do_insert_texture (const texture_node &n, bool retainHint=false)
 Create a texture object.
virtual void do_remove_texture_object (const texture_node &n)
 Remove a texture from the display list.
virtual void do_set_texture_transform (const vec2f &center, float rotation, const vec2f &scale, const vec2f &translation)
 Set the texture transform.
virtual void do_set_frustum (float field_of_view, float avatar_size, float visibility_limit)
virtual void do_set_viewpoint (const vec3f &position, const openvrml::rotation &orientation, float avatarSize, float visibilityLimit)
 Set the viewpoint.
virtual void do_transform (const mat4f &mat)
 Multiply the current modelview matrix by mat.
virtual void do_transform_points (size_t nPoints, vec3f *point) const
 Transform points by the current modelview matrix.
virtual void do_draw_bounding_sphere (const bounding_sphere &bs, bounding_volume::intersection intersection)
 Draw a bounding sphere.
virtual void do_post_redraw ()=0
 Called to indicate to the windowing system that a redraw is necessary.
virtual void do_set_cursor (cursor_style c)=0
 Called to set the cursor style.
virtual void do_swap_buffers ()=0
 Called to indicate to the windowing system that the front and back buffers should be swapped.
virtual void do_set_timer (double interval)=0
 Set a delay.

Private Attributes

list_map_t list_map_
texture_map_t texture_map_

Detailed Description

Abstract class for display of VRML models using OpenGL/Mesa.

A window-system specific subclass needs to redefine the pure virtual methods.


Member Enumeration Documentation

anonymous enum

Enumerator:
max_lights  Maximum number of lights in a scene.

Light type.

Enumerator:
light_unused  Unused.
light_directional  Directional.
light_positional  Positional.

Event type.

Enumerator:
event_key_down  Key down.
event_mouse_move  Mouse movement.
event_mouse_click  Mouse button click.
event_mouse_drag  Mouse drag.
event_mouse_release  Mouse button release.

Cursor style.

Enumerator:
cursor_inherit  Inherit the parent's cursor style.
cursor_info  Pointing hand.
cursor_cycle  Arrows rotating in a circle.
cursor_up_down  Bidirectional pointing up and down.
cursor_crosshair  Crosshair.

anonymous enum [protected]

Enumerator:
maxsensitive  Maximum number of sensitive nodes.


Constructor & Destructor Documentation

openvrml::gl::viewer::viewer (  ) 

Construct a viewer for the specified browser.

Reimplemented from openvrml::viewer.

openvrml::gl::viewer::~viewer (  )  throw () [virtual]

Destroy.

Implements openvrml::viewer.


Member Function Documentation

void openvrml::gl::viewer::initialize (  )  [protected]

Initialize.

void openvrml::gl::viewer::shutdown (  )  [protected]

Shut down.

void openvrml::gl::viewer::begin_geometry (  )  [protected]

Reset per-geometry attributes.

Called after the appearance/material has been set.

void openvrml::gl::viewer::end_geometry (  )  [protected]

Reset attributes changed during geometry insertion.

void openvrml::gl::viewer::step ( float  x,
float  y,
float  z 
) [protected]

Translate the user view.

Parameters:
[in] x translation vector x component.
[in] y translation vector y component.
[in] z translation vector z component.

void openvrml::gl::viewer::zoom ( float  z  )  [protected]

Zoom.

Parameters:
[in] z amount to zoom.

void openvrml::gl::viewer::rotate ( const openvrml::rotation rot  )  throw () [protected]

Rotate the user view.

Parameters:
[in] rot rotation.

void openvrml::gl::viewer::handleKey ( int  key  )  [protected]

Handle keypresses.

Parameters:
[in] key key identifier.

void openvrml::gl::viewer::handleButton ( event_info e  )  [protected]

Handle mouse button up/down.

Parameters:
[in] e event data.

void openvrml::gl::viewer::handleMouseDrag ( int  x,
int  y 
) [protected]

Handle mouse dragging.

Parameters:
[in] x pointer x-coordinate.
[in] y pointer y-coordinate.

bool openvrml::gl::viewer::checkSensitive ( int  x,
int  y,
event_type  event 
) [protected]

Check for pickable objects.

void openvrml::gl::viewer::post_redraw (  )  [protected]

Called to indicate to the windowing system that a redraw is necessary.

void openvrml::gl::viewer::set_cursor ( cursor_style  c  )  [protected]

Called to set the cursor style.

Parameters:
[in] c cursor style identifier.

void openvrml::gl::viewer::swap_buffers (  )  [protected]

Called to indicate to the windowing system that the front and back buffers should be swapped.

void openvrml::gl::viewer::set_timer ( double  interval  )  [protected]

Set a delay.

Parameters:
[in] interval milliseconds to delay.

void openvrml::gl::viewer::update ( double  time = 0.0  ) 

Update the scene.

update is called from a timer callback and from checkSensitive.

Parameters:
[in] time current time.

void openvrml::gl::viewer::redraw (  )  [virtual]

Redraw the scene.

void openvrml::gl::viewer::resize ( size_t  width,
size_t  height 
)

Resize the viewport.

Parameters:
[in] width new width.
[in] height new height.

void openvrml::gl::viewer::input ( event_info e  ) 

Handle an event generated from user input.

Parameters:
[in] e event data.

openvrml::gl::viewer::rendering_mode openvrml::gl::viewer::do_mode (  )  [private, virtual]

Rendering mode.

Returns:
the rendering_mode.

Implements openvrml::viewer.

double openvrml::gl::viewer::do_frame_rate (  )  [private, virtual]

Frame rate.

Returns:
the frame rate.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_reset_user_navigation (  )  [private, virtual]

Reset the user view to the position and orientation of the currently bound Viewpoint node.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_begin_object ( const char *  id,
bool  retain 
) [private, virtual]

Begin a display list.

begin_object and end_object should correspond to grouping_nodes. Group-level scoping for directional lights, anchors, sensors are handled here. Display lists can optionally be created (but the retain flag is just a hint, not guaranteed). Retained objects can be referred to later to avoid duplicating geometry. OpenGL doesn't allow nested objects. The top-down approach of putting entire groups in display lists is faster for static scenes but uses more memory and means that if anything is changed, the whole object must be tossed.

The bottom-up model wraps each piece of geometry in a dlist but requires traversal of the entire scene graph to reference each dlist. The decision about what groups to stuff in an object is punted to the object itself, as it can decide whether it is mutable.

The OpenGL viewer never puts objects in display lists, so the retain hint is ignored.

Parameters:
[in] id not used.
[in] retain not used.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_end_object (  )  [private, virtual]

End of group scope.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_background ( const background_node n  )  [private, virtual]

Insert a background into a display list.

Parameters:
[in] n a background_node.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_box ( const geometry_node n,
const vec3f size 
) [private, virtual]

Insert a box into a display list.

Parameters:
[in] n the geometry_node corresponding to the box.
[in] size box dimensions.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_cone ( const geometry_node n,
float  height,
float  radius,
bool  bottom,
bool  side 
) [private, virtual]

Insert a cone into a display list.

Parameters:
[in] n the geometry_node corresponding to the cone.
[in] height height.
[in] radius radius at base.
[in] bottom show the bottom.
[in] side show the side.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_cylinder ( const geometry_node n,
float  height,
float  radius,
bool  bottom,
bool  side,
bool  top 
) [private, virtual]

Insert a cylinder into a display list.

Parameters:
[in] n the geometry_node corresponding to the cylinder.
[in] height height.
[in] radius radius.
[in] bottom show the bottom.
[in] side show the side.
[in] top show the top.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_elevation_grid ( const geometry_node node,
unsigned int  mask,
const std::vector< float > &  height,
int32  xDimension,
int32  zDimension,
float  xSpacing,
float  zSpacing,
const std::vector< color > &  color,
const std::vector< vec3f > &  normal,
const std::vector< vec2f > &  texCoord 
) [private, virtual]

Insert an elevation grid into a display list.

Parameters:
[in] node the geometry_node corresponding to the elevation grid.
[in] mask 
[in] height height field.
[in] xDimension vertices in the x direction.
[in] zDimension vertices in the z direction.
[in] xSpacing distance between vertices in the x direction.
[in] zSpacing distance between vertices in the z direction.
[in] color colors.
[in] normal normals.
[in] texCoord texture coordinates.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_extrusion ( const geometry_node n,
unsigned int  mask,
const std::vector< vec3f > &  spine,
const std::vector< vec2f > &  crossSection,
const std::vector< openvrml::rotation > &  orientation,
const std::vector< vec2f > &  scale 
) [private, virtual]

Insert an extrusion into a display list.

Parameters:
[in] n the geometry_node corresponding to the extrusion.
[in] mask 
[in] spine spine points.
[in] crossSection cross-sections.
[in] orientation cross-section orientations.
[in] scale cross-section scales.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_line_set ( const geometry_node n,
const std::vector< vec3f > &  coord,
const std::vector< int32 > &  coordIndex,
bool  colorPerVertex,
const std::vector< color > &  color,
const std::vector< int32 > &  colorIndex 
) [private, virtual]

Insert a line set into a display list.

Parameters:
[in] n the geometry_node corresponding to the line set.
[in] coord coordinates.
[in] coordIndex coordinate indices.
[in] colorPerVertex whether colors are applied per-vertex or per- face.
[in] color colors.
[in] colorIndex color indices.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_point_set ( const geometry_node n,
const std::vector< vec3f > &  coord,
const std::vector< color > &  color 
) [private, virtual]

Insert a point set into a display list.

Parameters:
[in] n the geometry_node corresponding to the point set.
[in] coord points.
[in] color colors.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_shell ( const geometry_node n,
unsigned int  mask,
const std::vector< vec3f > &  coord,
const std::vector< int32 > &  coord_index,
const std::vector< color > &  color,
const std::vector< int32 > &  color_index,
const std::vector< vec3f > &  normal,
const std::vector< int32 > &  normal_index,
const std::vector< vec2f > &  tex_coord,
const std::vector< int32 > &  tex_coord_index 
) [private, virtual]

Insert a shell into a display list.

Parameters:
[in] n the geometry_node corresponding to the shell.
[in] mask 
[in] coord coordinates.
[in] coord_index coordinate indices.
[in] color colors.
[in] color_index color indices.
[in] normal normals.
[in] normal_index normal indices.
[in] tex_coord texture coordinates.
[in] tex_coord_index texture coordinate indices.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_sphere ( const geometry_node n,
float  radius 
) [private, virtual]

Insert a sphere into a display list.

Parameters:
[in] n the geometry_node corresponding to the sphere.
[in] radius sphere radius.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_dir_light ( float  ambientIntensity,
float  intensity,
const color color,
const vec3f direction 
) [private, virtual]

Insert a directional light into a display list.

Parameters:
[in] ambientIntensity ambient intensity.
[in] intensity intensity.
[in] color color.
[in] direction direction.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_point_light ( float  ambientIntensity,
const vec3f attenuation,
const color color,
float  intensity,
const vec3f location,
float  radius 
) [private, virtual]

Insert a point light into a display list.

Parameters:
[in] ambientIntensity ambient intensity.
[in] attenuation attenuation.
[in] color color.
[in] intensity intensity.
[in] location location.
[in] radius radius.
Todo:
Only objects within radius should be lit by each PointLight. Test each object drawn against each point light and enable the lights accordingly? Get light and geometry into consistent coordinates first.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_spot_light ( float  ambientIntensity,
const vec3f attenuation,
float  beamWidth,
const color color,
float  cutOffAngle,
const vec3f direction,
float  intensity,
const vec3f location,
float  radius 
) [private, virtual]

Insert a point light into a display list.

Parameters:
[in] ambientIntensity ambient intensity.
[in] attenuation attenuation.
[in] beamWidth beam width.
[in] color color.
[in] cutOffAngle cut-off angle.
[in] direction direction.
[in] intensity intensity.
[in] location location.
[in] radius radius.
Todo:
Same comments as for PointLight apply here.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_remove_object ( const node ref  )  [private, virtual]

Remove an object from the display list.

Parameters:
[in] ref object handle.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_enable_lighting ( bool  val  )  [private, virtual]

Enable/disable lighting.

Parameters:
[in] val whether lighting should be enabled.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_set_color ( const color rgb,
float  a = 1.0 
) [private, virtual]

Set the color.

Parameters:
[in] rgb red, green, and blue components.
[in] a alpha (transparency) component.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_set_fog ( const color color,
float  visibilityRange,
const char *  type 
) [private, virtual]

Set the fog.

Parameters:
[in] color fog color.
[in] visibilityRange the distance at which objects are fully obscured by fog.
[in] type fog type.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_set_material ( float  ambientIntensity,
const color diffuseColor,
const color emissiveColor,
float  shininess,
const color specularColor,
float  transparency 
) [private, virtual]

Set the material.

Parameters:
[in] ambientIntensity ambient intensity.
[in] diffuseColor diffuse color.
[in] emissiveColor emissive color.
[in] shininess shininess.
[in] specularColor specular color.
[in] transparency transparency.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_set_material_mode ( size_t  tex_components,
bool  geometry_color 
) [private, virtual]

Set the material mode.

Note:
This hack is necessary because setting the color mode needs to know about the appearance (presence & components of texture) and the geometry (presence of colors). Putting this stuff in either insert_texture or insert_<geometry> causes problems when the texture or geometry node is USE'd with a different context.
Parameters:
[in] tex_components texture components.
[in] geometry_color geometry color.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_set_sensitive ( node object  )  [private, virtual]

Indicate that a node should be sensitive to the pointing device.

Parameters:
[in] object a node.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_insert_texture ( const texture_node n,
bool  retainHint = false 
) [private, virtual]

Create a texture object.

Parameters:
[in] n texture.
[in] retainHint whether the texture is likely to be reused.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_remove_texture_object ( const texture_node ref  )  [private, virtual]

Remove a texture from the display list.

Parameters:
[in] ref texture handle.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_set_texture_transform ( const vec2f center,
float  rotation,
const vec2f scale,
const vec2f translation 
) [private, virtual]

Set the texture transform.

Texture coordinate transform Tc' = -C x S x R x C x T x Tc

Parameters:
[in] center center.
[in] rotation rotation.
[in] scale scale.
[in] translation translation.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_set_viewpoint ( const vec3f position,
const openvrml::rotation orientation,
float  avatarSize,
float  visibilityLimit 
) [private, virtual]

Set the viewpoint.

Parameters:
[in] position position.
[in] orientation orientation.
[in] avatarSize avatar size.
[in] visibilityLimit visiblity limit.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_transform ( const mat4f mat  )  [private, virtual]

Multiply the current modelview matrix by mat.

Parameters:
[in] mat a matrix.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_transform_points ( size_t  nPoints,
vec3f point 
) const [private, virtual]

Transform points by the current modelview matrix.

Parameters:
[in] nPoints number of points.
[in] point pointer to the first point in an array.

Implements openvrml::viewer.

void openvrml::gl::viewer::do_draw_bounding_sphere ( const bounding_sphere bs,
bounding_volume::intersection  intersection 
) [private, virtual]

Draw a bounding sphere.

Used for debugging view culling. Probably should be draw_bounding_volume and handle axis_aligned_bounding_boxes as well.

Parameters:
[in] bs a bounding sphere; if max, will not be drawn
[in] intersection one of the bvolume intersection test constants, or 4 to draw in unique way. (useful for debugging)

Implements openvrml::viewer.

void openvrml::gl::viewer::do_post_redraw (  )  [private, pure virtual]

Called to indicate to the windowing system that a redraw is necessary.

void openvrml::gl::viewer::do_set_cursor ( cursor_style  c  )  [private, pure virtual]

Called to set the cursor style.

Parameters:
[in] c cursor style identifier.

void openvrml::gl::viewer::do_swap_buffers (  )  [private, pure virtual]

Called to indicate to the windowing system that the front and back buffers should be swapped.

void openvrml::gl::viewer::do_set_timer ( double  interval  )  [private, pure virtual]

Set a delay.

Parameters:
[in] interval milliseconds to delay.


Member Data Documentation

Indicate whether OpenGL has been initialized for rendering.

bool openvrml::gl::viewer::blend [protected]

Indicate whether alpha blending is enabled.

bool openvrml::gl::viewer::lit [protected]

Indicate whether lighting is enabled.

Indicate whether texture mapping is enabled.

Indicate whether wireframe mode is enabled.

size_t openvrml::gl::viewer::win_width [protected]

Window width.

Window height.

Background color.

size_t openvrml::gl::viewer::objects [protected]

Number of objects.

Number of nested objects.

GLUtesselator * openvrml::gl::viewer::tesselator [protected]

GLU tesselation object.

size_t openvrml::gl::viewer::sensitive [protected]

Count of sensitive nodes.

Count of active sensitive nodes.

Count of sensitive nodes the mouse is over.

openvrml::node * openvrml::gl::viewer::sensitive_object[openvrml::gl::viewer::maxsensitive] [protected]

Sensitive nodes.

Indicate whether the renderer is in select mode.

double openvrml::gl::viewer::select_z [protected]

Window z-coordinate of last selection.

light_info for the lights in the scene.

Mouse drag start x-coordinate.

Mouse drag start y-coordinate.

Whether the viewer is in the process of rotating.

Whether the viewer is in the process of scaling.

Whether the viewer is in the process of translating.

Whether to draw bounding spheres.

Updated at the end of redraw with the time redraw took to execute.

Rendering time for the previous cycle.