Streamlining HOOPS Visualize
Developers who have access to HOOPS Visualize readable source can build a scaled-down version of HOOPS Visualize. Using compiler flags to stub out pieces of functionality that are not needed (for example, -DDISABLE_SHOW
in the CFLAGS
line), a streamlined version of Visualize can be compiled.
Functionality Breakout Options
This section will provide details on the areas of core functionality that can be individually stubbed out, along with the estimated corresponding HOOPS Visualize library size reduction.
The core functionality breakout list covers items that can be broken outas separate components. If all the items are broken out, the size of the HOOPS Visualize library reduces to ~1MB. This size is largely a function of the core architecture of HOOPS Visualize which utilizes sophisticated data structures and scaffold database/rendering/attribute logic to enable support of all these powerful components. Further reduction of the library size causes a run-in with the 80/20 rule (except in this case it is more like the 95/5 rule). That is, significant additional effort in stripping out functionality would result in minimal incremental size reduction.
1. DISABLE_RASTERIZER - Software Z-Buffer/Frame-Buffer Pipeline/Image Driver - 130k
This involves removal of all logic to perform software rasterization of the scene, with or without a z-buffering stage, including lookup tables, dc_z functions, etc… The Visualize software z-buffer and software-frame buffer logic is no longer available to produce non-OpenGL based interactive rendering of complex 3d, shaded scenes.
2. DISABLE_SORTING_HSR - Sorting-Based HSR Algorithms - 25k
These include algorithms such as hidden-line-removal and painter’s. This prevents HLR renderings, or mixed-mode (vector and raster) rendering of scenes to hardcopy devices such as a native GDI Printer or Clipboard DC, Postscript file/device, etc. If you wanted to ensure transparent objects were rendered correctly you would need to include at least one sorting algorithm (probably z-sort at a cost of ~ 8K).
If Item 1 is also stubbed out, then HOOPS Visualize would not be able to rendering a complex scene to a hardcopy device. (Either it needs to be sorted and drawn back-to-front, or it needs to be rendered to an offscreen buffer using a szb/sfb. A remaining option would be for the developer to manually grab the screen image (or have OpenGL render to an offscreen image) and the blit that image to the hardcopy device.
3. DISABLE_METAFILE - 40k
Reading/writing HMF files would be unsupported.
4. DISABLE_BITSTREAM - Font Engine - 150k
TrueType, Double Byte, and Unicode fonts would no longer be supported.
5. DISABLE_TEXTURING - 30k
This is the texturing software implementation and support code. If disabled, then objects could not be textured.
6. DISABLE_BIT_RASTERS, DISABLE_GRAY8_RASTERS, DISABLE_MAPPED16_RASTERS, DISABLE_MAPPED8_RASTERS - 20K
Certain display modes (8-bit, 16-bit; mapped and grayscale)
7. DISABLE_DRAW_3D - Non-Essential Code in Standard_3D-Functions - 50k
Any higher-level HOOPS Visualize attributes that apply to the visual appearance of entities (specific line-patterns, face patterns, marker symbols, etc.) that are not supported by OpenGL would no longer be supported.
8. DISABLE_SHOW - Show Routines - 270k
The developer would not be able to query attributes in the HOOPS Visualize scene-graph. (Typically this would be done within an application that provides editing capabilities.)
9. DISABLE_UNSET - UnSet and UnSet_One Routines - 35k
The developer would not be able to UnSet attributes in the HOOPS Visualize scene-graph.
10. DISABLE_GEOMETRY_EDIT / DISABLE_GEOMETRY_SHOW - 40k
The developer would not be able to query/edit geometry primitives stored in the HOOPS Visualize scene-graph. (Typically this would be done within an application that provides editing capabilities.)
11. DISABLE_DEFINED_FONTS - 10k
The developer could not define custom fonts or use HOOPS Visualize internal stroked fonts.
12. DISABLE_STYLE_SEGMENT - 30k
Visualize-style input handling would not be available. Typically this is only used in standalone demos.
13. DISABLE_LOD_GENERATION - 25k
Levels-of-detail for HOOPS Visualize shell primitives could no longer be generated.
14. DISABLE_SEARCH - Scene-Graph Searching Support - 30k
Developer could not search for open segments, color names, contents, aliases, textures, etc.
15. DISABLE_COLOR_NAMES - Named Color Handling - 20k
Developer could not set/show colors using HOOPS Visualize’s built in color names, or create their own color names.
16. DISABLE_DATABASE_EDIT - Basic Database Routines - 25k
Developer could not manipulate the HOOPS Visualize scene-graph nodes (segments), such as copy, style, move, rename, flush, etc.
17. DISABLE_COMPUTE - 25k
Developer would not have access to vector and matrix math utility routines, shell optimization routines, etc
18. DISABLE_SELECTION/DISABLE_POLY_SELECTION - 40k
Developer could not perform selection using aperture, window, or volume selection methods / polygon or polyline selection.
10. DISABLE_CALLBACKS - 20k
The HOOPS Visualize I.M. API is no longer available. Developer can no longer make traversal time draw decisions, or utilize the immediate-mode type HIC routines to directly draw to the screen.
20. DISABLE_CODE_GENERATION - 15k
Developer could not use Code Generation system option.
21. DISABLE_GEOMETRY_ATTRIBUTES
Developers could not manipulate local face, vertex, and edge attributes from open shells and meshes.
22. DISABLE_EVENTS
HOOPS Visualize event handling routines. Developer could not use routines such as HC_Await_Event
.
23. DISABLE_TABLE_LOOKUPS
Developer would forfeit certain performance optimizations during operations such as normal vector calculations.
24. DISABLE_SPECIAL_OPTIMIZATIONS
Developer would forfeit certain performance optimizations during some procedures, such as the use of Show_Existence
.
25. DISABLE_PHONG
Developer would forfeit the use of Phong shading and software texturing.
26. DISABLE_COLOR_MAPS - Color Index Interpolation, Mapped Images
Developer would forfeit the use of color index interpolation or color maps.
27. DISABLE_PARTIAL_ERASE
Developer would forfeit the use of partial erase.
28. DISABLE_INSTANCING
Developer would forfeit the use of partial erase or sub-windows within included segments.
29. DISABLE_CUT_GEOMETRY
Disables only HOOPS Visualize’s internal implementation of capping polygon generation, leaving “cut edges” callbacks intact.
30. DISABLE_SIMPLE_SHADOW
Disables HOOPS Visualize’s internal implementation of fake shadows