Home | Download | Screen shots | Discussion | Documentation
--- | --- | --- | --- | ---

# 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:
[legend]

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.
node * | sensitive_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.

enum openvrml::gl::viewer::light_type

Light type.

Enumerator:

  light_unused | Unused.
  light_directional | Directional.
  light_positional | Positional.

enum openvrml::gl::viewer::event_type

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.

enum openvrml::gl::viewer::cursor_style`[protected]`

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.

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.

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

openvrml::gl::viewer::modelview_matrix_stack openvrml::gl::viewer::modelview_matrix_stack_`[protected]`

Modelview matrix stack.

bool openvrml::gl::viewer::gl_initialized`[protected]`

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.

bool openvrml::gl::viewer::texture`[protected]`

Indicate whether texture mapping is enabled.

bool openvrml::gl::viewer::wireframe`[protected]`

Indicate whether wireframe mode is enabled.

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

Window width.

size_t openvrml::gl::viewer::win_height`[protected]`

Window height.

color openvrml::gl::viewer::background`[protected]`

Background color.

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

Number of objects.

size_t openvrml::gl::viewer::nested_objects`[protected]`

Number of nested objects.

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

GLU tesselation object.

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

Count of sensitive nodes.

size_t openvrml::gl::viewer::active_sensitive`[protected]`

Count of active sensitive nodes.

size_t openvrml::gl::viewer::over_sensitive`[protected]`

Count of sensitive nodes the mouse is over.

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

Sensitive nodes.

bool openvrml::gl::viewer::select_mode`[protected]`

Indicate whether the renderer is in select mode.

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

Window z-coordinate of last selection.

openvrml::gl::viewer::light_info openvrml::gl::viewer::light_info_[viewer::max_lights]`[protected]`

light_info for the lights in the scene.

int openvrml::gl::viewer::beginx`[protected]`

Mouse drag start x-coordinate.

int openvrml::gl::viewer::beginy`[protected]`

Mouse drag start y-coordinate.

bool openvrml::gl::viewer::rotating`[protected]`

Whether the viewer is in the process of rotating.

bool openvrml::gl::viewer::scaling`[protected]`

Whether the viewer is in the process of scaling.

bool openvrml::gl::viewer::translating`[protected]`

Whether the viewer is in the process of translating.

bool openvrml::gl::viewer::draw_bounding_spheres`[protected]`

Whether to draw bounding spheres.

double openvrml::gl::viewer::render_time`[protected]`

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

double openvrml::gl::viewer::render_time1`[protected]`

Rendering time for the previous cycle.