| United States-English |
|
|
|
![]() |
Starbase Display List Programmer's Manual: HP 9000 Series 700 Computers > Chapter 5 Displaying and RefreshingGetting Your Display List Image Onto the Screen |
|
The process of displaying segments has been lightly addressed in previous chapters; in this section, we'll get into more detail. Device-dependent display lists are display lists that have been associated with a particular device during the call to gopen; for example[13],
and 〈driver〉="hpgcrx". To dump the image in the display list onto the display, you must specify two things:
These are the refresh routines. The refresh_segment and refresh_segment_hsr routines display the specified segment network on the associated display device. The syntax is:
where:
The refresh_segment_hsr routine is similar in functionality to the refresh_segment routine, but it is for 3D applications where hidden surfaces are to be removed (the "hsr" stands for "hidden surface removal"). For best results from the Z-buffer hidden-surface removal algorithm, the segment (or segment network) specified in the call to refresh_segment_hsr should contain the entire scene. In other words, there should only be a single call to refresh_segment_hsr for each complete image. Hidden-surface removal must already have been activated (via hidden_surface) before calling refresh_segment_hsr. A call to refresh_element is to elements what a call to refresh_segment is to segments. If the element is a "simple" element, refresh_element displays the current element of the currently open segment on the display device associated with the specified display list. If the element is a "calling" element (call_segment, cond_call_segment, execute_segment, and cond_execute_segment), refresh_element displays the entire referenced subtree, provided the associated conditions (if any) are satisfied. The syntax is:
where:
The current element should not be the null element at the beginning of the segment; if it is, an error occurs. Calling refresh_element does not increment the element pointer; if you want it to be incremented, call set_ele_ptr_relative with an argument of 1. Device-dependent Display Lists are display lists that have not been associated with any particular device during the call to gopen. You open a device-independent display list by assigning 〈path〉 equal to "〈dev〉/null"[14] and 〈driver〉 equal to "display_list". To dump the image in a device-independent display list onto a display, you must specify three things:
These are the display routines. The display_segment and display_segment_hsr routines display the specified segment network of a device-independent display list on the specified display device. The syntax is:
where:
The display_segment routine displays the segment network 〈segno〉, in the display list 〈fildes〉, on the device 〈devdes〉. The display_segment_hsr routine is similar in functionality to the display_segment routine, but it is for 3D applications where hidden surfaces are to be removed (the hsr stands for "hidden surface removal"). For best results from the Z-buffer hidden-surface removal algorithm, the segment (or segment network) specified in the call to display_segment_hsr should contain the entire scene. In other words, there should only be a single call to display_segment_hsr for each complete image. Hidden-surface removal must already have been activated (via hidden_surface) before calling display_segment_hsr. A call to display_element is to elements what a call to display_segment is to segments. If the element is a "simple" element, display_element displays the current element of the currently open segment on the specified display device. If the element is a "calling" element (call_segment, cond_call_segment, execute_segment, and cond_execute_segment), display_element displays the entire referenced subtree on the specified display device, provided the associated conditions (if any) are satisfied. The syntax is:
where:
The current element should not be the null element at the beginning of the segment; if it is, an error occurs. Calling display_element does not increment the element pointer; if you want it to be incremented, call set_ele_ptr_relative with an argument of 1. |
|||||||||||||||||||||||||||||||
|
|||||||||||||||