Vega  FAQ's FAQs 101 thru 150

FAQs 1 thru 51 square72_blue.gif FAQs 51 thru 100 square72_blue.gif FAQs 101 thru 150 square72_blue.gif FAQs 151 thru 200 square72_blue.gif FAQs 201 thru 250 square72_blue.gif FAQs 251 thru 300

     

  1. What Multi-threading support does Vega Provide
  2. What are the Differences between Vega for Irix and Vega NT
  3. What Threads or Processes does Vega Create
  4. What Process/Thread combinations are in Vega
  5. Were are the Vega Code Examples
  6. Are there any online Vega Code Sources or Examples
  7. Were are the Vega Man Pages for Windows
  8. Does Vega Support Sound
  9. What is Vega Audio
  10. Does Vega support DIS
  11. Does Vega support HLA
  12. What is DIS
  13. What is HLA
  14. How can I get the Time information in my Application
  15. Can I control the simulation time
  16. What is the Difference between a vgPlayer and vgObserver
  17. Why do I only get one key press event with vgGetWinKey()
  18. How can I tell when my sound has Finished with vgAudio
  19. What is a Z Isector
  20. What is a ZPR Isector
  21. What is a HAT Isector
  22. What is a Tripod Isector
  23. What is a LOS Isector
  24. What is a BUMP Isector
  25. What is a XYZPR Isector

 

  1. What is a Volume Isector
  2. Does Vega support OpenFlight version 15.8 files
  3. Does Vega read OpenFlight Light Sources
  4. Does Vega Support TIFF images
  5. What image/texture formats does Vega Support
  6. How can I convert my Textures to Vega supported Formats
  7. Why can't I see my Gif Textures in Vega
  8. How can I get the position of my Navigator
  9. Why won't my vgObject change Position when I set a new position
  10. Why can't I change the Scale of my vgObject
  11. How Can I set the Isector mask on Part of my Object
  12. Can I use the OpenFlight API in Vega
  13. Why can I not change the Fog properties in my Vega App
  14. Are Meshes supported in Vega
  15. How can I pause a vgNavigator
  16. How can I change the colour of vgNavigator's path
  17. How can I switch from a Motion model to a Navigator
  18. How can I switch from a Navigator to a Motion Model
  19. Why do Navigator use so much Memory
  20. Why does my frame rate drop when I change my Navigator
  21. How do I attach a vgObject to a vgNavigator
  22. How do I toggle the render of a vgNavigator's path On or Off
  23. How can I set the Speed of a Particular Control Point in a vgNavigator
  24. How can I set a constant overall speed on a vgNavigator
  25. How to Retrieve the Speed of a vgNavigator

Faq's

 

* 101 *  What Multi-threading Support does Vega Provide up

     

    a Vega  program is a single Windows process that has multiple threads in its context.  A thread is the basic unit to which the operating system allocates processor time. To maximize performance on a given machine, the user can configure Vega to run in a variety of multithreading modes.

    The three main Vega threads  application (APP), CULL, DRAW  can be performed as a single thread, as two threads in any combination, or as three separate threads. You may also select to have a separate thread for intersection processing, a thread for database loading, and another thread for light point calculations. The database loading thread is only needed when paging geometry using Large Area Database Management (LADBM), or when doing it yourself.

    To select a multithreading mode, use vgProp to set VGSYS_MPMODE to one of the following:

     

    • VGSYS_MPDEFAULT Let the system determine the best configuration for CPUs on the target machine. In this case, you may not get an intersection or database thread, even though you request it.

    • VGSYS_MP0 [DEFAULT] one single thread for app, cull, and draw.

    • VGSYS_MP1 App and cull in one thread, draw in a separate thread.

    • VGSYS_MP3 Two threads, one for app and the other for both cull and draw.

    • VGSYS_MP4 Three threads, one for app, one for cull, one for draw

     

    The user may control which processors (CPUs) the threads run on. Draw CPUs and priorities are set as properties of a window. Cull CPUs and priorities are set as properties of a channel. Light point CPUs and priorities are also set as properties of a channel.

    Set the app CPU by setting the vgSystem property VGSYS_APPCPU to the appropriate CPU number. The CPU numbers are in the range 0 to the number of CPUs on the system minus one. The default value -1 means no particular CPU is assigned, i.e., the operating system will determine which CPU to use each time that thread runs. 

    If a CPU number is specified that does not exist on the particular machine that the Vega application is running on, a warning is logged, and it is treated as if a value of -1 was specified.

    • The user may also control the scheduling priority of the thread. The priority of each thread is determined by the following criteria:

    • The Vega Priority Class of the Vega process

    • The Vega Priority Level of the thread within the Vega Priority Class of the Vega process

    • The Priority Class and Priority Level are combined to form the base priority of a thread.

    • The Priority Class of the Vega process is a value in the range 32-39, with 32 being highest

    Vega process priority classes.

    Vega Priority
    Class

    Corresponding Windows 
    Priority Class

    Meaning

    31-32

    REALTIME_PRIORITY_CLASS 

    Specify this class for a process that has the highest possible priority.

    The threads of the process preempt the threads of all other processes, including operating system processes performing important tasks.

    For example, a real-time process that executes for more than a very brief interval can cause disk caches not to flush or cause the mouse to be unresponsive. 

    33-34

    HIGH_PRIORITY_CLASS 

    Specify this class for a process that performs time-critical tasks that must be executed immediately. The threads of the process preempt the threads of normal or idle priority class processes. 

    Use extreme care when using the high-priority class, because a high-priority class application can use nearly all available CPU time.  
     

    35-36

    NORMAL_PRIORITY_CLASS 

    Specify this class for a process with no special scheduling needs. 

    37-39

    IDLE_PRIORITY_CLASS 

    Specify this class for a process whose threads run only when the system is idle. The threads of the process are preempted by the threads of any process running in a higher priority class.

     
    The Vega System property VGSYS_VEGAPRI is used to select the Vega  process priority class.  Note that this property is only available under VegaNT , it is not supported and does not exist for Vega for Irix.

    The Vega thread Priority Level has a range of 32 to 39, with 32 being the highest. The table below explains the meanings of the Vega thread priority level values. Refer to the sections on SetThreadPriority and Scheduling Priorities in the WIN32 Function manual for more information on the thread priority levels.
     

    Vega thread priority levels.

    Vega  priority level

    Corresponding Windows thread
    priority level

    Meaning

    32

    THREAD_PRIORITY_TIME_CRITICAL

    Indicates a base priority level of 15 for IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, or HIGH_PRIORITY_CLASS processes, and a base priority level of 31 for REALTIME_PRIORITY_CLASS processes

    33

    THREAD_PRIORITY_HIGHEST

    Indicates 2 points above normal priority for the priority class 

    34

    THREAD_PRIORITY_ABOVE_NORMAL

    Indicates 1 point above normal priority for the priority class

    35

    THREAD_PRIORITY_NORMAL

    Indicates normal priority for the priority class

    36

    THREAD_PRIORITY_BELOW_NORMAL

    Indicates 1 point below normal priority for the priority class

    37-39

    THREAD_PRIORITY_LOWEST

    Indicates 2 points below normal priority for the priority class


    Note:

    For cross-platform compatibility, the numerical values used to specify the Vega priority classes and thread levels differ from the actual numerical values of those items used by Windows. Vega NT will automatically translate from the above numerical scheme to the correct values required by Windows

 

* 102 *   What are the Differences between Vega for Irix and Vega NT   up

     
    One of the main design goals for the Windows version of Vega was to help provide an easy migration of existing Vega applications on Irix over to the Vega NT and a PC platform, which Vega NT did achieve. Because of Vega's Irix heritage, several aspects of Vega will be familiar to users with Unix experience

    Some of the Irix conventions and methods may be slightly strange to experienced Windows users.  

    For examples in the case of VGWIN_DRAWPRI, priorities in Vega are still specified using a Unix-like scheme, where a numerical priority of 30 is highest priority, and larger numbers mean lower priorities. However, Windows uses a completely different numbering scheme for priorities. In cases like this, Vega NT  uses the original, mapping the Unix-like priorities to comparable Windows priorities behind the scenes.

    Another difference between Vega on Irix and Vega NT is apparent from the VGWIN_DRAWPRI example. On an Irix , Vega and OpenGL Performer will spawn separate Processes to split up the work in a simulation application.

    Under Vega NT thee separate processes are separate threads running under a single Vega NT Process. While in most cases the LynX GUI has been modified to reflect this change, the names of properties have not been changed, and so may seem slightly off in some cases.

    Vega for Irix  is layered on top of Irix's OpenGL Performer; In the Performer library, all data structures and routine names begin with a lower-case pf. The purpose of some Vega API calls are to return pointers to scene graph nodes so that user code can directly manipulate them.

    For example, the Vega API call vgGetDSPfObj  returns a pfNode* pointer. Vega NT has type deffed pfNode to be an appropriate data structure in the Jolt scene graph management library. There are many examples of where Vega NT defines a data structure similar to one defined in the Performer library, and for ease of porting, has type deffed this data structure to have the same name as the corresponding Performer data structures

    On Windows the  coordinates are specified the following the Performer convention, with the Y coordinate measured from the bottom of the screen, while Windows specifies Y coordinates from the top of the screen.

    When specifying directories or file names forward slashes can be used in anyplace that a backslash is normally used. Vega NT will translate to backslashes when needed

    When running Vega on an Irix  system, logging messages are sent to stdout, and  appear in the shell that started Vega.

    Under Vega NT, if the Vega application is a console application then the logging messages will appear on the console.

    However, Windows applications are not required to have a console. For "normal" Windows applications or MFC-based applications, Vega NT provides some additional API calls to create a console window for the logging messages (see vgWin.h)
     

* 103 *    What Threads or Processes does Vega Create  up


    Vega can create the following processes or threads listed below. Depending in your system you may have multiple draw.cull and isector processes or threads

    • APP  Generally where the applications code moves objects, triggers actions, etc
    • CULL Decides which geometry is visible in the viewing frustum
    • DRAW  Renders the visible geometry
    • ISECT Calculates intersections with the scene graph geometry
    • DATABASE Loads new geometry in from disk files
    • LPOINT Does the calculations necessary for rendering light points
    • INPUT Reads the Input devices Asynchronously


    On Irix OpenGL Performer will create an extra 2 processes

    • CLOCK The high performance simulation clock
    • COMPUTE An Asynchronously that can be used for expensive calculations

       

* 104 *   What Process/Thread combinations are in Vega up


    You can configure Vega to run in a variety of multi-thread/Process modes. There are three primary processes/threads in Vega: APP (application), CULL, and DRAW. These threads may be performed as a single thread or as a combination of the three. Vega provide the following process/thread combinations:

    Default

    Allow the system to determine optimum thread allocation

    Single Thread

    Single thread model

    App+Cull, Draw

    Application and Culling is in one thread, Draw is in another thread

    App, Cull+Draw

    Application is in one thread and the Cull and Draw in another thread

    App, Cull, Draw

    Three separate threads

    Display List Draw

    Single Thread model, but a display list is generated for the Draw function (Irix only)

    Overlapped Cull + Draw

    Three separate threads; Cull and Draw threads are overlapped (Irix only)

 

* 105 *   Where are the Vega Examples up

     

    Vega ships with set of Example programs and ADF's that are described in the Vega Programmers are typically installed to: