Home | Download | Screen shots | Discussion | Documentation |
---|
Inheritance diagram for openvrml::gl::viewer:
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 (openvrml::browser &b) | |
Construct a viewer for the specified browser. | |
virtual | ~viewer () |
Destroy. | |
virtual rendering_mode | mode () |
Rendering mode. | |
virtual double | frame_rate () |
Frame rate. | |
virtual void | reset_user_navigation () |
Reset the user view to the position and orientation of the currently bound Viewpoint node. | |
virtual object_t | begin_object (const char *id, bool retain) |
Begin a display list. | |
virtual void | end_object () |
End of group scope. | |
virtual object_t | insert_background (const std::vector< float > &groundAngle, const std::vector< color > &groundColor, const std::vector< float > &skyAngle, const std::vector< color > &skyColor, size_t *whc=0, unsigned char **pixels=0) |
Insert a background into a display list. | |
virtual object_t | insert_box (const vec3f &size) |
Insert a box into a display list. | |
virtual object_t | insert_cone (float height, float radius, bool bottom, bool side) |
Insert a cone into a display list. | |
virtual object_t | insert_cylinder (float height, float radius, bool bottom, bool side, bool top) |
Insert a cylinder into a display list. | |
virtual object_t | insert_elevation_grid (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 object_t | insert_extrusion (unsigned int, 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 object_t | insert_line_set (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 object_t | insert_point_set (const std::vector< vec3f > &coord, const std::vector< color > &color) |
Insert a point set into a display list. | |
virtual object_t | insert_shell (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 object_t | insert_sphere (float radius) |
Insert a sphere into a display list. | |
virtual object_t | insert_dir_light (float ambientIntensity, float intensity, const color &color, const vec3f &direction) |
Insert a directional light into a display list. | |
virtual object_t | 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 object_t | 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 object_t | insert_reference (object_t existing_object) |
Insert a reference to an existing object into a display list. | |
virtual void | remove_object (object_t ref) |
Remove an object from the display list. | |
virtual void | enable_lighting (bool) |
Enable/disable lighting. | |
virtual void | set_color (const color &rgb, float a=1.0) |
Set the color. | |
virtual void | set_fog (const color &color, float visibilityRange, const char *type) |
Set the fog. | |
virtual void | set_material (float ambientIntensity, const color &diffuseColor, const color &emissiveColor, float shininess, const color &specularColor, float transparency) |
Set the material. | |
virtual void | set_material_mode (size_t tex_components, bool geometry_color) |
Set the material mode. | |
virtual void | set_sensitive (node *object) |
Indicate that a node should be sensitive to the pointing device. | |
virtual void | scale_texture (size_t w, size_t h, size_t newW, size_t newH, size_t nc, unsigned char *pixels) |
Scale a texture. | |
virtual texture_object_t | insert_texture (size_t w, size_t h, size_t nc, bool repeat_s, bool repeat_t, const unsigned char *pixels, bool retainHint=false) |
Create a texture object. | |
virtual void | insert_texture_reference (texture_object_t ref, size_t components) |
Insert a texture into the display list from an existing handle. | |
virtual void | remove_texture_object (texture_object_t) |
Remove a texture from the display list. | |
virtual void | set_texture_transform (const vec2f ¢er, float rotation, const vec2f &scale, const vec2f &translation) |
Set the texture transform. | |
virtual void | set_viewpoint (const vec3f &position, const openvrml::rotation &orientation, float fieldOfView, float avatarSize, float visibilityLimit) |
Set the viewpoint. | |
virtual void | transform (const mat4f &mat) |
Multiply the current modelview matrix by mat . | |
virtual void | transform_points (size_t nPoints, vec3f *point) const |
Transform points by the current modelview matrix. | |
virtual void | draw_bounding_sphere (const bounding_sphere &bs, bounding_volume::intersection intersection) |
Draw a bounding sphere. | |
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 | |
virtual void | post_redraw ()=0 |
Called to indicate to the windowing system that a redraw is necessary. | |
virtual void | set_cursor (cursor_style c)=0 |
Called to set the cursor style. | |
virtual void | swap_buffers ()=0 |
Called to indicate to the windowing system that the front and back buffers should be swapped. | |
virtual void | set_timer (double interval)=0 |
Set a delay. | |
void | initialize () |
Initialize. | |
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. | |
texture_object_t | insert_subtexture (size_t xoffset, size_t yoffset, size_t w, size_t h, size_t whole_w, size_t whole_h, size_t nc, bool repeat_s, bool repeat_t, const unsigned char *pixels, bool retainHint=false) |
Insert a subcomponent of a texture as an OpenGL texture. | |
bool | checkSensitive (int x, int y, event_type event) |
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. | |
quatf | rotation |
Current rotation. | |
bool | rotation_changed |
Indicate the rotation has changed. | |
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. |
A window-system specific subclass needs to redefine the pure virtual methods.
|
|
|
|
|
Cursor style.
|
|
Event type.
|
|
Light type.
|
|
Construct a viewer for the specified browser.
Reimplemented from openvrml::viewer. |
|
Destroy.
Implements openvrml::viewer. |
|
Reset per-geometry attributes. Called after the appearance/material has been set. |
|
Begin a display list. begin_object/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.
Implements openvrml::viewer. |
|
Check for pickable objects. |
|
Draw a bounding sphere. Used for debugging view culling. Probably should be draw_bounding_volume and handle axis_aligned_bounding_boxes as well.
Implements openvrml::viewer. |
|
Enable/disable lighting.
Implements openvrml::viewer. |
|
Reset attributes changed during geometry insertion.
|
|
End of group scope.
Implements openvrml::viewer. |
|
Frame rate.
Implements openvrml::viewer. |
|
Handle mouse button up/down.
|
|
Handle keypresses.
|
|
Handle mouse dragging.
|
|
Initialize.
|
|
Handle an event generated from user input.
|
|
Insert a background into a display list.
Implements openvrml::viewer. |
|
Insert a box into a display list.
Implements openvrml::viewer. |
|
Insert a cone into a display list.
Implements openvrml::viewer. |
|
Insert a cylinder into a display list.
Implements openvrml::viewer. |
|
Insert a directional light into a display list.
Implements openvrml::viewer. |
|
Insert an elevation grid into a display list.
Implements openvrml::viewer. |
|
Insert an extrusion into a display list.
|
|
Insert a line set into a display list.
Implements openvrml::viewer. |
|
Insert a point light into a display list.
Implements openvrml::viewer. |
|
Insert a point set into a display list.
Implements openvrml::viewer. |
|
Insert a reference to an existing object into a display list.
Implements openvrml::viewer. |
|
Insert a shell into a display list.
Implements openvrml::viewer. |
|
Insert a sphere into a display list.
Implements openvrml::viewer. |
|
Insert a point light into a display list.
Implements openvrml::viewer. |
|
Insert a subcomponent of a texture as an OpenGL texture. Pixels are lower left to upper right by row.
|
|
Create a texture object.
Implements openvrml::viewer. |
|
Insert a texture into the display list from an existing handle.
Implements openvrml::viewer. |
|
Rendering mode.
Implements openvrml::viewer. |
|
Called to indicate to the windowing system that a redraw is necessary.
|
|
Redraw the scene.
|
|
Remove an object from the display list.
Implements openvrml::viewer. |
|
Remove a texture from the display list.
Implements openvrml::viewer. |
|
Reset the user view to the position and orientation of the currently bound Viewpoint node.
Implements openvrml::viewer. |
|
Resize the viewport.
|
|
Rotate the user view.
|
|
Scale a texture. Scale an image to make sizes powers of two. This puts the data back into the memory pointed to by pixels, so there better be enough.
Implements openvrml::viewer. |
|
Set the color.
Implements openvrml::viewer. |
|
Called to set the cursor style.
|
|
Set the fog.
Implements openvrml::viewer. |
|
Set the material.
Implements openvrml::viewer. |
|
Set the material mode.
Implements openvrml::viewer. |
|
Indicate that a node should be sensitive to the pointing device.
Implements openvrml::viewer. |
|
Set the texture transform. Texture coordinate transform Tc' = -C x S x R x C x T x Tc
Implements openvrml::viewer. |
|
Set a delay.
|
|
Set the viewpoint.
|
|
Translate the user view.
|
|
Called to indicate to the windowing system that the front and back buffers should be swapped.
|
|
Multiply the current modelview matrix by
Implements openvrml::viewer. |
|
Transform
Implements openvrml::viewer. |
|
Update the scene. update is called from a timer callback and from checkSensitive.
|
|
Zoom.
|
|
Count of active sensitive nodes.
|
|
Background color.
|
|
Mouse drag start x-coordinate.
|
|
Mouse drag start y-coordinate.
|
|
Indicate whether alpha blending is enabled.
|
|
Whether to draw bounding spheres.
|
|
Indicate whether OpenGL has been initialized for rendering.
|
|
light_info for the lights in the scene.
|
|
Indicate whether lighting is enabled.
|
|
Modelview matrix stack.
|
|
Number of nested objects.
|
|
Number of objects.
|
|
Count of sensitive nodes the mouse is over.
|
|
Updated at the end of redraw with the time redraw took to execute.
|
|
Rendering time for the previous cycle.
|
|
Whether the viewer is in the process of rotating.
|
|
Current rotation.
|
|
Indicate the rotation has changed.
|
|
Whether the viewer is in the process of scaling.
|
|
Indicate whether the renderer is in select mode.
|
|
Window z-coordinate of last selection.
|
|
Count of sensitive nodes.
|
|
Sensitive nodes.
|
|
GLU tesselation object.
|
|
Indicate whether texture mapping is enabled.
|
|
Whether the viewer is in the process of translating.
|
|
Window height.
|
|
Window width.
|
|
Indicate whether wireframe mode is enabled.
|