Path: blob/master/Resources/taoframework-2.1.0/bin/Tao.FreeGlut.xml
178 views
<?xml version="1.0"?>1<doc>2<assembly>3<name>Tao.FreeGlut</name>4</assembly>5<members>6<member name="T:Tao.FreeGlut.Glut">7<summary>8FreeGLUT (OpenGL Utility Toolkit) binding for .NET, implementing FreeGlut 2.4.0.9</summary>10</member>11<member name="F:Tao.FreeGlut.Glut.FREEGLUT_NATIVE_LIBRARY">12<summary>13Specifies FREEGLUT's native library archive.14</summary>15<remarks>16Specifies freeglut.dll everywhere; will be mapped via .config for mono.17</remarks>18</member>19<member name="F:Tao.FreeGlut.Glut.CALLING_CONVENTION">20<summary>21Specifies the calling convention.22</summary>23<remarks>24Specifies <see cref="F:System.Runtime.InteropServices.CallingConvention.Winapi"/>.25</remarks>26</member>27<member name="F:Tao.FreeGlut.Glut.FREEGLUT">28<summary>29FreeGLUT API marker.30</summary>31</member>32<member name="F:Tao.FreeGlut.Glut.FREEGLUT_VERSION_2_0">33<summary>34FreeGLUT API version marker.35</summary>36</member>37<member name="F:Tao.FreeGlut.Glut.GLUT_API_VERSION">38<summary>39GLUT API revision.40</summary>41<remarks>42<para>43GLUT_API_VERSION is updated to reflect incompatible GLUT API changes44(interface changes, semantic changes, deletions, or additions).45</para>46<para>47GLUT_API_VERSION=1 First public release of GLUT. 11/29/9448</para>49<para>50GLUT_API_VERSION=2 Added support for OpenGL/GLX multisampling, extension.51Supports new input devices like tablet, dial and button box, and Spaceball.52Easy to query OpenGL extensions.53</para>54<para>55GLUT_API_VERSION=3 glutMenuStatus added.56</para>57<para>58GLUT_API_VERSION=4 glutInitDisplayString, glutWarpPointer, glutBitmapLength,59glutStrokeLength, glutWindowStatusFunc, dynamic video resize subAPI,60glutPostWindowRedisplay, glutKeyboardUpFunc, glutSpecialUpFunc,61glutIgnoreKeyRepeat, glutSetKeyRepeat, glutJoystickFunc,62glutForceJoystickFunc (NOT FINALIZED!).63</para>64</remarks>65</member>66<member name="F:Tao.FreeGlut.Glut.GLUT_XLIB_IMPLEMENTATION">67<summary>6869</summary>70</member>71<member name="F:Tao.FreeGlut.Glut.GLUT_RGB">72<summary>73An alias for <see cref="F:Tao.FreeGlut.Glut.GLUT_RGBA"/>.74</summary>75</member>76<member name="F:Tao.FreeGlut.Glut.GLUT_RGBA">77<summary>78Bit mask to select an RGBA mode window. This is the default if neither79<see cref="F:Tao.FreeGlut.Glut.GLUT_RGB"/>, <i>GLUT_RGBA</i>, nor <see cref="F:Tao.FreeGlut.Glut.GLUT_INDEX"/> are80specified.81</summary>82</member>83<member name="F:Tao.FreeGlut.Glut.GLUT_INDEX">84<summary>85Bit mask to select a color index mode window. This overrides86<see cref="F:Tao.FreeGlut.Glut.GLUT_RGB"/> or <see cref="F:Tao.FreeGlut.Glut.GLUT_RGBA"/> if they are also87specified.88</summary>89</member>90<member name="F:Tao.FreeGlut.Glut.GLUT_SINGLE">91<summary>92Bit mask to select a single buffered window. This is the default if neither93<see cref="F:Tao.FreeGlut.Glut.GLUT_DOUBLE"/> or <i>GLUT_SINGLE</i> are specified.94</summary>95</member>96<member name="F:Tao.FreeGlut.Glut.GLUT_DOUBLE">97<summary>98Bit mask to select a double buffered window. This overrides99<see cref="F:Tao.FreeGlut.Glut.GLUT_SINGLE"/> if it is also specified.100</summary>101</member>102<member name="F:Tao.FreeGlut.Glut.GLUT_ACCUM">103<summary>104Bit mask to select a window with an accumulation buffer.105</summary>106</member>107<member name="F:Tao.FreeGlut.Glut.GLUT_ALPHA">108<summary>109Bit mask to select a window with an alpha component to the color buffer(s).110</summary>111</member>112<member name="F:Tao.FreeGlut.Glut.GLUT_DEPTH">113<summary>114Bit mask to select a window with a depth buffer.115</summary>116</member>117<member name="F:Tao.FreeGlut.Glut.GLUT_STENCIL">118<summary>119Bit mask to select a window with a stencil buffer.120</summary>121</member>122<member name="F:Tao.FreeGlut.Glut.GLUT_MULTISAMPLE">123<summary>124Bit mask to select a window with multisampling support. If multisampling is125not available, a non-multisampling window will automatically be chosen. Note:126both the OpenGL client-side and server-side implementations must support the127GLX_SAMPLE_SGIS extension for multisampling to be available.128</summary>129</member>130<member name="F:Tao.FreeGlut.Glut.GLUT_STEREO">131<summary>132Bit mask to select a stereo window.133</summary>134</member>135<member name="F:Tao.FreeGlut.Glut.GLUT_LUMINANCE">136<summary>137Bit mask to select a window with a "luminance" color model. This model138provides the functionality of OpenGL's RGBA color model, but the green and139blue components are not maintained in the frame buffer. Instead each pixel's140red component is converted to an index between zero and141<c>Glut.glutGet(Glut.GLUT_WINDOW_COLORMAP_SIZE) - 1</c> and looked up in a142per-window color map to determine the color of pixels within the window. The143initial colormap of <see cref="F:Tao.FreeGlut.Glut.GLUT_LUMINANCE"/> windows is initialized to144be a linear gray ramp, but can be modified with GLUT's colormap routines.145</summary>146</member>147<member name="F:Tao.FreeGlut.Glut.GLUT_LEFT_BUTTON">148<summary>149Left mouse button.150</summary>151</member>152<member name="F:Tao.FreeGlut.Glut.GLUT_MIDDLE_BUTTON">153<summary>154Middle mouse button.155</summary>156</member>157<member name="F:Tao.FreeGlut.Glut.GLUT_RIGHT_BUTTON">158<summary>159Right mouse button.160</summary>161</member>162<member name="F:Tao.FreeGlut.Glut.GLUT_DOWN">163<summary>164Mouse button down.165</summary>166</member>167<member name="F:Tao.FreeGlut.Glut.GLUT_UP">168<summary>169Mouse button up.170</summary>171</member>172<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F1">173<summary>174F1 function key.175</summary>176</member>177<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F2">178<summary>179F2 function key.180</summary>181</member>182<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F3">183<summary>184F3 function key.185</summary>186</member>187<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F4">188<summary>189F4 function key.190</summary>191</member>192<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F5">193<summary>194F5 function key.195</summary>196</member>197<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F6">198<summary>199F6 function key.200</summary>201</member>202<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F7">203<summary>204F7 function key.205</summary>206</member>207<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F8">208<summary>209F8 function key.210</summary>211</member>212<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F9">213<summary>214F9 function key.215</summary>216</member>217<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F10">218<summary>219F10 function key.220</summary>221</member>222<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F11">223<summary>224F11 function key.225</summary>226</member>227<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_F12">228<summary>229F12 function key.230</summary>231</member>232<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_LEFT">233<summary>234Left directional key.235</summary>236</member>237<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_UP">238<summary>239Up directional key.240</summary>241</member>242<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_RIGHT">243<summary>244Right directional key.245</summary>246</member>247<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_DOWN">248<summary>249Down directional key.250</summary>251</member>252<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_PAGE_UP">253<summary>254Page Up directional key.255</summary>256</member>257<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_PAGE_DOWN">258<summary>259Page Down directional key.260</summary>261</member>262<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_HOME">263<summary>264Home directional key.265</summary>266</member>267<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_END">268<summary>269End directional key.270</summary>271</member>272<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_INSERT">273<summary>274Insert directional key.275</summary>276</member>277<member name="F:Tao.FreeGlut.Glut.GLUT_LEFT">278<summary>279Mouse pointer has left the window.280</summary>281</member>282<member name="F:Tao.FreeGlut.Glut.GLUT_ENTERED">283<summary>284Mouse pointer has entered the window.285</summary>286</member>287<member name="F:Tao.FreeGlut.Glut.GLUT_MENU_NOT_IN_USE">288<summary>289Pop-up menus are not in use by the user.290</summary>291</member>292<member name="F:Tao.FreeGlut.Glut.GLUT_MENU_IN_USE">293<summary>294Pop-up menus are in use by the user.295</summary>296</member>297<member name="F:Tao.FreeGlut.Glut.GLUT_NOT_VISIBLE">298<summary>299The window is not visible. No part of the window is visible. All further300rendering to the window is discarded until the window's visibility changes.301</summary>302</member>303<member name="F:Tao.FreeGlut.Glut.GLUT_VISIBLE">304<summary>305The window is visible. Does not distinguish a window being totally versus306partially visible.307</summary>308</member>309<member name="F:Tao.FreeGlut.Glut.GLUT_HIDDEN">310<summary>311The window is not shown or iconified.312</summary>313</member>314<member name="F:Tao.FreeGlut.Glut.GLUT_FULLY_RETAINED">315<summary>316No pixels belonging to the window are covered by other windows.317</summary>318</member>319<member name="F:Tao.FreeGlut.Glut.GLUT_PARTIALLY_RETAINED">320<summary>321Some but not all pixels belonging to the window are covered by other windows.322</summary>323</member>324<member name="F:Tao.FreeGlut.Glut.GLUT_FULLY_COVERED">325<summary>326The window is shown but no part of the window is visible.327</summary>328</member>329<member name="F:Tao.FreeGlut.Glut.GLUT_RED">330<summary>331Red color component.332</summary>333</member>334<member name="F:Tao.FreeGlut.Glut.GLUT_GREEN">335<summary>336Green color component.337</summary>338</member>339<member name="F:Tao.FreeGlut.Glut.GLUT_BLUE">340<summary>341Blue color component.342</summary>343</member>344<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_X">345<summary>346X location in pixels (relative to the screen origin) of the current window.347</summary>348</member>349<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_Y">350<summary>351Y location in pixels (relative to the screen origin) of the current window.352</summary>353</member>354<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_WIDTH">355<summary>356Width in pixels of the current window.357</summary>358</member>359<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_HEIGHT">360<summary>361Height in pixels of the current window.362</summary>363</member>364<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_BUFFER_SIZE">365<summary>366Total number of bits for current window's color buffer. For an RGBA window,367this is the sum of <see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_RED_SIZE"/>,368<see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_GREEN_SIZE"/>, <see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_BLUE_SIZE"/>,369and <see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ALPHA_SIZE"/>. For color index windows, this is370the size of the color indexes.371</summary>372</member>373<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_STENCIL_SIZE">374<summary>375Number of bits in the current window's stencil buffer.376</summary>377</member>378<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_DEPTH_SIZE">379<summary>380Number of bits in the current window's depth buffer.381</summary>382</member>383<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_RED_SIZE">384<summary>385Number of bits of red stored the current window's color buffer. Zero if the386window is color index.387</summary>388</member>389<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_GREEN_SIZE">390<summary>391Number of bits of green stored the current window's color buffer. Zero if the392window is color index.393</summary>394</member>395<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_BLUE_SIZE">396<summary>397Number of bits of blue stored the current window's color buffer. Zero if the398window is color index.399</summary>400</member>401<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ALPHA_SIZE">402<summary>403Number of bits of alpha stored the current window's color buffer. Zero if the404window is color index.405</summary>406</member>407<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ACCUM_RED_SIZE">408<summary>409Number of bits of red stored in the current window's accumulation buffer.410Zero if the window is color index.411</summary>412</member>413<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ACCUM_GREEN_SIZE">414<summary>415Number of bits of green stored in the current window's accumulation buffer.416Zero if the window is color index.417</summary>418</member>419<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ACCUM_BLUE_SIZE">420<summary>421Number of bits of blue stored in the current window's accumulation buffer.422Zero if the window is color index.423</summary>424</member>425<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ACCUM_ALPHA_SIZE">426<summary>427Number of bits of alpha stored in the current window's accumulation buffer.428Zero if the window is color index.429</summary>430</member>431<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_DOUBLEBUFFER">432<summary>433One if the current window is double buffered, zero otherwise.434</summary>435</member>436<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_RGBA">437<summary>438One if the current window is RGBA mode, zero otherwise (i.e., color index).439</summary>440</member>441<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_PARENT">442<summary>443The window number of the current window's parent; zero if the window is a444top-level window.445</summary>446</member>447<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_NUM_CHILDREN">448<summary>449The number of subwindows the current window has (not counting children of450children).451</summary>452</member>453<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_COLORMAP_SIZE">454<summary>455Size of current window's color index colormap; zero for RGBA color model456windows.457</summary>458</member>459<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_NUM_SAMPLES">460<summary>461Number of samples for multisampling for the current window.462</summary>463</member>464<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_STEREO">465<summary>466One if the current window is stereo, zero otherwise.467</summary>468</member>469<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_CURSOR">470<summary>471Current cursor for the current window.472</summary>473</member>474<member name="F:Tao.FreeGlut.Glut.GLUT_SCREEN_WIDTH">475<summary>476Width of the screen in pixels. Zero indicates the width is unknown or not477available.478</summary>479</member>480<member name="F:Tao.FreeGlut.Glut.GLUT_SCREEN_HEIGHT">481<summary>482Height of the screen in pixels. Zero indicates the height is unknown or not483available.484</summary>485</member>486<member name="F:Tao.FreeGlut.Glut.GLUT_SCREEN_WIDTH_MM">487<summary>488Width of the screen in millimeters. Zero indicates the width is unknown or489not available.490</summary>491</member>492<member name="F:Tao.FreeGlut.Glut.GLUT_SCREEN_HEIGHT_MM">493<summary>494Height of the screen in millimeters. Zero indicates the height is unknown or495not available.496</summary>497</member>498<member name="F:Tao.FreeGlut.Glut.GLUT_MENU_NUM_ITEMS">499<summary>500Number of menu items in the current menu.501</summary>502</member>503<member name="F:Tao.FreeGlut.Glut.GLUT_DISPLAY_MODE_POSSIBLE">504<summary>505Whether the current display mode is supported or not.506</summary>507</member>508<member name="F:Tao.FreeGlut.Glut.GLUT_INIT_WINDOW_X">509<summary>510The X value of the initial window position.511</summary>512</member>513<member name="F:Tao.FreeGlut.Glut.GLUT_INIT_WINDOW_Y">514<summary>515The Y value of the initial window position.516</summary>517</member>518<member name="F:Tao.FreeGlut.Glut.GLUT_INIT_WINDOW_WIDTH">519<summary>520The width value of the initial window size.521</summary>522</member>523<member name="F:Tao.FreeGlut.Glut.GLUT_INIT_WINDOW_HEIGHT">524<summary>525The height value of the initial window size.526</summary>527</member>528<member name="F:Tao.FreeGlut.Glut.GLUT_INIT_DISPLAY_MODE">529<summary>530The initial display mode bit mask.531</summary>532</member>533<member name="F:Tao.FreeGlut.Glut.GLUT_ELAPSED_TIME">534<summary>535Number of milliseconds since <see cref="M:Tao.FreeGlut.Glut.glutInit"/> called (or first call to536<c>glutGet(GLUT_ELAPSED_TIME)</c>).537</summary>538</member>539<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_FORMAT_ID">540<summary>541The window system dependent format ID for the current layer of the current542window. On X11 GLUT implementations, this is the X visual ID. On Win32 GLUT543implementations, this is the Win32 Pixel Format Descriptor number. This value544is returned for debugging, benchmarking, and testing ease.545</summary>546</member>547<member name="F:Tao.FreeGlut.Glut.GLUT_INIT_STATE">548<summary>549Unknown.550</summary>551</member>552<member name="F:Tao.FreeGlut.Glut.GLUT_HAS_KEYBOARD">553<summary>554Non-zero if a keyboard is available; zero if not available. For most GLUT555implementations, a keyboard can be assumed.556</summary>557</member>558<member name="F:Tao.FreeGlut.Glut.GLUT_HAS_MOUSE">559<summary>560Non-zero if a mouse is available; zero if not available. For most GLUT561implementations, a keyboard can be assumed.562</summary>563</member>564<member name="F:Tao.FreeGlut.Glut.GLUT_HAS_SPACEBALL">565<summary>566Non-zero if a Spaceball is available; zero if not available.567</summary>568</member>569<member name="F:Tao.FreeGlut.Glut.GLUT_HAS_DIAL_AND_BUTTON_BOX">570<summary>571Non-zero if a dial and button box is available; zero if not available.572</summary>573</member>574<member name="F:Tao.FreeGlut.Glut.GLUT_HAS_TABLET">575<summary>576Non-zero if a tablet is available; zero if not available.577</summary>578</member>579<member name="F:Tao.FreeGlut.Glut.GLUT_NUM_MOUSE_BUTTONS">580<summary>581Number of buttons supported by the mouse. If no mouse is supported, zero is582returned.583</summary>584</member>585<member name="F:Tao.FreeGlut.Glut.GLUT_NUM_SPACEBALL_BUTTONS">586<summary>587Number of buttons supported by the Spaceball. If no Spaceball is588supported, zero is returned.589</summary>590</member>591<member name="F:Tao.FreeGlut.Glut.GLUT_NUM_BUTTON_BOX_BUTTONS">592<summary>593Number of buttons supported by the dial and button box device. If no dials594and button box device is supported, zero is returned.595</summary>596</member>597<member name="F:Tao.FreeGlut.Glut.GLUT_NUM_DIALS">598<summary>599Number of dials supported by the dial and button box device. If no dials and600button box device is supported, zero is returned.601</summary>602</member>603<member name="F:Tao.FreeGlut.Glut.GLUT_NUM_TABLET_BUTTONS">604<summary>605Number of buttons supported by the tablet. If no tablet is supported, zero is606returned.607</summary>608</member>609<member name="F:Tao.FreeGlut.Glut.GLUT_DEVICE_IGNORE_KEY_REPEAT">610<summary>611Returns true if the current window's auto repeated keys are ignored. This612state is controlled by <see cref="M:Tao.FreeGlut.Glut.glutIgnoreKeyRepeat(System.Int32)"/>.613</summary>614</member>615<member name="F:Tao.FreeGlut.Glut.GLUT_DEVICE_KEY_REPEAT">616<summary>617The window system's global key repeat state. Returns either618<see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_REPEAT_OFF"/>, <see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_REPEAT_ON"/>, or619<see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_REPEAT_DEFAULT"/>. This will not necessarily return the620value last passed to <see cref="M:Tao.FreeGlut.Glut.glutSetKeyRepeat(System.Int32)"/>.621</summary>622</member>623<member name="F:Tao.FreeGlut.Glut.GLUT_HAS_JOYSTICK">624<summary>625Non-zero if a joystick is available; zero if not available.626</summary>627</member>628<member name="F:Tao.FreeGlut.Glut.GLUT_OWNS_JOYSTICK">629<summary>630Unknown. Unable to locate definitive documentation on this constant.631</summary>632<remarks>633Unofficially, this doesn't appear to be implemented.634</remarks>635</member>636<member name="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_BUTTONS">637<summary>638Number of buttons supported by the joystick. If no joystick is supported,639zero is returned.640</summary>641</member>642<member name="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_AXES">643<summary>644Number of axes supported by the joystick. If no joystick is supposrted, zero645is returned.646</summary>647</member>648<member name="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_POLL_RATE">649<summary>650Returns the current window's joystick poll rate as set by651<see cref="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)"/>. If no joystick is supported, the poll rate652will always be zero. The joystick poll rate also returns zero if the poll653rate last specified to <see cref="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)"/> is negative or a NULL654callback was registered.655</summary>656</member>657<member name="F:Tao.FreeGlut.Glut.GLUT_OVERLAY_POSSIBLE">658<summary>659Whether an overlay could be established for the current window given the660current initial display mode. If false, <see cref="M:Tao.FreeGlut.Glut.glutEstablishOverlay"/>661will fail with a fatal error if called.662</summary>663</member>664<member name="F:Tao.FreeGlut.Glut.GLUT_LAYER_IN_USE">665<summary>666Either <see cref="F:Tao.FreeGlut.Glut.GLUT_NORMAL"/> or <see cref="F:Tao.FreeGlut.Glut.GLUT_OVERLAY"/> depending on667whether the normal plane or overlay is the layer in use.668</summary>669</member>670<member name="F:Tao.FreeGlut.Glut.GLUT_HAS_OVERLAY">671<summary>672If the current window has an overlay established.673</summary>674</member>675<member name="F:Tao.FreeGlut.Glut.GLUT_TRANSPARENT_INDEX">676<summary>677The transparent color index of the overlay of the current window; negative678one is returned if no overlay is in use.679</summary>680</member>681<member name="F:Tao.FreeGlut.Glut.GLUT_NORMAL_DAMAGED">682<summary>683True if the normal plane of the current window has damaged (by window system684activity) since the last display callback was triggered. Calling685<see cref="M:Tao.FreeGlut.Glut.glutPostRedisplay"/> will not set this true.686</summary>687</member>688<member name="F:Tao.FreeGlut.Glut.GLUT_OVERLAY_DAMAGED">689<summary>690True if the overlay plane of the current window has damaged (by window system691activity) since the last display callback was triggered. Calling692<see cref="M:Tao.FreeGlut.Glut.glutPostRedisplay"/> or <see cref="M:Tao.FreeGlut.Glut.glutPostOverlayRedisplay"/>693will not set this true. Negative one is returned if no overlay is in use.694</summary>695</member>696<member name="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_POSSIBLE">697<summary>698Non-zero if video resizing is supported by the underlying system; zero if not699supported. If this is zero, the other video resize GLUT calls do nothing when700called.701</summary>702</member>703<member name="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_IN_USE">704<summary>705Unknown. Unable to locate definitive documentation on this constant.706</summary>707</member>708<member name="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_X_DELTA">709<summary>710Unknown. Unable to locate definitive documentation on this constant.711</summary>712</member>713<member name="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_Y_DELTA">714<summary>715Unknown. Unable to locate definitive documentation on this constant.716</summary>717</member>718<member name="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_WIDTH_DELTA">719<summary>720Unknown. Unable to locate definitive documentation on this constant.721</summary>722</member>723<member name="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_HEIGHT_DELTA">724<summary>725Unknown. Unable to locate definitive documentation on this constant.726</summary>727</member>728<member name="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_X">729<summary>730Unknown. Unable to locate definitive documentation on this constant.731</summary>732</member>733<member name="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_Y">734<summary>735Unknown. Unable to locate definitive documentation on this constant.736</summary>737</member>738<member name="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_WIDTH">739<summary>740Unknown. Unable to locate definitive documentation on this constant.741</summary>742</member>743<member name="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_HEIGHT">744<summary>745Unknown. Unable to locate definitive documentation on this constant.746</summary>747</member>748<member name="F:Tao.FreeGlut.Glut.GLUT_NORMAL">749<summary>750The normal plane.751</summary>752</member>753<member name="F:Tao.FreeGlut.Glut.GLUT_OVERLAY">754<summary>755The overlay plane.756</summary>757</member>758<member name="F:Tao.FreeGlut.Glut.GLUT_ACTIVE_SHIFT">759<summary>760Set if the Shift modifier or Caps Lock is active.761</summary>762</member>763<member name="F:Tao.FreeGlut.Glut.GLUT_ACTIVE_CTRL">764<summary>765Set if the Ctrl modifier is active.766</summary>767</member>768<member name="F:Tao.FreeGlut.Glut.GLUT_ACTIVE_ALT">769<summary>770Set if the Alt modifier is active.771</summary>772</member>773<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_RIGHT_ARROW">774<summary>775Arrow pointing up and to the right.776</summary>777</member>778<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_LEFT_ARROW">779<summary>780Arrow pointing up and to the left.781</summary>782</member>783<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_INFO">784<summary>785Pointing hand.786</summary>787</member>788<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_DESTROY">789<summary>790Skull and cross bones.791</summary>792</member>793<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_HELP">794<summary>795Question mark.796</summary>797</member>798<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_CYCLE">799<summary>800Arrows rotating in a circle.801</summary>802</member>803<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_SPRAY">804<summary>805Spray can.806</summary>807</member>808<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_WAIT">809<summary>810Wrist watch.811</summary>812</member>813<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_TEXT">814<summary>815Insertion point cursor for text.816</summary>817</member>818<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_CROSSHAIR">819<summary>820Simple cross-hair.821</summary>822</member>823<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_UP_DOWN">824<summary>825Bi-directional pointing up and down.826</summary>827</member>828<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_LEFT_RIGHT">829<summary>830Bi-directional pointing left and right.831</summary>832</member>833<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_TOP_SIDE">834<summary>835Arrow pointing to top side.836</summary>837</member>838<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_BOTTOM_SIDE">839<summary>840Arrow pointing to bottom side.841</summary>842</member>843<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_LEFT_SIDE">844<summary>845Arrow pointing to left side.846</summary>847</member>848<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_RIGHT_SIDE">849<summary>850Arrow pointing to right side.851</summary>852</member>853<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_TOP_LEFT_CORNER">854<summary>855Arrow pointing to top-left corner.856</summary>857</member>858<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_TOP_RIGHT_CORNER">859<summary>860Arrow pointing to top-right corner.861</summary>862</member>863<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_BOTTOM_RIGHT_CORNER">864<summary>865Arrow pointing to bottom-right corner.866</summary>867</member>868<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_BOTTOM_LEFT_CORNER">869<summary>870Arrow pointing to bottom-left corner.871</summary>872</member>873<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_INHERIT">874<summary>875Use parent's cursor.876</summary>877</member>878<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_NONE">879<summary>880Invisible cursor.881</summary>882</member>883<member name="F:Tao.FreeGlut.Glut.GLUT_CURSOR_FULL_CROSSHAIR">884<summary>885Full-screen cross-hair cursor (if possible, otherwise886<see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_CROSSHAIR"/>.887</summary>888</member>889<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_REPEAT_OFF">890<summary>891Disable key repeat for the window system on a global basis.892</summary>893</member>894<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_REPEAT_ON">895<summary>896Enable key repeat for the window system on a global basis.897</summary>898</member>899<member name="F:Tao.FreeGlut.Glut.GLUT_KEY_REPEAT_DEFAULT">900<summary>901Reset the key repeat mode for the window system to its default state.902</summary>903</member>904<member name="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_BUTTON_A">905<summary>906Unknown. Unable to locate definitive documentation on this constant.907</summary>908</member>909<member name="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_BUTTON_B">910<summary>911Unknown. Unable to locate definitive documentation on this constant.912</summary>913</member>914<member name="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_BUTTON_C">915<summary>916Unknown. Unable to locate definitive documentation on this constant.917</summary>918</member>919<member name="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_BUTTON_D">920<summary>921Unknown. Unable to locate definitive documentation on this constant.922</summary>923</member>924<member name="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_ACTIVE">925<summary>926Non-zero if GLUT's game mode is active; zero if not active. Game mode is not927active initially. Game mode becomes active when928<see cref="M:Tao.FreeGlut.Glut.glutEnterGameMode"/> is called. Game mode becomes inactive when929<see cref="M:Tao.FreeGlut.Glut.glutLeaveGameMode"/> is called.930</summary>931</member>932<member name="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_POSSIBLE">933<summary>934Non-zero if the game mode string last specified to935<see cref="M:Tao.FreeGlut.Glut.glutGameModeString(System.String)"/> is a possible game mode configuration; zero936otherwise. Being "possible" does not guarantee that if game mode is entered937with <see cref="M:Tao.FreeGlut.Glut.glutEnterGameMode"/> that the display settings will actually938changed. <see cref="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_DISPLAY_CHANGED"/> should be called once939game mode is entered to determine if the display mode is actually changed.940</summary>941</member>942<member name="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_WIDTH">943<summary>944Width in pixels of the screen when game mode is activated.945</summary>946</member>947<member name="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_HEIGHT">948<summary>949Height in pixels of the screen when game mode is activated.950</summary>951</member>952<member name="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_PIXEL_DEPTH">953<summary>954Pixel depth of the screen when game mode is activiated.955</summary>956</member>957<member name="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_REFRESH_RATE">958<summary>959Screen refresh rate in cyles per second (hertz) when game mode is activated.960Zero is returned if the refresh rate is unknown or cannot be queried.961</summary>962</member>963<member name="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_DISPLAY_CHANGED">964<summary>965Non-zero if entering game mode actually changed the display settings. If the966game mode string is not possible or the display mode could not be changed for967any other reason, zero is returned.968</summary>969</member>970<member name="F:Tao.FreeGlut.Glut.GLUT_ACTION_EXIT">971<summary>972Close window on window close button click.973</summary>974</member>975<member name="F:Tao.FreeGlut.Glut.GLUT_ACTION_GLUTMAINLOOP_RETURNS">976<summary>977Return from main loop on window close button click.978</summary>979</member>980<member name="F:Tao.FreeGlut.Glut.GLUT_ACTION_CONTINUE_EXECUTION">981<summary>982Continue execution on window close button click.983</summary>984</member>985<member name="F:Tao.FreeGlut.Glut.GLUT_CREATE_NEW_CONTEXT">986<summary>987Create a new context when user opens a new window.988</summary>989</member>990<member name="F:Tao.FreeGlut.Glut.GLUT_USE_CURRENT_CONTEXT">991<summary>992Use current context when user opens a new window.993</summary>994</member>995<member name="F:Tao.FreeGlut.Glut.GLUT_FORCE_INDIRECT_CONTEXT">996<summary>997Direct/Indirect rendering context options (has meaning only in Unix/X11)998</summary>999</member>1000<member name="F:Tao.FreeGlut.Glut.GLUT_ALLOW_DIRECT_CONTEXT">1001<summary>1002Direct/Indirect rendering context options (has meaning only in Unix/X11)1003</summary>1004</member>1005<member name="F:Tao.FreeGlut.Glut.GLUT_TRY_DIRECT_CONTEXT">1006<summary>1007Direct/Indirect rendering context options (has meaning only in Unix/X11)1008</summary>1009</member>1010<member name="F:Tao.FreeGlut.Glut.GLUT_FORCE_DIRECT_CONTEXT">1011<summary>1012Direct/Indirect rendering context options (has meaning only in Unix/X11)1013</summary>1014</member>1015<member name="F:Tao.FreeGlut.Glut.GLUT_ACTION_ON_WINDOW_CLOSE">1016<summary>1017Gets current action for window-close.1018</summary>1019</member>1020<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_BORDER_WIDTH">1021<summary>1022Gets the window border width.1023</summary>1024</member>1025<member name="F:Tao.FreeGlut.Glut.GLUT_WINDOW_HEADER_HEIGHT">1026<summary>1027Gets window header height.1028</summary>1029</member>1030<member name="F:Tao.FreeGlut.Glut.GLUT_VERSION">1031<summary>1032Gets GLUT version.1033</summary>1034</member>1035<member name="F:Tao.FreeGlut.Glut.GLUT_RENDERING_CONTEXT">1036<summary>1037Gets GLUT's rendering context.1038</summary>1039</member>1040<member name="F:Tao.FreeGlut.Glut.GLUT_DIRECT_RENDERING">1041<summary>10421043</summary>1044</member>1045<member name="F:Tao.FreeGlut.Glut.GLUT_AUX1">1046<summary>10471048</summary>1049</member>1050<member name="F:Tao.FreeGlut.Glut.GLUT_AUX2">1051<summary>10521053</summary>1054</member>1055<member name="F:Tao.FreeGlut.Glut.GLUT_AUX3">1056<summary>10571058</summary>1059</member>1060<member name="F:Tao.FreeGlut.Glut.GLUT_AUX4">1061<summary>10621063</summary>1064</member>1065<member name="F:Tao.FreeGlut.Glut.GLUT_STROKE_ROMAN">1066<summary>1067A proportionally spaced Roman Simplex font for ASCII characters 32 through1068127. The maximum top character in the font is 119.05 units; the bottom1069descends 33.33 units.1070</summary>1071</member>1072<member name="F:Tao.FreeGlut.Glut.GLUT_STROKE_MONO_ROMAN">1073<summary>1074A mono-spaced spaced Roman Simplex font (same characters as1075<see cref="F:Tao.FreeGlut.Glut.GLUT_STROKE_ROMAN"/>) for ASCII characters 32 through 127. The1076maximum top character in the font is 119.05 units; the bottom descends 33.331077units. Each character is 104.76 units wide.1078</summary>1079</member>1080<member name="F:Tao.FreeGlut.Glut.GLUT_BITMAP_9_BY_15">1081<summary>1082A fixed width font with every character fitting in an 9 by 15 pixel rectangle.1083</summary>1084</member>1085<member name="F:Tao.FreeGlut.Glut.GLUT_BITMAP_8_BY_13">1086<summary>1087A fixed width font with every character fitting in an 8 by 13 pixel rectangle.1088</summary>1089</member>1090<member name="F:Tao.FreeGlut.Glut.GLUT_BITMAP_TIMES_ROMAN_10">1091<summary>1092A 10-point proportional spaced Times Roman font.1093</summary>1094</member>1095<member name="F:Tao.FreeGlut.Glut.GLUT_BITMAP_TIMES_ROMAN_24">1096<summary>1097A 24-point proportional spaced Times Roman font.1098</summary>1099</member>1100<member name="F:Tao.FreeGlut.Glut.GLUT_BITMAP_HELVETICA_10">1101<summary>1102A 10-point proportional spaced Helvetica font.1103</summary>1104</member>1105<member name="F:Tao.FreeGlut.Glut.GLUT_BITMAP_HELVETICA_12">1106<summary>1107A 12-point proportional spaced Helvetica font.1108</summary>1109</member>1110<member name="F:Tao.FreeGlut.Glut.GLUT_BITMAP_HELVETICA_18">1111<summary>1112A 18-point proportional spaced Helvetica font.1113</summary>1114</member>1115<member name="M:Tao.FreeGlut.Glut.#cctor">1116<summary>1117Static Glut constructor.1118</summary>1119<remarks>1120Sets up GLUT font addresses.1121</remarks>1122</member>1123<member name="M:Tao.FreeGlut.Glut.__glutCreateMenu(Tao.FreeGlut.Glut.CreateMenuCallback)">1124<summary>1125Called from <see cref="M:Tao.FreeGlut.Glut.glutCreateMenu(Tao.FreeGlut.Glut.CreateMenuCallback)"/>.1126</summary>1127<remarks>1128<b>This method is not CLS-compliant due to naming conventions.</b>1129</remarks>1130</member>1131<member name="M:Tao.FreeGlut.Glut.__glutDisplayFunc(Tao.FreeGlut.Glut.DisplayCallback)">1132<summary>1133Called from <see cref="M:Tao.FreeGlut.Glut.glutDisplayFunc(Tao.FreeGlut.Glut.DisplayCallback)"/>.1134</summary>1135<remarks>1136<b>This method is not CLS-compliant due to naming conventions.</b>1137</remarks>1138</member>1139<member name="M:Tao.FreeGlut.Glut.__glutReshapeFunc(Tao.FreeGlut.Glut.ReshapeCallback)">1140<summary>1141Called from <see cref="M:Tao.FreeGlut.Glut.glutReshapeFunc(Tao.FreeGlut.Glut.ReshapeCallback)"/>.1142</summary>1143<remarks>1144<b>This method is not CLS-compliant due to naming conventions.</b>1145</remarks>1146</member>1147<member name="M:Tao.FreeGlut.Glut.__glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)">1148<summary>1149Called from <see cref="M:Tao.FreeGlut.Glut.glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)"/>.1150</summary>1151<remarks>1152<b>This method is not CLS-compliant due to naming conventions.</b>1153</remarks>1154</member>1155<member name="M:Tao.FreeGlut.Glut.__glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)">1156<summary>1157Called from <see cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>.1158</summary>1159<remarks>1160<b>This method is not CLS-compliant due to naming conventions.</b>1161</remarks>1162</member>1163<member name="M:Tao.FreeGlut.Glut.__glutMotionFunc(Tao.FreeGlut.Glut.MotionCallback)">1164<summary>1165Called from <see cref="M:Tao.FreeGlut.Glut.glutMotionFunc(Tao.FreeGlut.Glut.MotionCallback)"/>.1166</summary>1167<remarks>1168<b>This method is not CLS-compliant due to naming conventions.</b>1169</remarks>1170</member>1171<member name="M:Tao.FreeGlut.Glut.__glutPassiveMotionFunc(Tao.FreeGlut.Glut.PassiveMotionCallback)">1172<summary>1173Called from <see cref="M:Tao.FreeGlut.Glut.glutPassiveMotionFunc(Tao.FreeGlut.Glut.PassiveMotionCallback)"/>.1174</summary>1175<remarks>1176<b>This method is not CLS-compliant due to naming conventions.</b>1177</remarks>1178</member>1179<member name="M:Tao.FreeGlut.Glut.__glutEntryFunc(Tao.FreeGlut.Glut.EntryCallback)">1180<summary>1181Called from <see cref="M:Tao.FreeGlut.Glut.glutEntryFunc(Tao.FreeGlut.Glut.EntryCallback)"/>.1182</summary>1183<remarks>1184<b>This method is not CLS-compliant due to naming conventions.</b>1185</remarks>1186</member>1187<member name="M:Tao.FreeGlut.Glut.__glutVisibilityFunc(Tao.FreeGlut.Glut.VisibilityCallback)">1188<summary>1189Called from <see cref="M:Tao.FreeGlut.Glut.glutVisibilityFunc(Tao.FreeGlut.Glut.VisibilityCallback)"/>.1190</summary>1191<remarks>1192<b>This method is not CLS-compliant due to naming conventions.</b>1193</remarks>1194</member>1195<member name="M:Tao.FreeGlut.Glut.__glutIdleFunc(Tao.FreeGlut.Glut.IdleCallback)">1196<summary>1197Called from <see cref="M:Tao.FreeGlut.Glut.glutIdleFunc(Tao.FreeGlut.Glut.IdleCallback)"/>.1198</summary>1199<remarks>1200<b>This method is not CLS-compliant due to naming conventions.</b>1201</remarks>1202</member>1203<member name="M:Tao.FreeGlut.Glut.__glutTimerFunc(System.Int32,Tao.FreeGlut.Glut.TimerCallback,System.Int32)">1204<summary>1205Called from <see cref="M:Tao.FreeGlut.Glut.glutTimerFunc(System.Int32,Tao.FreeGlut.Glut.TimerCallback,System.Int32)"/>.1206</summary>1207<remarks>1208<b>This method is not CLS-compliant due to naming conventions.</b>1209</remarks>1210</member>1211<member name="M:Tao.FreeGlut.Glut.__glutMenuStateFunc(Tao.FreeGlut.Glut.MenuStateCallback)">1212<summary>1213Called from <see cref="M:Tao.FreeGlut.Glut.glutMenuStateFunc(Tao.FreeGlut.Glut.MenuStateCallback)"/>.1214</summary>1215<remarks>1216<b>This method is not CLS-compliant due to naming conventions.</b>1217</remarks>1218</member>1219<member name="M:Tao.FreeGlut.Glut.__glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)">1220<summary>1221Called from <see cref="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)"/>.1222</summary>1223<remarks>1224<b>This method is not CLS-compliant due to naming conventions.</b>1225</remarks>1226</member>1227<member name="M:Tao.FreeGlut.Glut.__glutSpaceballMotionFunc(Tao.FreeGlut.Glut.SpaceballMotionCallback)">1228<summary>1229Called from <see cref="M:Tao.FreeGlut.Glut.glutSpaceballMotionFunc(Tao.FreeGlut.Glut.SpaceballMotionCallback)"/>.1230</summary>1231<remarks>1232<b>This method is not CLS-compliant due to naming conventions.</b>1233</remarks>1234</member>1235<member name="M:Tao.FreeGlut.Glut.__glutSpaceballRotateFunc(Tao.FreeGlut.Glut.SpaceballRotateCallback)">1236<summary>1237Called from <see cref="M:Tao.FreeGlut.Glut.glutSpaceballRotateFunc(Tao.FreeGlut.Glut.SpaceballRotateCallback)"/>.1238</summary>1239<remarks>1240<b>This method is not CLS-compliant due to naming conventions.</b>1241</remarks>1242</member>1243<member name="M:Tao.FreeGlut.Glut.__glutSpaceballButtonFunc(Tao.FreeGlut.Glut.SpaceballButtonCallback)">1244<summary>1245Called from <see cref="M:Tao.FreeGlut.Glut.glutSpaceballButtonFunc(Tao.FreeGlut.Glut.SpaceballButtonCallback)"/>.1246</summary>1247<remarks>1248<b>This method is not CLS-compliant due to naming conventions.</b>1249</remarks>1250</member>1251<member name="M:Tao.FreeGlut.Glut.__glutButtonBoxFunc(Tao.FreeGlut.Glut.ButtonBoxCallback)">1252<summary>1253Called from <see cref="M:Tao.FreeGlut.Glut.glutButtonBoxFunc(Tao.FreeGlut.Glut.ButtonBoxCallback)"/>.1254</summary>1255<remarks>1256<b>This method is not CLS-compliant due to naming conventions.</b>1257</remarks>1258</member>1259<member name="M:Tao.FreeGlut.Glut.__glutDialsFunc(Tao.FreeGlut.Glut.DialsCallback)">1260<summary>1261Called from <see cref="M:Tao.FreeGlut.Glut.glutDialsFunc(Tao.FreeGlut.Glut.DialsCallback)"/>.1262</summary>1263<remarks>1264<b>This method is not CLS-compliant due to naming conventions.</b>1265</remarks>1266</member>1267<member name="M:Tao.FreeGlut.Glut.__glutTabletMotionFunc(Tao.FreeGlut.Glut.TabletMotionCallback)">1268<summary>1269Called from <see cref="M:Tao.FreeGlut.Glut.glutTabletMotionFunc(Tao.FreeGlut.Glut.TabletMotionCallback)"/>.1270</summary>1271<remarks>1272<b>This method is not CLS-compliant due to naming conventions.</b>1273</remarks>1274</member>1275<member name="M:Tao.FreeGlut.Glut.__glutTabletButtonFunc(Tao.FreeGlut.Glut.TabletButtonCallback)">1276<summary>1277Called from <see cref="M:Tao.FreeGlut.Glut.glutTabletButtonFunc(Tao.FreeGlut.Glut.TabletButtonCallback)"/>.1278</summary>1279<remarks>1280<b>This method is not CLS-compliant due to naming conventions.</b>1281</remarks>1282</member>1283<member name="M:Tao.FreeGlut.Glut.__glutMenuStatusFunc(Tao.FreeGlut.Glut.MenuStatusCallback)">1284<summary>1285Called from <see cref="M:Tao.FreeGlut.Glut.glutMenuStatusFunc(Tao.FreeGlut.Glut.MenuStatusCallback)"/>.1286</summary>1287<remarks>1288<b>This method is not CLS-compliant due to naming conventions.</b>1289</remarks>1290</member>1291<member name="M:Tao.FreeGlut.Glut.__glutOverlayDisplayFunc(Tao.FreeGlut.Glut.OverlayDisplayCallback)">1292<summary>1293Called from <see cref="M:Tao.FreeGlut.Glut.glutOverlayDisplayFunc(Tao.FreeGlut.Glut.OverlayDisplayCallback)"/>.1294</summary>1295<remarks>1296<b>This method is not CLS-compliant due to naming conventions.</b>1297</remarks>1298</member>1299<member name="M:Tao.FreeGlut.Glut.__glutWindowStatusFunc(Tao.FreeGlut.Glut.WindowStatusCallback)">1300<summary>1301Called from <see cref="M:Tao.FreeGlut.Glut.glutWindowStatusFunc(Tao.FreeGlut.Glut.WindowStatusCallback)"/>.1302</summary>1303<remarks>1304<b>This method is not CLS-compliant due to naming conventions.</b>1305</remarks>1306</member>1307<member name="M:Tao.FreeGlut.Glut.__glutKeyboardUpFunc(Tao.FreeGlut.Glut.KeyboardUpCallback)">1308<summary>1309Called from <see cref="M:Tao.FreeGlut.Glut.glutKeyboardUpFunc(Tao.FreeGlut.Glut.KeyboardUpCallback)"/>.1310</summary>1311<remarks>1312<b>This method is not CLS-compliant due to naming conventions.</b>1313</remarks>1314</member>1315<member name="M:Tao.FreeGlut.Glut.__glutSpecialUpFunc(Tao.FreeGlut.Glut.SpecialUpCallback)">1316<summary>1317Called from <see cref="M:Tao.FreeGlut.Glut.glutSpecialUpFunc(Tao.FreeGlut.Glut.SpecialUpCallback)"/>.1318</summary>1319<remarks>1320<b>This method is not CLS-compliant due to naming conventions.</b>1321</remarks>1322</member>1323<member name="M:Tao.FreeGlut.Glut.__glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)">1324<summary>1325Called from <see cref="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)"/>.1326</summary>1327<remarks>1328<b>This method is not CLS-compliant due to naming conventions.</b>1329</remarks>1330</member>1331<member name="M:Tao.FreeGlut.Glut.__glutMouseWheelFunc(Tao.FreeGlut.Glut.MouseWheelCallback)">1332<summary>1333Called from <see cref="M:Tao.FreeGlut.Glut.glutMouseWheelFunc(Tao.FreeGlut.Glut.MouseWheelCallback)"/>.1334</summary>1335<remarks>1336<b>This method is not CLS-compliant due to naming conventions and it's called1337from a non-standard method!</b>1338</remarks>1339</member>1340<member name="M:Tao.FreeGlut.Glut.__glutCloseFunc(Tao.FreeGlut.Glut.CloseCallback)">1341<summary>1342Called from <see cref="M:Tao.FreeGlut.Glut.glutCloseFunc(Tao.FreeGlut.Glut.CloseCallback)"/>.1343</summary>1344<remarks>1345<b>This method is not CLS-compliant due to naming conventions and it's called1346from a non-standard method!</b>1347</remarks>1348</member>1349<member name="M:Tao.FreeGlut.Glut.__glutWMCloseFunc(Tao.FreeGlut.Glut.WindowCloseCallback)">1350<summary>1351Called from <see cref="M:Tao.FreeGlut.Glut.glutWMCloseFunc(Tao.FreeGlut.Glut.WindowCloseCallback)"/>.1352</summary>1353<remarks>1354<b>This method is not CLS-compliant due to naming conventions and it's called1355from a non-standard method!</b>1356</remarks>1357</member>1358<member name="M:Tao.FreeGlut.Glut.__glutMenuDestroyFunc(Tao.FreeGlut.Glut.MenuDestroyCallback)">1359<summary>1360Called from <see cref="M:Tao.FreeGlut.Glut.glutMenuDestroyFunc(Tao.FreeGlut.Glut.MenuDestroyCallback)"/>.1361</summary>1362<remarks>1363<b>This method is not CLS-compliant due to naming conventions and it's called1364from a non-standard method!</b>1365</remarks>1366</member>1367<member name="M:Tao.FreeGlut.Glut.glutInit">1368<summary>1369Initializes the GLUT library.1370</summary>1371<remarks>1372<para>1373This is a non-standard version of <b>glutInit</b> that passes the appropriate1374commandline arguments automatically.1375</para>1376<para>1377<b>glutInit</b> will initialize the GLUT library and negotiate a session with1378the window system. During this process, <b>glutInit</b> may cause the1379termination of the GLUT program with an error message to the user if GLUT1380cannot be properly initialized. Examples of this situation include the1381failure to connect to the window system, the lack of window system support for1382OpenGL, and invalid command line options.1383</para>1384<para>1385<b>glutInit</b> also processes command line options, but the specific options1386parsed are window system dependent.1387</para>1388<para>1389<b>X IMPLEMENTATION NOTES</b>1390</para>1391<para>1392The X Window System specific options parsed by <b>glutInit</b> are as follows:1393</para>1394<para>1395<list type="table">1396<listheader>1397<term>Value</term>1398<description>Description</description>1399</listheader>1400<item>1401<term>-display DISPLAY</term>1402<description>1403Specify the X server to connect to. If not specified, the value1404of the DISPLAY environment variable is used.1405</description>1406</item>1407<item>1408<term>-geometry WxH+X+Y</term>1409<description>1410Determines where window's should be created on the screen. The1411parameter following -geometry should be formatted as a standard X1412geometry specification. The effect of using this option is to1413change the GLUT initial size and initial position the same as if1414<see cref="M:Tao.FreeGlut.Glut.glutInitWindowSize(System.Int32,System.Int32)"/> or1415<see cref="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)"/> were called directly.1416</description>1417</item>1418<item>1419<term>-iconic</term>1420<description>1421Requests all top-level windows be created in an iconic state.1422</description>1423</item>1424<item>1425<term>-indirect</term>1426<description>1427Force the use of indirect OpenGL rendering contexts.1428</description>1429</item>1430<item>1431<term>-direct</term>1432<description>1433<para>1434Force the use of direct OpenGL rendering contexts (not all GLX1435implementations support direct rendering contexts). A fatal1436error is generated if direct rendering is not supported by the1437OpenGL implementation.1438</para>1439<para>1440If neither -indirect or -direct are used to force a particular1441behavior, GLUT will attempt to use direct rendering if1442possible and otherwise fallback to indirect rendering.1443</para>1444</description>1445</item>1446<item>1447<term>-gldebug</term>1448<description>1449After processing callbacks and/or events, check if there are any1450OpenGL errors by calling <see cref="M:Tao.OpenGl.Gl.glGetError"/>. If an1451error is reported, print out a warning by looking up the error1452code with /*see cref="Glu.gluErrorString" />*/. Using this option is1453helpful in detecting OpenGL run-time errors.1454</description>1455</item>1456<item>1457<term>-sync</term>1458<description>1459Enable synchronous X protocol transactions. This option makes it1460easier to track down potential X protocol errors.1461</description>1462</item>1463</list>1464</para>1465</remarks>1466<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>1467<seealso cref="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)"/>1468<seealso cref="M:Tao.FreeGlut.Glut.glutInitWindowSize(System.Int32,System.Int32)"/>1469<seealso cref="M:Tao.FreeGlut.Glut.glutMainLoop"/>1470</member>1471<member name="M:Tao.FreeGlut.Glut.glutInit(System.Int32@,System.Text.StringBuilder[])">1472<summary>1473Initializes the GLUT library.1474</summary>1475<param name="argcp">1476A pointer to the program’s unmodified argc variable from main. Upon return,1477the value pointed to by <i>argcp</i> will be updated, because <b>glutInit</b>1478extracts any command line options intended for the GLUT library.1479</param>1480<param name="argv">1481The program’s unmodified <i>argv</i> variable from main. Like <i>argcp</i>,1482the data for <i>argv</i> will be updated because <b>glutInit</b> extracts any1483command line options understood by the GLUT library.1484</param>1485<remarks>1486<para>1487<b>glutInit</b> will initialize the GLUT library and negotiate a session with1488the window system. During this process, <b>glutInit</b> may cause the1489termination of the GLUT program with an error message to the user if GLUT1490cannot be properly initialized. Examples of this situation include the1491failure to connect to the window system, the lack of window system support for1492OpenGL, and invalid command line options.1493</para>1494<para>1495<b>glutInit</b> also processes command line options, but the specific options1496parsed are window system dependent.1497</para>1498<para>1499<b>X IMPLEMENTATION NOTES</b>1500</para>1501<para>1502The X Window System specific options parsed by <b>glutInit</b> are as follows:1503</para>1504<para>1505<list type="table">1506<listheader>1507<term>Value</term>1508<description>Description</description>1509</listheader>1510<item>1511<term>-display DISPLAY</term>1512<description>1513Specify the X server to connect to. If not specified, the value1514of the DISPLAY environment variable is used.1515</description>1516</item>1517<item>1518<term>-geometry WxH+X+Y</term>1519<description>1520Determines where window's should be created on the screen. The1521parameter following -geometry should be formatted as a standard X1522geometry specification. The effect of using this option is to1523change the GLUT initial size and initial position the same as if1524<see cref="M:Tao.FreeGlut.Glut.glutInitWindowSize(System.Int32,System.Int32)"/> or1525<see cref="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)"/> were called directly.1526</description>1527</item>1528<item>1529<term>-iconic</term>1530<description>1531Requests all top-level windows be created in an iconic state.1532</description>1533</item>1534<item>1535<term>-indirect</term>1536<description>1537Force the use of indirect OpenGL rendering contexts.1538</description>1539</item>1540<item>1541<term>-direct</term>1542<description>1543<para>1544Force the use of direct OpenGL rendering contexts (not all GLX1545implementations support direct rendering contexts). A fatal1546error is generated if direct rendering is not supported by the1547OpenGL implementation.1548</para>1549<para>1550If neither -indirect or -direct are used to force a particular1551behavior, GLUT will attempt to use direct rendering if1552possible and otherwise fallback to indirect rendering.1553</para>1554</description>1555</item>1556<item>1557<term>-gldebug</term>1558<description>1559After processing callbacks and/or events, check if there are any1560OpenGL errors by calling <see cref="M:Tao.OpenGl.Gl.glGetError"/>. If an1561error is reported, print out a warning by looking up the error1562code with /*see cref="Glu.gluErrorString" />*/. Using this option is1563helpful in detecting OpenGL run-time errors.1564</description>1565</item>1566<item>1567<term>-sync</term>1568<description>1569Enable synchronous X protocol transactions. This option makes it1570easier to track down potential X protocol errors.1571</description>1572</item>1573</list>1574</para>1575</remarks>1576<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>1577<seealso cref="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)"/>1578<seealso cref="M:Tao.FreeGlut.Glut.glutInitWindowSize(System.Int32,System.Int32)"/>1579<seealso cref="M:Tao.FreeGlut.Glut.glutMainLoop"/>1580</member>1581<member name="M:Tao.FreeGlut.Glut.glutInitDisplayMode(System.Int32)">1582<summary>1583Sets the initial display mode.1584</summary>1585<param name="mode">1586<para>1587Display mode, normally the bitwise OR-ing of GLUT display mode bit masks. See1588values below:1589</para>1590<para>1591<list type="table">1592<listheader>1593<term>Value</term>1594<description>Description</description>1595</listheader>1596<item>1597<term><see cref="F:Tao.FreeGlut.Glut.GLUT_RGBA"/></term>1598<description>1599Bit mask to select an RGBA mode window. This is the default if1600neither <see cref="F:Tao.FreeGlut.Glut.GLUT_RGBA"/> nor <see cref="F:Tao.FreeGlut.Glut.GLUT_INDEX"/>1601are specified.1602</description>1603</item>1604<item>1605<term><see cref="F:Tao.FreeGlut.Glut.GLUT_RGB"/></term>1606<description>An alias for <see cref="F:Tao.FreeGlut.Glut.GLUT_RGBA"/>.</description>1607</item>1608<item>1609<term><see cref="F:Tao.FreeGlut.Glut.GLUT_INDEX"/></term>1610<description>1611Bit mask to select a color index mode window. This overrides1612<see cref="F:Tao.FreeGlut.Glut.GLUT_RGBA"/> if it is also specified.1613</description>1614</item>1615<item>1616<term><see cref="F:Tao.FreeGlut.Glut.GLUT_SINGLE"/></term>1617<description>1618Bit mask to select a single buffered window. This is the default1619if neither <see cref="F:Tao.FreeGlut.Glut.GLUT_DOUBLE"/> or1620<see cref="F:Tao.FreeGlut.Glut.GLUT_SINGLE"/> are specified.1621</description>1622</item>1623<item>1624<term><see cref="F:Tao.FreeGlut.Glut.GLUT_DOUBLE"/></term>1625<description>1626Bit mask to select a double buffered window. This overrides1627<see cref="F:Tao.FreeGlut.Glut.GLUT_SINGLE"/> if it is also specified.1628</description>1629</item>1630<item>1631<term><see cref="F:Tao.FreeGlut.Glut.GLUT_ACCUM"/></term>1632<description>1633Bit mask to select a window with an accumulation buffer.1634</description>1635</item>1636<item>1637<term><see cref="F:Tao.FreeGlut.Glut.GLUT_ALPHA"/></term>1638<description>1639Bit mask to select a window with an alpha component to the color1640buffer(s).1641</description>1642</item>1643<item>1644<term><see cref="F:Tao.FreeGlut.Glut.GLUT_DEPTH"/></term>1645<description>1646Bit mask to select a window with a depth buffer.1647</description>1648</item>1649<item>1650<term><see cref="F:Tao.FreeGlut.Glut.GLUT_STENCIL"/></term>1651<description>1652Bit mask to select a window with a stencil buffer.1653</description>1654</item>1655<item>1656<term><see cref="F:Tao.FreeGlut.Glut.GLUT_MULTISAMPLE"/></term>1657<description>1658Bit mask to select a window with multisampling support. If1659multisampling is not available, a non-multisampling window will1660automatically be chosen. Note: both the OpenGL client-side and1661server-side implementations must support the GLX_SAMPLE_SGIS1662extension for multisampling to be available.1663</description>1664</item>1665<item>1666<term><see cref="F:Tao.FreeGlut.Glut.GLUT_STEREO"/></term>1667<description>1668Bit mask to select a stereo window.1669</description>1670</item>1671<item>1672<term><see cref="F:Tao.FreeGlut.Glut.GLUT_LUMINANCE"/></term>1673<description>1674Bit mask to select a window with a "luminance" color model. This1675model provides the functionality of OpenGL's RGBA color model, but1676the green and blue components are not maintained in the frame1677buffer. Instead each pixel's red component is converted to an1678index between zero and1679<c>Glut.glutGet(Glut.GLUT_WINDOW_COLORMAP_SIZE) - 1</c> and looked1680up in a per-window color map to determine the color of pixels1681within the window. The initial colormap of1682<see cref="F:Tao.FreeGlut.Glut.GLUT_LUMINANCE"/> windows is initialized to be a1683linear gray ramp, but can be modified with GLUT's colormap1684routines.1685</description>1686</item>1687</list>1688</para>1689</param>1690<remarks>1691<para>1692The initial display mode is used when creating top-level windows, subwindows,1693and overlays to determine the OpenGL display mode for the to-be-created1694window or overlay.1695</para>1696<para>1697Note that <see cref="F:Tao.FreeGlut.Glut.GLUT_RGBA"/> selects the RGBA color model, but it does1698not request any bits of alpha (sometimes called an alpha buffer or destination1699alpha) be allocated. To request alpha, specify <see cref="F:Tao.FreeGlut.Glut.GLUT_ALPHA"/>.1700The same applies to <see cref="F:Tao.FreeGlut.Glut.GLUT_LUMINANCE"/>.1701</para>1702<para>1703<b>NOTE</b>1704</para>1705<para>1706<see cref="F:Tao.FreeGlut.Glut.GLUT_LUMINANCE"/> is not supported on most OpenGL platforms.1707</para>1708</remarks>1709<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>1710<seealso cref="M:Tao.FreeGlut.Glut.glutInit"/>1711<seealso cref="M:Tao.FreeGlut.Glut.glutInitDisplayString(System.String)"/>1712</member>1713<member name="M:Tao.FreeGlut.Glut.glutInitDisplayString(System.String)">1714<summary>1715Sets the initial display mode via a string.1716</summary>1717<param name="str">1718Display mode description string, see below.1719</param>1720<remarks>1721<para>1722The initial display mode description string is used when creating1723top-level windows, subwindows, and overlays to determine the OpenGL display1724mode for the to-be-created window or overlay.1725</para>1726<para>1727The string is a list of zero or more capability descriptions separated by1728spaces and tabs. Each capability description is a capability name that is1729optionally followed by a comparator and a numeric value. For example,1730"double" and "depth>=12" are both valid criteria.1731</para>1732<para>1733The capability descriptions are translated into a set of criteria used to1734select the appropriate frame buffer configuration.1735</para>1736<para>1737The criteria are matched in strict left to right order of precdence. That is,1738the first specified criteria (leftmost) takes precedence over the later1739criteria for non-exact criteria (greater than, less than, etc. comparators).1740Exact criteria (equal, not equal compartors) must match exactly so precedence1741is not relevant.1742</para>1743<para>1744The numeric value is an integer that is parsed according to ANSI C's1745<c>strtol(str, strptr, 0)</c> behavior. This means that decimal, octal1746(leading 0), and hexidecimal values (leading 0x) are accepted.1747</para>1748<para>1749The valid compartors are:1750</para>1751<para>1752<list type="table">1753<listheader>1754<term>Value</term>1755<description>Description</description>1756</listheader>1757<item>1758<term>=</term>1759<description>Equal.</description>1760</item>1761<item>1762<term>!=</term>1763<description>Not equal.</description>1764</item>1765<item>1766<term><</term>1767<description>1768Less than and preferring larger difference (the least is best).1769</description>1770</item>1771<item>1772<term>></term>1773<description>1774Greeater than and preferring larger differences (the most is1775best).1776</description>1777</item>1778<item>1779<term><=</term>1780<description>1781Less than or equal and preferring larger difference (the least is1782best).1783</description>1784</item>1785<item>1786<term>>=</term>1787<description>1788Greater than or equal and preferring more instead of less. This1789comparator is useful for allocating resources like color precsion1790or depth buffer precision where the maximum precison is1791generally preferred. Contrast with the tilde (~) comprator.1792</description>1793</item>1794<item>1795<term>~</term>1796<description>1797Greater than or equal but preferring less instead of more. This1798compartor is useful for allocating resources such as stencil bits1799or auxillary color buffers where you would rather not over1800allocate.1801</description>1802</item>1803</list>1804</para>1805<para>1806When the compartor and numeric value are not specified, each capability name1807has a different default (one default is to require a compartor and numeric1808value).1809</para>1810<para>1811The valid capability names are:1812</para>1813<para>1814<list type="table">1815<listheader>1816<term>Value</term>1817<description>Description</description>1818</listheader>1819<item>1820<term>alpha</term>1821<description>1822<para>1823Alpha color buffer precision in bits.1824</para>1825<para>1826Default is ">=1".1827</para>1828</description>1829</item>1830<item>1831<term>acca</term>1832<description>1833<para>1834Red, green, blue, and alpha accumulation buffer precision in1835bits.1836</para>1837<para>1838Default is ">=1" for red, green, blue, and alpha1839capabilities.1840</para>1841</description>1842</item>1843<item>1844<term>acc</term>1845<description>1846<para>1847Red, green, and green accumulation buffer precision in bits1848and zero bits of alpha accumulation buffer precision.1849</para>1850<para>1851Default is ">=1" for red, green, and blue capabilities,1852and "~0" for the alpha capability.1853</para>1854</description>1855</item>1856<item>1857<term>blue</term>1858<description>1859<para>1860Blue color buffer precision in bits.1861</para>1862<para>1863Default is ">=1".1864</para>1865</description>1866</item>1867<item>1868<term>buffer</term>1869<description>1870<para>1871Number of bits in the color index color buffer.1872</para>1873<para>1874Default is ">=1".1875</para>1876</description>1877</item>1878<item>1879<term>conformant</term>1880<description>1881<para>1882bool indicating if the frame buffer configuration is1883conformant or not. Conformance information is based on1884GLX's EXT_visual_rating extension if supported. If the1885extension is not supported, all visuals are assumed1886conformat.1887</para>1888<para>1889Default is "=1".1890</para>1891</description>1892</item>1893<item>1894<term>depth</term>1895<description>1896<para>1897Number of bits of precsion in the depth buffer.1898</para>1899<para>1900Default is ">=12".1901</para>1902</description>1903</item>1904<item>1905<term>double</term>1906<description>1907<para>1908bool indicating if the color buffer is double buffered.1909</para>1910<para>1911Default is "=1".1912</para>1913</description>1914</item>1915<item>1916<term>green</term>1917<description>1918<para>1919Green color buffer precision in bits.1920</para>1921<para>1922Default is ">=1".1923</para>1924</description>1925</item>1926<item>1927<term>index</term>1928<description>1929<para>1930bool if the color model is color index or not. True is1931color index.1932</para>1933<para>1934Default is ">=1".1935</para>1936</description>1937</item>1938<item>1939<term>num</term>1940<description>1941A special capability name indicating where the value represents1942the Nth frame buffer configuration matching the description1943string. When not specified, <b>glutInitDisplayString</b> also1944returns the first (best matching) configuration. <i>num</i>1945requires a compartor and numeric value.1946</description>1947</item>1948<item>1949<term>red</term>1950<description>1951<para>1952Red color buffer precision in bits.1953</para>1954<para>1955Default is ">=1".1956</para>1957</description>1958</item>1959<item>1960<term>rgba</term>1961<description>1962<para>1963Number of bits of red, green, blue, and alpha in the RGBA1964color buffer.1965</para>1966<para>1967Default is ">=1" for red, green, blue, and alpha1968capabilities, and "=1" for the RGBA color model capability.1969</para>1970</description>1971</item>1972<item>1973<term>rgb</term>1974<description>1975<para>1976Number of bits of red, green, and blue in the RGBA color1977buffer and zero bits of alpha color buffer precision.1978</para>1979<para>1980Default is ">=1" for the red, green, and blue capabilities,1981and "~0" for alpha capability, and "=1" for the RGBA color1982model capability.1983</para>1984</description>1985</item>1986<item>1987<term>luminance</term>1988<description>1989<para>1990Number of bits of red in the RGBA and zero bits of green, blue1991(alpha not specified) of color buffer precision.1992</para>1993<para>1994Default is ">=1" for the red capabilities, and "=0" for the1995green and blue capabilities, and "=1" for the RGBA color model1996capability, and, for X11, "=1" for the StaticGray1997("xstaticgray") capability.1998</para>1999<para>2000SGI InfiniteReality (and other future machines) support a200116-bit luminance (single channel) display mode (an additional200216-bit alpha channel can also be requested). The red channel2003maps to gray scale and green and blue channels are not2004available. A 16-bit precision luminance display mode is often2005appropriate for medical imaging applications. Do not expect2006many machines to support extended precision luminance display2007modes.2008</para>2009</description>2010</item>2011<item>2012<term>stencil</term>2013<description>Number of bits in the stencil buffer.</description>2014</item>2015<item>2016<term>single</term>2017<description>2018<para>2019bool indicate the color buffer is single buffered.2020</para>2021<para>2022double buffer capability "=1".2023</para>2024</description>2025</item>2026<item>2027<term>stereo</term>2028<description>2029<para>2030bool indicating the color buffer is supports OpenGL-style2031stereo.2032</para>2033<para>2034Default is "=1".2035</para>2036</description>2037</item>2038<item>2039<term>samples</term>2040<description>2041<para>2042Indicates the number of multisamples to use based on GLX's2043SGIS_multisample extension (for antialiasing).2044</para>2045<para>2046Default is "<=4". This default means that a GLUT2047application can request multipsampling if available by simply2048specifying "samples".2049</para>2050</description>2051</item>2052<item>2053<term>slow</term>2054<description>2055<para>2056bool indicating if the frame buffer configuration is slow2057or not. Slowness information is based on GLX's2058EXT_visual_rating extension if supported. If the extension is2059not supported, all visuals are assumed fast. Note that2060slowness is a relative designation relative to other frame2061buffer configurations available. The intent of the slow2062capability is to help programs avoid frame buffer2063configurations that are slower (but perhaps higher precision)2064for the current machine.2065</para>2066<para>2067Default is ">=0". This default means that slow visuals are2068used in preference to fast visuals, but fast visuals will2069still be allowed.2070</para>2071</description>2072</item>2073<item>2074<term>win32pfd</term>2075<description>2076Only recognized on GLUT implementations for Win32, this2077capability name matches the Win32 Pixel Format Descriptor by2078number. <i>win32pfd</i> requires a compartor and numeric value.2079</description>2080</item>2081<item>2082<term>xvisual</term>2083<description>2084Only recognized on GLUT implementations for the X Window System,2085this capability name matches the X visual ID by number.2086xvisual requires a compartor and numeric value.2087</description>2088</item>2089<item>2090<term>xstaticgray</term>2091<description>2092<para>2093Only recognized on GLUT implementations for the X Window2094System, boolean indicating if the frame buffer configuration's2095X visual is of type StaticGray.2096</para>2097<para>2098Default is "=1".2099</para>2100</description>2101</item>2102<item>2103<term>xgrayscale</term>2104<description>2105<para>2106Only recognized on GLUT implementations for the X Window2107System, boolean indicating if the frame buffer configuration's2108X visual is of type GrayScale.2109</para>2110<para>2111Default is "=1".2112</para>2113</description>2114</item>2115<item>2116<term>xstaticcolor</term>2117<description>2118<para>2119Only recognized on GLUT implementations for the X Window2120System, boolean indicating if the frame buffer configuration's2121X visual is of type StaticColor.2122</para>2123<para>2124Default is "=1".2125</para>2126</description>2127</item>2128<item>2129<term>xpseudocolor</term>2130<description>2131<para>2132Only recognized on GLUT implementations for the X Window2133System, boolean indicating if the frame buffer configuration's2134X visual is of type PsuedoColor.2135</para>2136<para>2137Default is "=1".2138</para>2139</description>2140</item>2141<item>2142<term>xtruecolor</term>2143<description>2144<para>2145Only recognized on GLUT implementations for the X Window2146System, boolean indicating if the frame buffer configuration's2147X visual is of type TrueColor.2148</para>2149<para>2150Default is "=1".2151</para>2152</description>2153</item>2154<item>2155<term>xdirectcolor</term>2156<description>2157<para>2158Only recognized on GLUT implementations for the X Window2159System, boolean indicating if the frame buffer configuration's2160X visual is of type DirectColor.2161</para>2162<para>2163Default is "=1".2164</para>2165</description>2166</item>2167</list>2168</para>2169<para>2170Unspecifed capability descriptions will result in unspecified criteria being2171generated. These unspecified criteria help <b>glutInitDisplayString</b>2172behave sensibly with terse display mode description strings.2173</para>2174<para>2175<b>EXAMPLE</b>2176</para>2177<para>2178Here is an example using <b>glutInitDisplayString</b>:2179</para>2180<para>2181<code>2182Glut.glutInitDisplayString("stencil~2 rgb double depth>=16 samples");2183</code>2184</para>2185<para>2186The above call requests a window with an RGBA color model (but requesting no2187bits of alpha), a depth buffer with at least 16 bits of precsion but2188preferring more, mutlisampling if available, and at least 2 bits of stencil2189(favoring less stencil to more as long as 2 bits are available).2190</para>2191</remarks>2192<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>2193<seealso cref="M:Tao.FreeGlut.Glut.glutInit"/>2194<seealso cref="M:Tao.FreeGlut.Glut.glutInitDisplayMode(System.Int32)"/>2195</member>2196<member name="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)">2197<summary>2198Sets the initial window position.2199</summary>2200<param name="x">2201Window X location in pixels.2202</param>2203<param name="y">2204Window Y location in pixels.2205</param>2206<remarks>2207<para>2208Windows created by <see cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/> will be requested to be2209created with the current initial window position. The initial value of the2210initial window position GLUT state is -1 and -1. If either the X or Y2211component to the initial window position is negative, the actual window2212position is left to the window system to determine.2213</para>2214<para>2215The intent of the initial window position values is to provide a suggestion to2216the window system for a window’s initial position. The window system is not2217obligated to use this information. Therefore, GLUT programs should not assume2218the window was created at the specified position.2219</para>2220<para>2221<b>Example</b>2222</para>2223<para>2224If you would like your GLUT program to default to starting at a given screen2225location and at a given size, but you would also like to let the user override2226these default via a command line argument (such as -geometry for X11), call2227<see cref="M:Tao.FreeGlut.Glut.glutInitWindowSize(System.Int32,System.Int32)"/> and <see cref="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)"/>2228before your call to <see cref="M:Tao.FreeGlut.Glut.glutInit"/>. For example:2229</para>2230<para>2231<code>2232using Tao.OpenGL;22332234[STAThread]2235public static void Main(string[] args) {2236Glut.glutInitWindowSize(500, 300);2237Glut.glutInitWindowPosition(100, 100);2238Glut.glutInit();2239}2240</code>2241</para>2242<para>2243However, if you'd like to force your program to start up at a given size and2244position, call <see cref="M:Tao.FreeGlut.Glut.glutInitWindowSize(System.Int32,System.Int32)"/> and2245<see cref="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)"/> after your call to2246<see cref="M:Tao.FreeGlut.Glut.glutInit"/>. For example:2247</para>2248<para>2249<code>2250using Tao.OpenGL;22512252[STAThread]2253public static void Main(string[] args) {2254Glut.glutInit();2255Glut.glutInitWindowSize(500, 300);2256Glut.glutInitWindowPosition(100, 100);2257}2258</code>2259</para>2260</remarks>2261<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>2262<seealso cref="M:Tao.FreeGlut.Glut.glutCreateSubWindow(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/>2263<seealso cref="M:Tao.FreeGlut.Glut.glutGet(System.Int32)"/>2264<seealso cref="M:Tao.FreeGlut.Glut.glutInit"/>2265<seealso cref="M:Tao.FreeGlut.Glut.glutInitWindowSize(System.Int32,System.Int32)"/>2266<seealso cref="M:Tao.FreeGlut.Glut.glutReshapeFunc(Tao.FreeGlut.Glut.ReshapeCallback)"/>2267<seealso cref="T:Tao.FreeGlut.Glut.ReshapeCallback"/>2268</member>2269<member name="M:Tao.FreeGlut.Glut.glutInitWindowSize(System.Int32,System.Int32)">2270<summary>2271Sets the initial window size.2272</summary>2273<param name="width">2274Width in pixels.2275</param>2276<param name="height">2277Height in pixels.2278</param>2279<remarks>2280<para>2281Windows created by <see cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/> will be requested to be2282created with the current initial window size. The initial value of the2283initial window size GLUT state is 300 by 300. The initial window size2284components must be greater than zero.2285</para>2286<para>2287The intent of the initial window size values is to provide a suggestion to the2288window system for a window’s initial size. The window system is not obligated2289to use this information. Therefore, GLUT programs should not assume the2290window was created at the specified size. A GLUT program should use the2291window’s reshape callback to determine the true size of the window.2292</para>2293<para>2294<b>Example</b>2295</para>2296<para>2297If you would like your GLUT program to default to starting at a given screen2298location and at a given size, but you would also like to let the user2299override these default via a command line argument (such as -geometry for2300X11), call <see cref="M:Tao.FreeGlut.Glut.glutInitWindowSize(System.Int32,System.Int32)"/> and2301<see cref="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)"/> before your call to2302<see cref="M:Tao.FreeGlut.Glut.glutInit"/>. For example:2303</para>2304<para>2305<code>2306using Tao.OpenGL;23072308[STAThread]2309public static void Main(string[] args) {2310Glut.glutInitWindowSize(500, 300);2311Glut.glutInitWindowPosition(100, 100);2312Glut.glutInit();2313}2314</code>2315</para>2316<para>2317However, if you'd like to force your program to start up at a given size and2318position, call <see cref="M:Tao.FreeGlut.Glut.glutInitWindowSize(System.Int32,System.Int32)"/> and2319<see cref="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)"/> after your call to2320<see cref="M:Tao.FreeGlut.Glut.glutInit"/>. For example:2321</para>2322<para>2323<code>2324using Tao.OpenGL;23252326[STAThread]2327public static void Main(string[] args) {2328Glut.glutInit();2329Glut.glutInitWindowSize(500, 300);2330Glut.glutInitWindowPosition(100, 100);2331}2332</code>2333</para>2334</remarks>2335<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>2336<seealso cref="M:Tao.FreeGlut.Glut.glutCreateSubWindow(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/>2337<seealso cref="M:Tao.FreeGlut.Glut.glutGet(System.Int32)"/>2338<seealso cref="M:Tao.FreeGlut.Glut.glutInit"/>2339<seealso cref="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)"/>2340<seealso cref="M:Tao.FreeGlut.Glut.glutReshapeFunc(Tao.FreeGlut.Glut.ReshapeCallback)"/>2341<seealso cref="T:Tao.FreeGlut.Glut.ReshapeCallback"/>2342</member>2343<member name="M:Tao.FreeGlut.Glut.glutMainLoop">2344<summary>2345Enters the GLUT event processing loop.2346</summary>2347<remarks>2348<b>glutMainLoop</b> enters the GLUT event processing loop. This routine2349should be called at most once in a GLUT program. Once called, this2350routine will never return. It will call as necessary any callbacks2351(delegates) that have been registered.2352</remarks>2353<seealso cref="M:Tao.FreeGlut.Glut.glutInit"/>2354</member>2355<member name="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)">2356<summary>2357Creates a top-level window.2358</summary>2359<param name="name">2360Character string for use as window name.2361</param>2362<returns>2363The value returned is a unique small integer identifier for the window. The2364range of allocated identifiers starts at one. This window identifier can be2365used when calling <see cref="M:Tao.FreeGlut.Glut.glutSetWindow(System.Int32)"/>.2366</returns>2367<remarks>2368<para>2369<b>glutCreateWindow</b> creates a top-level window. The <i>name</i> will be2370provided to the window system as the window’s title. The intent is that the2371window system will label the window with <i>name</i> as the title.2372</para>2373<para>2374Implicitly, the current window is set to the newly created window.2375</para>2376<para>2377Each created window has a unique associated OpenGL context. State changes to2378a window’s associated OpenGL context can be done immediately after the window2379is created.2380</para>2381<para>2382The display state of a window is initially for the window to be shown. But2383the window’s display state is not actually acted upon until2384<see cref="M:Tao.FreeGlut.Glut.glutMainLoop"/> is entered. This means until <b>glutMainLoop</b>2385is called, rendering to a created window is ineffective because the window can2386not yet be displayed.2387</para>2388<para>2389<b>X IMPLEMENTATION NOTES</b>2390</para>2391<para>2392The proper X Inter-Client Communications Convention Manual (ICCCM) top-level2393properties are established. The WM_COMMAND property that lists the2394commandline used to invoke the GLUT program is only established for the first2395window created.2396</para>2397</remarks>2398<seealso cref="M:Tao.FreeGlut.Glut.glutCreateMenu(Tao.FreeGlut.Glut.CreateMenuCallback)"/>2399<seealso cref="M:Tao.FreeGlut.Glut.glutCreateSubWindow(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/>2400<seealso cref="M:Tao.FreeGlut.Glut.glutDestroyWindow(System.Int32)"/>2401</member>2402<member name="M:Tao.FreeGlut.Glut.glutCreateSubWindow(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">2403<summary>2404Creates a subwindow.2405</summary>2406<param name="win">2407Identifier of the subwindow’s parent window.2408</param>2409<param name="x">2410Window X location in pixels relative to parent window’s origin.2411</param>2412<param name="y">2413Window Y location in pixels relative to parent window’s origin.2414</param>2415<param name="width">2416Width in pixels.2417</param>2418<param name="height">2419Height in pixels.2420</param>2421<returns>2422The value returned is a unique small integer identifier for the window. The2423range of allocated identifiers starts at one.2424</returns>2425<remarks>2426<para>2427<b>glutCreateSubWindow</b> creates a subwindow of the window identified by2428<i>win</i> of size <i>width</i> and <i>height</i> at location <i>x</i> and2429<i>y</i> within the current window. Implicitly, the current window is set to2430the newly created subwindow.2431</para>2432<para>2433Each created window has a unique associated OpenGL context. State changes to2434a window’s associated OpenGL context can be done immediately after the window2435is created.2436</para>2437<para>2438The display state of a window is initially for the window to be shown. But2439the window’s display state is not actually acted upon until2440<see cref="M:Tao.FreeGlut.Glut.glutMainLoop"/> is entered. This means until <b>glutMainLoop</b>2441is called, rendering to a created window is ineffective. Subwindows can not2442be iconified.2443</para>2444<para>2445Subwindows can be nested arbitrarily deep.2446</para>2447</remarks>2448<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>2449<seealso cref="M:Tao.FreeGlut.Glut.glutDestroyWindow(System.Int32)"/>2450</member>2451<member name="M:Tao.FreeGlut.Glut.glutDestroyWindow(System.Int32)">2452<summary>2453Destroys the specified window.2454</summary>2455<param name="win">2456Identifier of GLUT window to destroy.2457</param>2458<remarks>2459<b>glutDestroyWindow</b> destroys the window specified by <i>win</i> and the2460window’s associated OpenGL context, logical colormap (if the window is color2461index), and overlay and related state (if an overlay has been established).2462Any subwindows of destroyed windows are also destroyed by2463<b>glutDestroyWindow</b>. If <i>win</i> was the current window, the current2464window becomes invalid (<see cref="M:Tao.FreeGlut.Glut.glutGetWindow"/> will return zero).2465</remarks>2466<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>2467<seealso cref="M:Tao.FreeGlut.Glut.glutCreateSubWindow(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/>2468<seealso cref="M:Tao.FreeGlut.Glut.glutDestroyMenu(System.Int32)"/>2469</member>2470<member name="M:Tao.FreeGlut.Glut.glutPostRedisplay">2471<summary>2472Marks the current window as needing to be redisplayed.2473</summary>2474<remarks>2475<para>2476<b>glutPostRedisplay</b> marks the normal plane of current window as needing2477to be redisplayed. The next iteration through <see cref="M:Tao.FreeGlut.Glut.glutMainLoop"/>,2478the window's display callback will be called to redisplay the window's normal2479plane. Multiple calls to <b>glutPostRedisplay</b> before the next display2480callback opportunity generates only a single redisplay callback.2481<b>glutPostRedisplay</b> may be called within a window's display or overlay2482display callback to re-mark that window for redisplay.2483</para>2484<para>2485Logically, normal plane damage notification for a window is treated as a2486<b>glutPostRedisplay</b> on the damaged window. Unlike damage reported by the2487window system, <b>glutPostRedisplay</b> will not set to <c>true</c> the normal2488plane's damaged status (returned by2489<c>Glut.glutLayerGet(Glut.GLUT_NORMAL_DAMAGED)</c>.2490</para>2491<para>2492If the window you want to post a redisplay on is not already current (and you2493do not require it to be immediately made current), using2494<see cref="M:Tao.FreeGlut.Glut.glutPostWindowRedisplay(System.Int32)"/> is more efficient than calling2495<see cref="M:Tao.FreeGlut.Glut.glutSetWindow(System.Int32)"/> to the desired window and then calling2496<b>glutPostRedisplay</b>.2497</para>2498</remarks>2499<seealso cref="M:Tao.FreeGlut.Glut.glutDisplayFunc(Tao.FreeGlut.Glut.DisplayCallback)"/>2500<seealso cref="M:Tao.FreeGlut.Glut.glutPostOverlayRedisplay"/>2501<seealso cref="M:Tao.FreeGlut.Glut.glutPostWindowRedisplay(System.Int32)"/>2502</member>2503<member name="M:Tao.FreeGlut.Glut.glutPostWindowRedisplay(System.Int32)">2504<summary>2505Marks the specified window as needing to be redisplayed.2506</summary>2507<param name="win">2508Identifier of GLUT window to mark for redisplay.2509</param>2510<remarks>2511<para>2512<b>glutPostWindowRedisplay</b> marks the specified window as needing to be2513redisplayed. The next iteration through <see cref="M:Tao.FreeGlut.Glut.glutMainLoop"/>, the2514window's display callback will be called to redisplay the window's normal2515plane.2516</para>2517<para>2518If the window you want to post a redisplay on is not already current (and you2519do not require it to be immediately made current), using2520<b>glutPostWindowRedisplay</b> is more efficient than calling2521<see cref="M:Tao.FreeGlut.Glut.glutSetWindow(System.Int32)"/> to the desired window and then calling2522<see cref="M:Tao.FreeGlut.Glut.glutPostRedisplay"/>.2523</para>2524</remarks>2525<seealso cref="M:Tao.FreeGlut.Glut.glutDisplayFunc(Tao.FreeGlut.Glut.DisplayCallback)"/>2526<seealso cref="M:Tao.FreeGlut.Glut.glutPostOverlayRedisplay"/>2527<seealso cref="M:Tao.FreeGlut.Glut.glutPostRedisplay"/>2528</member>2529<member name="M:Tao.FreeGlut.Glut.glutSwapBuffers">2530<summary>2531Swaps the buffers of the current window if double buffered.2532</summary>2533<remarks>2534<para>2535Performs a buffer swap on the layer in use for the current window.2536Specifically, <b>glutSwapBuffers</b> promotes the contents of the back buffer2537of the layer in use of the current window to become the contents of the front2538buffer. The contents of the back buffer then become undefined. The update2539typically takes place during the vertical retrace of the monitor, rather than2540immediately after <b>glutSwapBuffers</b> is called.2541</para>2542<para>2543An implicit <see cref="M:Tao.OpenGl.Gl.glFlush"/> is done by <b>glutSwapBuffers</b> before2544it returns. Subsequent OpenGL commands can be issued immediately after2545calling <b>glutSwapBuffers</b>, but are not executed until the buffer exchange2546is completed.2547</para>2548<para>2549If the layer in use is not double buffered, <b>glutSwapBuffers</b> has no2550effect.2551</para>2552</remarks>2553<seealso cref="M:Tao.FreeGlut.Glut.glutDisplayFunc(Tao.FreeGlut.Glut.DisplayCallback)"/>2554<seealso cref="M:Tao.FreeGlut.Glut.glutPostRedisplay"/>2555</member>2556<member name="M:Tao.FreeGlut.Glut.glutGetWindow">2557<summary>2558Returns the identifier of the current window.2559</summary>2560<returns>2561<b>glutGetWindow</b> returns the identifier of the current window. If no2562windows exist or the previously current window was destroyed,2563<b>glutGetWindow</b> returns zero.2564</returns>2565<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>2566<seealso cref="M:Tao.FreeGlut.Glut.glutSetWindow(System.Int32)"/>2567</member>2568<member name="M:Tao.FreeGlut.Glut.glutSetWindow(System.Int32)">2569<summary>2570Sets the current window.2571</summary>2572<param name="win">2573Identifier of GLUT window to make the current window.2574</param>2575<remarks>2576<b>glutSetWindow</b> sets the current window. <b>glutSetWindow</b> does not2577change the layer in use for the window; this is done using2578<see cref="M:Tao.FreeGlut.Glut.glutUseLayer(System.Int32)"/>.2579</remarks>2580<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>2581<seealso cref="M:Tao.FreeGlut.Glut.glutGetWindow"/>2582<seealso cref="M:Tao.FreeGlut.Glut.glutSetMenu(System.Int32)"/>2583</member>2584<member name="M:Tao.FreeGlut.Glut.glutSetWindowTitle(System.String)">2585<summary>2586Changes the window title of the current top-level window.2587</summary>2588<param name="name">2589Character string for the window name to be set for the window.2590</param>2591<remarks>2592<b>glutSetWindowTitle</b> should be called only when the current window is a2593top-level window. Upon creation of a top-level window, the window title is2594determined by the <i>name</i> parameter to <see cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>.2595Once created, <b>glutSetWindowTitle</b> can change the window title of2596top-level windows. Each call requests the window system change the title2597appropriately. Requests are not buffered or coalesced. The policy by which2598the window title is displayed is window system dependent.2599</remarks>2600<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>2601<seealso cref="M:Tao.FreeGlut.Glut.glutSetIconTitle(System.String)"/>2602</member>2603<member name="M:Tao.FreeGlut.Glut.glutSetIconTitle(System.String)">2604<summary>2605Changes the icon title of the current top-level window.2606</summary>2607<param name="name">2608Character string for the icon name to be set for the window.2609</param>2610<remarks>2611<b>glutSetIconTitle</b> should be called only when the current window is a2612top-level window. Upon creation of a top-level window, the icon name is2613determined by the <i>name</i> parameter to <see cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>.2614Once created, <b>glutSetIconTitle</b> can change the icon name of top-level2615windows. Each call requests the window system change the name appropriately.2616Requests are not buffered or coalesced. The policy by which the icon name are2617displayed is window system dependent.2618</remarks>2619<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>2620<seealso cref="M:Tao.FreeGlut.Glut.glutIconifyWindow"/>2621<seealso cref="M:Tao.FreeGlut.Glut.glutSetWindowTitle(System.String)"/>2622</member>2623<member name="M:Tao.FreeGlut.Glut.glutPositionWindow(System.Int32,System.Int32)">2624<summary>2625Requests a change to the position of the current window.2626</summary>2627<param name="x">2628New X location of window in pixels.2629</param>2630<param name="y">2631New Y location of window in pixels.2632</param>2633<remarks>2634<para>2635<b>glutPositionWindow</b> requests a change in the position of the current2636window. For top-level windows, the <i>x</i> and <i>y</i> parameters are2637pixel offsets from the screen origin. For subwindows, the <i>x</i> and2638<i>y</i> parameters are pixel offsets from the window's parent window origin.2639</para>2640<para>2641The requests by <b>glutPositionWindow</b> are not processed immediately. The2642request is executed after returning to the main event loop. This allows2643multiple <b>glutPositionWindow</b>, <see cref="M:Tao.FreeGlut.Glut.glutReshapeWindow(System.Int32,System.Int32)"/>, and2644<see cref="M:Tao.FreeGlut.Glut.glutFullScreen"/> requests to the same window to be coalesced.2645</para>2646<para>2647In the case of top-level windows, a <b>glutPositionWindow</b> call is2648considered only a request for positioning the window. The window system is2649free to apply its own policies to top-level window placement. The intent is2650that top-level windows should be repositioned according to2651<b>glutPositionWindow's</b> parameters.2652</para>2653<para>2654<b>glutPositionWindow</b> disables the full screen status of a window if2655previously enabled.2656</para>2657</remarks>2658<seealso cref="M:Tao.FreeGlut.Glut.glutInitWindowPosition(System.Int32,System.Int32)"/>2659<seealso cref="M:Tao.FreeGlut.Glut.glutReshapeWindow(System.Int32,System.Int32)"/>2660</member>2661<member name="M:Tao.FreeGlut.Glut.glutReshapeWindow(System.Int32,System.Int32)">2662<summary>2663Requests a change to the size of the current window.2664</summary>2665<param name="width">2666New width of window in pixels.2667</param>2668<param name="height">2669New height of window in pixels.2670</param>2671<remarks>2672<para>2673<b>glutReshapeWindow</b> requests a change in the size of the current window.2674The <i>width</i> and <i>height</i> parameters are size extents in pixels. The2675<i>width</i> and <i>height</i> must be positive values.2676</para>2677<para>2678The requests by <b>glutReshapeWindow</b> are not processed immediately. The2679request is executed after returning to the main event loop. This allows2680multiple <b>glutReshapeWindow</b>, <see cref="M:Tao.FreeGlut.Glut.glutPositionWindow(System.Int32,System.Int32)"/>, and2681<see cref="M:Tao.FreeGlut.Glut.glutFullScreen"/> requests to the same window to be coalesced.2682</para>2683<para>2684In the case of top-level windows, a <b>glutReshapeWindow</b> call is2685considered only a request for sizing the window. The window system is free to2686apply its own policies to top-level window sizing. The intent is that2687top-level windows should be reshaped according to <b>glutReshapeWindow's</b>2688parameters. Whether a reshape actually takes effect and, if so, the reshaped2689dimensions are reported to the program by a reshape callback.2690</para>2691<para>2692<b>glutReshapeWindow</b> disables the full screen status of a window if2693previously enabled.2694</para>2695</remarks>2696<seealso cref="M:Tao.FreeGlut.Glut.glutPositionWindow(System.Int32,System.Int32)"/>2697<seealso cref="M:Tao.FreeGlut.Glut.glutReshapeFunc(Tao.FreeGlut.Glut.ReshapeCallback)"/>2698</member>2699<member name="M:Tao.FreeGlut.Glut.glutPopWindow">2700<summary>2701Changes the stacking order of the current window relative to its siblings.2702</summary>2703<remarks>2704<b>glutPopWindow</b> works on both top-level windows and subwindows. The2705effect of popping windows does not take place immediately. Instead the pop is2706saved for execution upon return to the GLUT event loop. Subsequent pop2707requests on a window replace the previously saved request for that window.2708The effect of popping top-level windows is subject to the window system's2709policy for restacking windows.2710</remarks>2711<seealso cref="M:Tao.FreeGlut.Glut.glutHideWindow"/>2712<seealso cref="M:Tao.FreeGlut.Glut.glutIconifyWindow"/>2713<seealso cref="M:Tao.FreeGlut.Glut.glutPushWindow"/>2714<seealso cref="M:Tao.FreeGlut.Glut.glutShowWindow"/>2715</member>2716<member name="M:Tao.FreeGlut.Glut.glutPushWindow">2717<summary>2718Changes the stacking order of the current window relative to its siblings.2719</summary>2720<remarks>2721<b>glutPushWindow</b> works on both top-level windows and subwindows. The2722effect of pushing windows does not take place immediately. Instead the push2723is saved for execution upon return to the GLUT event loop. Subsequent push2724requests on a window replace the previously saved request for that window.2725The effect of pushing top-level windows is subject to the window system's2726policy for restacking windows.2727</remarks>2728<seealso cref="M:Tao.FreeGlut.Glut.glutHideWindow"/>2729<seealso cref="M:Tao.FreeGlut.Glut.glutIconifyWindow"/>2730<seealso cref="M:Tao.FreeGlut.Glut.glutPopWindow"/>2731<seealso cref="M:Tao.FreeGlut.Glut.glutShowWindow"/>2732</member>2733<member name="M:Tao.FreeGlut.Glut.glutIconifyWindow">2734<summary>2735Changes the display status of the current window.2736</summary>2737<remarks>2738<b>glutIconifyWindow</b> will iconify a top-level window, but GLUT prohibits2739iconification of a subwindow. The effect of iconifying windows does not take2740place immediately. Instead the requests are saved for execution upon return2741to the GLUT event loop. Subsequent iconification requests on a window replace2742the previously saved request for that window. The effect of iconifying2743top-level windows is subject to the window system's policy for displaying2744windows.2745</remarks>2746<seealso cref="M:Tao.FreeGlut.Glut.glutHideWindow"/>2747<seealso cref="M:Tao.FreeGlut.Glut.glutPopWindow"/>2748<seealso cref="M:Tao.FreeGlut.Glut.glutPushWindow"/>2749<seealso cref="M:Tao.FreeGlut.Glut.glutShowWindow"/>2750</member>2751<member name="M:Tao.FreeGlut.Glut.glutShowWindow">2752<summary>2753Changes the display status of the current window.2754</summary>2755<remarks>2756<b>glutShowWindow</b> will show the current window (though it may still not be2757visible if obscured by other shown windows). The effect of showing windows2758does not take place immediately. Instead the requests are saved for execution2759upon return to the GLUT event loop. Subsequent show requests on a window2760replace the previously saved request for that window. The effect of showing2761top-level windows is subject to the window system's policy for displaying2762windows.2763</remarks>2764<seealso cref="M:Tao.FreeGlut.Glut.glutHideWindow"/>2765<seealso cref="M:Tao.FreeGlut.Glut.glutIconifyWindow"/>2766<seealso cref="M:Tao.FreeGlut.Glut.glutPopWindow"/>2767<seealso cref="M:Tao.FreeGlut.Glut.glutPushWindow"/>2768</member>2769<member name="M:Tao.FreeGlut.Glut.glutHideWindow">2770<summary>2771Changes the display status of the current window.2772</summary>2773<remarks>2774<b>glutHideWindow</b> will hide the current window. The effect of hiding2775windows does not take place immediately. Instead the requests are saved for2776execution upon return to the GLUT event loop. Subsequent hide requests on a2777window replace the previously saved request for that window. The effect of2778hiding top-level windows is subject to the window system's policy for2779displaying windows.2780</remarks>2781<seealso cref="M:Tao.FreeGlut.Glut.glutIconifyWindow"/>2782<seealso cref="M:Tao.FreeGlut.Glut.glutPopWindow"/>2783<seealso cref="M:Tao.FreeGlut.Glut.glutPushWindow"/>2784<seealso cref="M:Tao.FreeGlut.Glut.glutShowWindow"/>2785</member>2786<member name="M:Tao.FreeGlut.Glut.glutFullScreen">2787<summary>2788Requests that the current window be made full screen.2789</summary>2790<remarks>2791<para>2792<b>glutFullScreen</b> requests that the current window be made full screen.2793The exact semantics of what full screen means may vary by window system. The2794intent is to make the window as large as possible and disable any window2795decorations or borders added by the window system. The window width and2796height are not guaranteed to be the same as the screen width and height, but2797that is the intent of making a window full screen.2798</para>2799<para>2800<b>glutFullScreen</b> is defined to work only on top-level windows.2801</para>2802<para>2803The <b>glutFullScreen</b> requests are not processed immediately. The request2804is executed after returning to the main event loop. This allows multiple2805<see cref="M:Tao.FreeGlut.Glut.glutReshapeWindow(System.Int32,System.Int32)"/>, <see cref="M:Tao.FreeGlut.Glut.glutPositionWindow(System.Int32,System.Int32)"/>, and2806<b>glutFullScreen</b> requests to the same window to be coalesced.2807</para>2808<para>2809Subsequent <b>glutReshapeWindow</b> and <b>glutPositionWindow</b> requests on2810the window will disable the full screen status of the window.2811</para>2812<para>2813<b>X IMPLEMENTATION NOTES</b>2814</para>2815<para>2816In the X implementation of GLUT, full screen is implemented by sizing and2817positioning the window to cover the entire screen and posting the2818_MOTIF_WM_HINTS property on the window requesting absolutely no decorations.2819Non-Motif window managers may not respond to _MOTIF_WM_HINTS.2820</para>2821</remarks>2822<seealso cref="M:Tao.FreeGlut.Glut.glutPositionWindow(System.Int32,System.Int32)"/>2823<seealso cref="M:Tao.FreeGlut.Glut.glutReshapeWindow(System.Int32,System.Int32)"/>2824</member>2825<member name="M:Tao.FreeGlut.Glut.glutSetCursor(System.Int32)">2826<summary>2827Changes the cursor image of the current window.2828</summary>2829<param name="cursor">2830<para>2831Name of cursor image to change to. Possible values follow:2832</para>2833<para>2834<list type="table">2835<listheader>2836<term>Value</term>2837<description>Description</description>2838</listheader>2839<item>2840<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_RIGHT_ARROW"/></term>2841<description>Arrow pointing up and to the right.</description>2842</item>2843<item>2844<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_LEFT_ARROW"/></term>2845<description>Arrow pointing up and to the left.</description>2846</item>2847<item>2848<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_INFO"/></term>2849<description>Pointing hand.</description>2850</item>2851<item>2852<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_DESTROY"/></term>2853<description>Skull and cross bones.</description>2854</item>2855<item>2856<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_HELP"/></term>2857<description>Question mark.</description>2858</item>2859<item>2860<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_CYCLE"/></term>2861<description>Arrows rotating in a circle.</description>2862</item>2863<item>2864<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_SPRAY"/></term>2865<description>Spray can.</description>2866</item>2867<item>2868<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_WAIT"/></term>2869<description>Wrist watch.</description>2870</item>2871<item>2872<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_TEXT"/></term>2873<description>Insertion point cursor for text.</description>2874</item>2875<item>2876<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_CROSSHAIR"/></term>2877<description>Simple cross-hair.</description>2878</item>2879<item>2880<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_UP_DOWN"/></term>2881<description>Bi-directional pointing up and down.</description>2882</item>2883<item>2884<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_LEFT_RIGHT"/></term>2885<description>Bi-directional pointing left and right.</description>2886</item>2887<item>2888<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_TOP_SIDE"/></term>2889<description>Arrow pointing to top side.</description>2890</item>2891<item>2892<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_BOTTOM_SIDE"/></term>2893<description>Arrow pointing to bottom side.</description>2894</item>2895<item>2896<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_LEFT_SIDE"/></term>2897<description>Arrow pointing to left side.</description>2898</item>2899<item>2900<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_RIGHT_SIDE"/></term>2901<description>Arrow pointing to right side.</description>2902</item>2903<item>2904<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_TOP_LEFT_CORNER"/></term>2905<description>Arrow pointing to top-left corner.</description>2906</item>2907<item>2908<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_TOP_RIGHT_CORNER"/></term>2909<description>Arrow pointing to top-right corner.</description>2910</item>2911<item>2912<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_BOTTOM_RIGHT_CORNER"/></term>2913<description>Arrow pointing to bottom-right corner.</description>2914</item>2915<item>2916<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_BOTTOM_LEFT_CORNER"/></term>2917<description>Arrow pointing to bottom-left corner.</description>2918</item>2919<item>2920<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_FULL_CROSSHAIR"/></term>2921<description>2922Full-screen cross-hair cursor (if possible, otherwise2923<see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_CROSSHAIR"/>).2924</description>2925</item>2926<item>2927<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_NONE"/></term>2928<description>Invisible cursor.</description>2929</item>2930<item>2931<term><see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_INHERIT"/></term>2932<description>Use parent's cursor.</description>2933</item>2934</list>2935</para>2936</param>2937<remarks>2938<para>2939<b>glutSetCursor</b> changes the cursor image of the current window. Each2940call requests the window system change the cursor appropriately. The cursor2941image when a window is created is <see cref="F:Tao.FreeGlut.Glut.GLUT_CURSOR_INHERIT"/>. The2942exact cursor images used are implementation dependent. The intent is for the2943image to convey the meaning of the cursor name. For a top-level window,2944<i>GLUT_CURSOR_INHERIT</i> uses the default window system cursor.2945</para>2946<para>2947<b>X IMPLEMENTATION NOTES</b>2948</para>2949<para>2950GLUT for X uses SGI's _SGI_CROSSHAIR_CURSOR convention to access a full-screen2951cross-hair cursor if possible.2952</para>2953</remarks>2954<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>2955<seealso cref="M:Tao.FreeGlut.Glut.glutCreateSubWindow(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)"/>2956</member>2957<member name="M:Tao.FreeGlut.Glut.glutWarpPointer(System.Int32,System.Int32)">2958<summary>2959Warps the pointer's location.2960</summary>2961<param name="x">2962X offset relative to the current window's origin (upper left).2963</param>2964<param name="y">2965Y offset relative to the current window's origin (upper left).2966</param>2967<remarks>2968<para>2969<b>glutWarpPointer</b> warps the window system's pointer to a new location2970relative to the origin of the current window. The new location will be offset2971<i>x</i> pixels on the X axis and <i>y</i> pixels on the Y axis. These2972parameters may be negative. The warp is done immediately.2973</para>2974<para>2975If the pointer would be warped outside the screen's frame buffer region, the2976location will be clamped to the nearest screen edge. The window system is2977allowed to further constrain the pointer's location in window system dependent2978ways.2979</para>2980<para>2981The following is good advice that applies to <b>glutWarpPointer</b>: "There is2982seldom any reason for calling this function. The pointer should normally be2983left to the user." (from Xlib's XWarpPointer man page.)2984</para>2985</remarks>2986<seealso cref="M:Tao.FreeGlut.Glut.glutMotionFunc(Tao.FreeGlut.Glut.MotionCallback)"/>2987<seealso cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>2988</member>2989<member name="M:Tao.FreeGlut.Glut.glutEstablishOverlay">2990<summary>2991Establishes an overlay (if possible) for the current window.2992</summary>2993<remarks>2994<para>2995<b>glutEstablishOverlay</b> establishes an overlay (if possible) for the2996current window. The requested display mode for the overlay is determined by2997the initial display mode. <c>glutLayerGet(GLUT_OVERLAY_POSSIBLE)</c> can be2998called to determine if an overlay is possible for the current window with the2999current initial display mode. Do not attempt to establish an overlay when3000one is not possible; GLUT will terminate the program.3001</para>3002<para>3003If <b>glutEstablishOverlay</b> is called when an overlay already exists, the3004existing overlay is first removed, and then a new overlay is established. The3005state of the old overlay's OpenGL context is discarded.3006</para>3007<para>3008The initial display state of an overlay is shown, however the overlay is only3009actually shown if the overlay's window is shown.3010</para>3011<para>3012Implicitly, the window's layer in use changes to the overlay immediately after3013the overlay is established.3014</para>3015<para>3016<b>EXAMPLE</b>3017</para>3018<para>3019Establishing an overlay is a bit involved, but easy once you get the hang of3020it. Here is an example:3021</para>3022<para>3023<code>3024int overlaySupport;3025int transparent, red, white;30263027Glut.glutInitDisplayMode(Glut.GLUT_SINGLE | Glut.GLUT_INDEX);3028overlaySupport = Glut.glutLayerGet(Glut.GLUT_OVERLAY_POSSIBLE);30293030if(overlaySupport) {3031Glut.glutEstablishOverlay();3032Glut.glutHideOverlay();3033transparent = Glut.glutLayerGet(Glut.GLUT_TRANSPARENT_INDEX);3034Gl.glClearIndex(transparent);3035red = (transparent + 1) % Glut.glutGet(Glut.GLUT_WINDOW_COLORMAP_SIZE);3036white = (transparent + 2) % Glut.glutGet(Glut.GLUT_WINDOW_COLORMAP_SIZE);3037Glut.glutSetColor(red, 1.0f, 0.0f, 0.0f);3038Glut.glutSetColor(white, 1.0f, 1.0f, 1.0f);3039Glut.glutOverlayDisplayFunc(redrawOverlay);3040Glut.glutReshapFunc(reshape);3041}3042else {3043System.Console.WriteLine("Sorry, no nifty overlay support!");3044}3045</code>3046</para>3047<para>3048If you setup an overlay and you install a reshape callback, you need to update3049the viewports and possibly projection matrices of both the normal plane and3050the overlay. For example, your reshape callback might look like this:3051</para>3052<para>3053<code>3054private void Reshape(int w, int h) {3055if(overlaySupport) {3056Glut.glutUseLayer(Glut.GLUT_OVERLAY);3057Gl.glViewport(0, 0, w, h);3058Gl.glMatrixMode(Gl.GL_PROJECTION);3059Gl.glLoadIdentity();3060Glu.gluOrtho2D(0, w, 0, h);3061Gl.glScalef(1, -1, 1);3062Gl.glTranslatef(0, -h, 0);3063Gl.glMatrixMode(Gl.GL_MODELVIEW);3064Glut.glutUseLayer(Glut.GLUT_NORMAL);3065}3066Gl.glViewport(0, 0, w, h);3067}3068</code>3069</para>3070<para>3071See <see cref="M:Tao.FreeGlut.Glut.glutOverlayDisplayFunc(Tao.FreeGlut.Glut.OverlayDisplayCallback)"/> for an example showing one way to3072write your overlay display callback.3073</para>3074<para>3075<b>X IMPLEMENTATION NOTES</b>3076</para>3077<para>3078GLUT for X uses the SERVER_OVERLAY_VISUALS convention to determine if overlay3079visuals are available. While the convention allows for opaque overlays (no3080transparency) and overlays with the transparency specified as a bitmask, GLUT3081overlay management only provides access to transparent pixel overlays.3082</para>3083<para>3084Until RGBA overlays are better understood, GLUT only supports color index3085overlays.3086</para>3087</remarks>3088<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>3089<seealso cref="M:Tao.FreeGlut.Glut.glutLayerGet(System.Int32)"/>3090<seealso cref="M:Tao.FreeGlut.Glut.glutOverlayDisplayFunc(Tao.FreeGlut.Glut.OverlayDisplayCallback)"/>3091<seealso cref="M:Tao.FreeGlut.Glut.glutPostOverlayRedisplay"/>3092<seealso cref="M:Tao.FreeGlut.Glut.glutRemoveOverlay"/>3093<seealso cref="M:Tao.FreeGlut.Glut.glutShowOverlay"/>3094<seealso cref="M:Tao.FreeGlut.Glut.glutUseLayer(System.Int32)"/>3095</member>3096<member name="M:Tao.FreeGlut.Glut.glutRemoveOverlay">3097<summary>3098Removes the overlay (if one exists) from the current window.3099</summary>3100<remarks>3101<para>3102<b>glutRemoveOverlay</b> removes the overlay (if one exists). It is safe to3103call <b>glutRemoveOverlay</b> even if no overlay is currently established --3104it does nothing in this case. Implicitly, the window's layer in use changes3105to the normal plane immediately once the overlay is removed.3106</para>3107<para>3108If the program intends to re-establish the overlay later, it is typically3109faster and less resource intensive to use <see cref="M:Tao.FreeGlut.Glut.glutHideOverlay"/> and3110<see cref="M:Tao.FreeGlut.Glut.glutShowOverlay"/> to simply change the display status of the3111overlay.3112</para>3113</remarks>3114<seealso cref="M:Tao.FreeGlut.Glut.glutDestroyWindow(System.Int32)"/>3115<seealso cref="M:Tao.FreeGlut.Glut.glutEstablishOverlay"/>3116</member>3117<member name="M:Tao.FreeGlut.Glut.glutUseLayer(System.Int32)">3118<summary>3119Changes the layer in use for the current window.3120</summary>3121<param name="layer">3122Either <see cref="F:Tao.FreeGlut.Glut.GLUT_NORMAL"/> or <see cref="F:Tao.FreeGlut.Glut.GLUT_OVERLAY"/>, selecting3123the normal plane or overlay respectively.3124</param>3125<remarks>3126<para>3127<b>glutUseLayer</b> changes the per-window layer in use for the current3128window, selecting either the normal plane or overlay. The overlay should only3129be specified if an overlay exists, however windows without an overlay may3130still call <c>Glut.glutUseLayer(Glut.GLUT_NORMAL)</c>. OpenGL commands for3131the window are directed to the current layer in use.3132</para>3133<para>3134To query the layer in use for a window, call3135<c>Glut.glutLayerGet(Glut.GLUT_LAYER_IN_USE)</c>.3136</para>3137</remarks>3138<seealso cref="M:Tao.FreeGlut.Glut.glutEstablishOverlay"/>3139<seealso cref="M:Tao.FreeGlut.Glut.glutSetWindow(System.Int32)"/>3140</member>3141<member name="M:Tao.FreeGlut.Glut.glutPostOverlayRedisplay">3142<summary>3143Marks the overlay of the current window as needing to be redisplayed.3144</summary>3145<remarks>3146<para>3147<b>glutPostOverlayRedisplay</b> marks the overlay of current window as needing3148to be redisplayed. The next iteration through <see cref="M:Tao.FreeGlut.Glut.glutMainLoop"/>,3149the window's overlay display callback (or simply the display callback if no3150overlay display callback is registered) will be called to redisplay the3151window's overlay plane. Multiple calls to <b>glutPostOverlayRedisplay</b>3152before the next display callback opportunity (or overlay display callback3153opportunity if one is registered) generate only a single redisplay.3154<b>glutPostOverlayRedisplay</b> may be called within a window's display or3155overlay display callback to re-mark that window for redisplay.3156</para>3157<para>3158Logically, overlay damage notification for a window is treated as a3159<b>glutPostOverlayRedisplay</b> on the damaged window. Unlike damage reported3160by the window system, <b>glutPostOverlayRedisplay</b> will not set to3161<c>true</c> the overlay's damaged status (returned by3162<c>Glut.glutLayerGet(Glut.GLUT_OVERLAY_DAMAGED)</c>.3163</para>3164<para>3165If the window you want to post an overlay redisplay on is not already current3166(and you do not require it to be immediately made current), using3167<see cref="M:Tao.FreeGlut.Glut.glutPostWindowOverlayRedisplay(System.Int32)"/> is more efficient than calling3168<see cref="M:Tao.FreeGlut.Glut.glutSetWindow(System.Int32)"/> to the desired window and then calling3169<b>glutPostOverlayRedisplay</b>.3170</para>3171<para>3172<b>EXAMPLE</b>3173</para>3174<para>3175If you are doing an interactive effect like rubberbanding in the overlay, it3176is a good idea to structure your rendering to minimize flicker (most overlays3177are single-buffered). Only clear the overlay if you know that the window has3178been damaged. Otherwise, try to simply erase what you last drew and redraw3179it in an updated position. Here is an example overlay display callback used3180to implement overlay rubberbanding:3181</para>3182<para>3183<code>3184private void redrawOverlay() {3185static int prevStretchX, prevStretchY;31863187if(Glut.glutLayerGet(Glut.GLUT_OVERLAY_DAMAGED)) {3188// Damage means we need a full clear.3189Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);3190}3191else {3192// Undraw last rubber-band.3193Gl.glBegin(Gl.GL_LINE_LOOP);3194Gl.glVertex2i(anchorX, anchorY);3195Gl.glVertex2i(anchorX, prevStretchY);3196Gl.glVertex2i(prevStretchX, anchorY);3197Gl.glEnd();3198}31993200Gl.glIndexi(red);3201Gl.glBegin(Gl.GL_LINE_LOOP);3202Gl.glVertex2i(anchorX, anchorY);3203Gl.glVertex2i(anchorX, stretchY);3204Gl.glVertex2i(stretchX, stretchY);3205Gl.glVertex2i(stretchX, anchorY);3206Gl.glEnd();32073208prevStretchX = stretchX;3209prevStretchY = stretchY;3210}3211</code>3212</para>3213<para>3214Notice how <c>Glut.glutLayerGet(Glut.GLUT_OVERLAY_DAMAGED)</c> is used to3215determine if a clear needs to take place because of damage; if a clear is3216unnecessary, it is faster to just draw the last rubberband using the3217transparent pixel.3218</para>3219<para>3220When the application is through with the rubberbanding effect, the best way to3221get rid of the rubberband is to simply hide the overlay by calling3222<see cref="M:Tao.FreeGlut.Glut.glutHideOverlay"/>.3223</para>3224</remarks>3225<seealso cref="M:Tao.FreeGlut.Glut.glutEstablishOverlay"/>3226<seealso cref="M:Tao.FreeGlut.Glut.glutHideOverlay"/>3227<seealso cref="M:Tao.FreeGlut.Glut.glutLayerGet(System.Int32)"/>3228<seealso cref="M:Tao.FreeGlut.Glut.glutMainLoop"/>3229<seealso cref="M:Tao.FreeGlut.Glut.glutPostRedisplay"/>3230<seealso cref="M:Tao.FreeGlut.Glut.glutPostWindowOverlayRedisplay(System.Int32)"/>3231</member>3232<member name="M:Tao.FreeGlut.Glut.glutPostWindowOverlayRedisplay(System.Int32)">3233<summary>3234Marks the overlay of the specified window as needing to be redisplayed.3235</summary>3236<param name="win">3237Identifier of GLUT window for which to post the overlay redisplay.3238</param>3239<remarks>3240<para>3241<b>glutPostWindowOverlayRedisplay</b> marks the overlay of specified window as3242needing to be redisplayed. The next iteration through3243<see cref="M:Tao.FreeGlut.Glut.glutMainLoop"/>, the window's overlay display callback (or simply3244the display callback if no overlay display callback is registered) will be3245called to redisplay the window's overlay plane. Multiple calls to3246<b>glutPostWindowOverlayRedisplay</b> before the next display callback3247opportunity (or overlay display callback opportunity if one is registered)3248generate only a single redisplay. <b>glutPostWindowOverlayRedisplay</b> may3249be called within a window's display or overlay display callback to re-mark3250that window for redisplay.3251</para>3252<para>3253Logically, overlay damage notification for a window is treated as a3254<b>glutPostWindowOverlayRedisplay</b> on the damaged window. Unlike damage3255reported by the window system, <b>glutPostWindowOverlayRedisplay</b> will not3256set to <c>true</c> the overlay's damaged status (returned by3257<c>Glut.glutLayerGet(Glut.GLUT_OVERLAY_DAMAGED)</c>.3258</para>3259<para>3260If the window you want to post an overlay redisplay on is not already current3261(and you do not require it to be immediately made current), using3262<b>glutPostWindowOverlayRedisplay</b> is more efficient than calling3263<see cref="M:Tao.FreeGlut.Glut.glutSetWindow(System.Int32)"/> to the desired window and then calling3264<see cref="M:Tao.FreeGlut.Glut.glutPostOverlayRedisplay"/>.3265</para>3266</remarks>3267<seealso cref="M:Tao.FreeGlut.Glut.glutEstablishOverlay"/>3268<seealso cref="M:Tao.FreeGlut.Glut.glutHideOverlay"/>3269<seealso cref="M:Tao.FreeGlut.Glut.glutLayerGet(System.Int32)"/>3270<seealso cref="M:Tao.FreeGlut.Glut.glutMainLoop"/>3271<seealso cref="M:Tao.FreeGlut.Glut.glutPostOverlayRedisplay"/>3272<seealso cref="M:Tao.FreeGlut.Glut.glutPostRedisplay"/>3273</member>3274<member name="M:Tao.FreeGlut.Glut.glutShowOverlay">3275<summary>3276Shows the overlay of the current window.3277</summary>3278<remarks>3279<b>glutShowOverlay</b> shows the overlay of the current window. The effect of3280showing an overlay takes place immediately. Note that <b>glutShowOverlay</b>3281will not actually display the overlay unless the window is also shown (and3282even a shown window may be obscured by other windows, thereby obscuring the3283overlay). It is typically faster and less resource intensive to use these3284routines to control the display status of an overlay as opposed to removing3285and re-establishing the overlay.3286</remarks>3287<seealso cref="M:Tao.FreeGlut.Glut.glutEstablishOverlay"/>3288<seealso cref="M:Tao.FreeGlut.Glut.glutHideOverlay"/>3289<seealso cref="M:Tao.FreeGlut.Glut.glutShowWindow"/>3290</member>3291<member name="M:Tao.FreeGlut.Glut.glutHideOverlay">3292<summary>3293Hides the overlay of the current window.3294</summary>3295<remarks>3296<b>glutHideOverlay</b> hides the overlay of the current window. The effect of3297hiding an overlay takes place immediately. It is typically faster and less3298resource intensive to use these routines to control the display status of an3299overlay as opposed to removing and re-establishing the overlay.3300</remarks>3301<seealso cref="M:Tao.FreeGlut.Glut.glutEstablishOverlay"/>3302<seealso cref="M:Tao.FreeGlut.Glut.glutShowOverlay"/>3303<seealso cref="M:Tao.FreeGlut.Glut.glutShowWindow"/>3304</member>3305<member name="M:Tao.FreeGlut.Glut.glutDestroyMenu(System.Int32)">3306<summary>3307Destroys the specified menu.3308</summary>3309<param name="menu">3310The identifier of the menu to destroy.3311</param>3312<remarks>3313<b>glutDestroyMenu</b> destroys the specified menu by <i>menu</i>. If3314<i>menu</i> was the current menu, the current menu becomes invalid and3315<see cref="M:Tao.FreeGlut.Glut.glutGetMenu"/> will return zero.3316</remarks>3317<seealso cref="M:Tao.FreeGlut.Glut.glutCreateMenu(Tao.FreeGlut.Glut.CreateMenuCallback)"/>3318<seealso cref="M:Tao.FreeGlut.Glut.glutGetMenu"/>3319</member>3320<member name="M:Tao.FreeGlut.Glut.glutGetMenu">3321<summary>3322Returns the identifier of the current menu.3323</summary>3324<returns>3325Returns the identifier of the current menu. If no menus exist or the previous3326current menu was destroyed, <b>glutGetMenu</b> returns zero.3327</returns>3328<remarks>3329Returns the identifier of the current menu. If no menus exist or the previous3330current menu was destroyed, <b>glutGetMenu</b> returns zero.3331</remarks>3332<seealso cref="M:Tao.FreeGlut.Glut.glutSetMenu(System.Int32)"/>3333</member>3334<member name="M:Tao.FreeGlut.Glut.glutSetMenu(System.Int32)">3335<summary>3336Sets the current menu.3337</summary>3338<param name="menu">3339The identifier of the menu to make the current menu.3340</param>3341<remarks>3342<b>glutSetMenu</b> sets the current menu.3343</remarks>3344<seealso cref="M:Tao.FreeGlut.Glut.glutGetMenu"/>3345</member>3346<member name="M:Tao.FreeGlut.Glut.glutAddMenuEntry(System.String,System.Int32)">3347<summary>3348Adds a menu entry to the bottom of the current menu.3349</summary>3350<param name="name">3351string to display in the menu entry.3352</param>3353<param name="val">3354Value to return to the menu's callback function if the menu entry is selected.3355</param>3356<remarks>3357<b>glutAddMenuEntry</b> adds a menu entry to the bottom of the current menu.3358The string <i>name</i> will be displayed for the newly added menu entry. If3359the menu entry is selected by the user, the menu's callback will be called3360passing <i>val</i> as the callback's parameter.3361</remarks>3362<seealso cref="M:Tao.FreeGlut.Glut.glutAddSubMenu(System.String,System.Int32)"/>3363<seealso cref="M:Tao.FreeGlut.Glut.glutChangeToMenuEntry(System.Int32,System.String,System.Int32)"/>3364<seealso cref="M:Tao.FreeGlut.Glut.glutCreateMenu(Tao.FreeGlut.Glut.CreateMenuCallback)"/>3365<seealso cref="M:Tao.FreeGlut.Glut.glutRemoveMenuItem(System.Int32)"/>3366</member>3367<member name="M:Tao.FreeGlut.Glut.glutAddSubMenu(System.String,System.Int32)">3368<summary>3369Adds a sub-menu trigger to the bottom of the current menu.3370</summary>3371<param name="name">3372string to display in the menu item from which to cascade the sub-menu.3373</param>3374<param name="menu">3375Identifier of the menu to cascade from this sub-menu menu item.3376</param>3377<remarks>3378<b>glutAddSubMenu</b> adds a sub-menu trigger to the bottom of the current3379menu. The string <i>name</i> will be displayed for the newly added sub-menu3380trigger. If the sub-menu trigger is entered, the sub-menu numbered3381<i>menu</i> will be cascaded, allowing sub-menu menu items to be selected.3382</remarks>3383<seealso cref="M:Tao.FreeGlut.Glut.glutAddMenuEntry(System.String,System.Int32)"/>3384<seealso cref="M:Tao.FreeGlut.Glut.glutChangeToSubMenu(System.Int32,System.String,System.Int32)"/>3385<seealso cref="M:Tao.FreeGlut.Glut.glutRemoveMenuItem(System.Int32)"/>3386</member>3387<member name="M:Tao.FreeGlut.Glut.glutChangeToMenuEntry(System.Int32,System.String,System.Int32)">3388<summary>3389Changes the specified menu item in the current menu into a menu entry.3390</summary>3391<param name="entry">3392Index into the menu items of the current menu (1 is the topmost menu item).3393</param>3394<param name="name">3395string to display in the menu entry.3396</param>3397<param name="val">3398Value to return to the menu's callback function if the menu entry is selected.3399</param>3400<remarks>3401<b>glutChangeToMenuEntry</b> changes the specified menu entry in the current3402menu into a menu entry. The <i>entry</i> parameter determines which menu item3403should be changed, with one being the topmost item. <i>entry</i> must be3404between 1 and <c>Glut.glutGet(Glut.GLUT_MENU_NUM_ITEMS)</c> inclusive. The3405menu item to change does not have to be a menu entry already. The string3406<i>name</i> will be displayed for the newly changed menu entry. The3407<i>val</i> will be returned to the menu's callback if this menu entry is3408selected.3409</remarks>3410<seealso cref="M:Tao.FreeGlut.Glut.glutAddMenuEntry(System.String,System.Int32)"/>3411<seealso cref="M:Tao.FreeGlut.Glut.glutChangeToSubMenu(System.Int32,System.String,System.Int32)"/>3412<seealso cref="M:Tao.FreeGlut.Glut.glutRemoveMenuItem(System.Int32)"/>3413</member>3414<member name="M:Tao.FreeGlut.Glut.glutChangeToSubMenu(System.Int32,System.String,System.Int32)">3415<summary>3416Changes the specified menu item in the current menu into a sub-menu trigger.3417</summary>3418<param name="entry">3419Index into the menu items of the current menu (1 is the topmost menu item).3420</param>3421<param name="name">3422string to display in the menu item to cascade the sub-menu from.3423</param>3424<param name="menu">3425Identifier of the menu to cascade from this sub-menu menu item.3426</param>3427<remarks>3428<b>glutChangeToSubMenu</b> changes the specified menu item in the current menu3429into a sub-menu trigger. The <i>entry</i> parameter determines which menu3430item should be changed, with one being the topmost item. <i>entry</i> must be3431between 1 and <c>Glut.glutGet(Glut.GLUT_MENU_NUM_ITEMS)</c> inclusive. The3432menu item to change does not have to be a sub-menu trigger already. The3433string <i>name</i> will be displayed for the newly changed sub-menu trigger.3434The <i>menu</i> identifier names the sub-menu to cascade from the newly added3435sub-menu trigger.3436</remarks>3437<seealso cref="M:Tao.FreeGlut.Glut.glutAddSubMenu(System.String,System.Int32)"/>3438<seealso cref="M:Tao.FreeGlut.Glut.glutChangeToMenuEntry(System.Int32,System.String,System.Int32)"/>3439<seealso cref="M:Tao.FreeGlut.Glut.glutRemoveMenuItem(System.Int32)"/>3440</member>3441<member name="M:Tao.FreeGlut.Glut.glutRemoveMenuItem(System.Int32)">3442<summary>3443Removes the specified menu item.3444</summary>3445<param name="entry">3446Index into the menu items of the current menu (1 is the topmost menu item).3447</param>3448<remarks>3449<b>glutRemoveMenuItem</b> remove the entry menu item regardless of whether it3450is a menu entry or sub-menu trigger. <i>entry</i> must be between 1 and3451<c>Glut.glutGet(Glut.GLUT_MENU_NUM_ITEMS)</c> inclusive. Menu items below3452the removed menu item are renumbered.3453</remarks>3454<seealso cref="M:Tao.FreeGlut.Glut.glutAddMenuEntry(System.String,System.Int32)"/>3455<seealso cref="M:Tao.FreeGlut.Glut.glutAddSubMenu(System.String,System.Int32)"/>3456<seealso cref="M:Tao.FreeGlut.Glut.glutChangeToMenuEntry(System.Int32,System.String,System.Int32)"/>3457<seealso cref="M:Tao.FreeGlut.Glut.glutChangeToSubMenu(System.Int32,System.String,System.Int32)"/>3458</member>3459<member name="M:Tao.FreeGlut.Glut.glutAttachMenu(System.Int32)">3460<summary>3461Attaches a mouse button for the current window to the identifier of the current3462menu.3463</summary>3464<param name="button">3465The button to attach a menu.3466</param>3467<remarks>3468<b>glutAttachMenu</b> attaches a mouse button for the current window to the3469identifier of the current menu. By attaching a menu identifier to a button,3470the named menu will be popped up when the user presses the specified button.3471<i>button</i> should be one of <see cref="F:Tao.FreeGlut.Glut.GLUT_LEFT_BUTTON"/>,3472<see cref="F:Tao.FreeGlut.Glut.GLUT_MIDDLE_BUTTON"/>, and <see cref="F:Tao.FreeGlut.Glut.GLUT_RIGHT_BUTTON"/>.3473Note that the menu is attached to the button by identifier, not by reference.3474</remarks>3475<seealso cref="M:Tao.FreeGlut.Glut.glutCreateMenu(Tao.FreeGlut.Glut.CreateMenuCallback)"/>3476<seealso cref="M:Tao.FreeGlut.Glut.glutDetachMenu(System.Int32)"/>3477<seealso cref="M:Tao.FreeGlut.Glut.glutMenuStatusFunc(Tao.FreeGlut.Glut.MenuStatusCallback)"/>3478<seealso cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>3479</member>3480<member name="M:Tao.FreeGlut.Glut.glutDetachMenu(System.Int32)">3481<summary>3482Detaches an attached mouse button from the current window.3483</summary>3484<param name="button">3485The button to detach a menu.3486</param>3487<remarks>3488<b>glutDetachMenu</b> detaches an attached mouse button from the current3489window. <i>button</i> should be one of <see cref="F:Tao.FreeGlut.Glut.GLUT_LEFT_BUTTON"/>,3490<see cref="F:Tao.FreeGlut.Glut.GLUT_MIDDLE_BUTTON"/>, and <see cref="F:Tao.FreeGlut.Glut.GLUT_RIGHT_BUTTON"/>. Note3491that the menu is attached to the button by identifier, not by reference.3492</remarks>3493<seealso cref="M:Tao.FreeGlut.Glut.glutAttachMenu(System.Int32)"/>3494<seealso cref="M:Tao.FreeGlut.Glut.glutCreateMenu(Tao.FreeGlut.Glut.CreateMenuCallback)"/>3495<seealso cref="M:Tao.FreeGlut.Glut.glutDetachMenu(System.Int32)"/>3496<seealso cref="M:Tao.FreeGlut.Glut.glutMenuStatusFunc(Tao.FreeGlut.Glut.MenuStatusCallback)"/>3497<seealso cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>3498</member>3499<member name="M:Tao.FreeGlut.Glut.glutCreateMenu(Tao.FreeGlut.Glut.CreateMenuCallback)">3500<summary>3501Creates a new pop-up menu.3502</summary>3503<param name="func">3504The callback function for the menu that is called when a menu entry from the3505menu is selected. The value passed to the callback is determined by the value3506for the selected menu entry. See <see cref="T:Tao.FreeGlut.Glut.CreateMenuCallback"/>.3507</param>3508<returns>3509Returns a unique small integer identifier. The range of allocated identifiers3510starts at one. The menu identifier range is separate from the window3511identifier range.3512</returns>3513<remarks>3514<para>3515<b>glutCreateMenu</b> creates a new pop-up menu and returns a unique small3516integer identifier. The range of allocated identifiers starts at one. The3517menu identifier range is separate from the window identifier range.3518Implicitly, the current menu is set to the newly created menu. This menu3519identifier can be used when calling <see cref="M:Tao.FreeGlut.Glut.glutSetMenu(System.Int32)"/>.3520</para>3521<para>3522When the menu callback is called because a menu entry is selected for the3523menu, the current menu will be implicitly set to the menu with the selected3524entry before the callback is made.3525</para>3526<para>3527<b>EXAMPLE</b>3528</para>3529<para>3530Here is a quick example of how to create a GLUT popup menu with two submenus3531and attach it to the right button of the current window:3532</para>3533<para>3534<code>3535int submenu1, submenu2;35363537submenu1 = Glut.glutCreateMenu(selectMessage);3538Glut.glutAddMenuEntry("abc", 1);3539Glut.glutAddMenuEntry("ABC", 2);35403541submenu2 = Glut.glutCreateMenu(selectColor);3542Glut.glutAddMenuEntry("Green", 1);3543Glut.glutAddMenuEntry("Red", 2);3544Glut.glutAddMenuEntry("White", 3);35453546Glut.glutCreateMenu(selectFont);3547Glut.glutAddMenuEntry("9 by 15", 0);3548Glut.glutAddMenuEntry("Times Roman 10", 1);3549Glut.glutAddMenuEntry("Times Roman 24", 2);3550Glut.glutAddSubMenu("Messages", submenu1);3551Glut.glutAddSubMenu("Color", submenu2);3552Glut.glutAttachMenu(Glut.GLUT_RIGHT_BUTTON);3553</code>3554</para>3555<para>3556<b>X IMPLEMENTATION NOTES</b>3557</para>3558<para>3559If available, GLUT for X will take advantage of overlay planes for3560implementing pop-up menus. The use of overlay planes can eliminate display3561callbacks when pop-up menus are deactivated. The SERVER_OVERLAY_VISUALS3562convention is used to determine if overlay visuals are available.3563</para>3564</remarks>3565<seealso cref="T:Tao.FreeGlut.Glut.CreateMenuCallback"/>3566<seealso cref="M:Tao.FreeGlut.Glut.glutAttachMenu(System.Int32)"/>3567<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>3568<seealso cref="M:Tao.FreeGlut.Glut.glutDestroyMenu(System.Int32)"/>3569<seealso cref="M:Tao.FreeGlut.Glut.glutSetMenu(System.Int32)"/>3570</member>3571<member name="M:Tao.FreeGlut.Glut.glutDisplayFunc(Tao.FreeGlut.Glut.DisplayCallback)">3572<summary>3573Sets the display callback for the current window.3574</summary>3575<param name="func">3576The new display callback function. See <see cref="T:Tao.FreeGlut.Glut.DisplayCallback"/>.3577</param>3578<remarks>3579<para>3580<b>glutDisplayFunc</b> sets the display callback for the current window. When3581GLUT determines that the normal plane for the window needs to be redisplayed,3582the display callback for the window is called. Before the callback, the3583current window is set to the window needing to be redisplayed and (if no3584overlay display callback is registered) the layer in use is set to the normal3585plane. The display callback is called with no parameters. The entire normal3586plane region should be redisplayed in response to the callback (this includes3587ancillary buffers if your program depends on their state).3588</para>3589<para>3590GLUT determines when the display callback should be triggered based on the3591window's redisplay state. The redisplay state for a window can be either set3592explicitly by calling <see cref="M:Tao.FreeGlut.Glut.glutPostRedisplay"/> or implicitly as the3593result of window damage reported by the window system. Multiple posted3594redisplays for a window are coalesced by GLUT to minimize the number of3595display callbacks called.3596</para>3597<para>3598When an overlay is established for a window, but there is no overlay display3599callback registered, the display callback is used for redisplaying both the3600overlay and normal plane (that is, it will be called if either the redisplay3601state or overlay redisplay state is set). In this case, the layer in use is3602not implicitly changed on entry to the display callback.3603</para>3604<para>3605See <see cref="M:Tao.FreeGlut.Glut.glutOverlayDisplayFunc(Tao.FreeGlut.Glut.OverlayDisplayCallback)"/> to understand how distinct callbacks3606for the overlay and normal plane of a window may be established.3607</para>3608<para>3609When a window is created, no display callback exists for the window. It is3610the responsibility of the programmer to install a display callback for the3611window before the window is shown. A display callback must be registered for3612any window that is shown. If a window becomes displayed without a display3613callback being registered, a fatal error occurs. Passing <c>null</c> to3614<b>glutDisplayFunc</b> is illegal as of GLUT 3.0; there is no way to3615"deregister" a display callback (though another callback routine can always be3616registered).3617</para>3618<para>3619Upon return from the display callback, the normal damaged state of the window3620(returned by calling <c>Glut.glutLayerGet(Glut.GLUT_NORMAL_DAMAGED)</c> is3621cleared. If there is no overlay display callback registered the overlay3622damaged state of the window (returned by calling3623<c>Glut.glutLayerGet(Glut.GLUT_OVERLAY_DAMAGED)</c> is also cleared.3624</para>3625</remarks>3626<seealso cref="T:Tao.FreeGlut.Glut.DisplayCallback"/>3627<seealso cref="M:Tao.FreeGlut.Glut.glutLayerGet(System.Int32)"/>3628<seealso cref="M:Tao.FreeGlut.Glut.glutOverlayDisplayFunc(Tao.FreeGlut.Glut.OverlayDisplayCallback)"/>3629</member>3630<member name="M:Tao.FreeGlut.Glut.glutReshapeFunc(Tao.FreeGlut.Glut.ReshapeCallback)">3631<summary>3632Sets the reshape callback for the current window.3633</summary>3634<param name="func">3635The new reshape callback function. See <see cref="T:Tao.FreeGlut.Glut.ReshapeCallback"/>.3636</param>3637<remarks>3638<para>3639<b>glutReshapeFunc</b> sets the reshape callback for the current window. The3640reshape callback is triggered when a window is reshaped. A reshape callback3641is also triggered immediately before a window's first display callback after a3642window is created or whenever an overlay for the window is established. The3643<i>width</i> and <i>height</i> parameters of the callback specify the new3644window size in pixels. Before the callback, the current window is set to the3645window that has been reshaped.3646</para>3647<para>3648If a reshape callback is not registered for a window or <c>null</c> is passed3649to <b>glutReshapeFunc</b> (to deregister a previously registered callback),3650the default reshape callback is used. This default callback will simply call3651<c>Gl.glViewport(0, 0, width, height)</c> on the normal plane (and on the3652overlay if one exists).3653</para>3654<para>3655If an overlay is established for the window, a single reshape callback is3656generated. It is the callback's responsibility to update both the normal3657plane and overlay for the window (changing the layer in use as necessary).3658</para>3659<para>3660When a top-level window is reshaped, subwindows are not reshaped. It is up to3661the GLUT program to manage the size and positions of subwindows within a3662top-level window. Still, reshape callbacks will be triggered for subwindows3663when their size is changed using <see cref="M:Tao.FreeGlut.Glut.glutReshapeWindow(System.Int32,System.Int32)"/>.3664</para>3665</remarks>3666<seealso cref="T:Tao.FreeGlut.Glut.ReshapeCallback"/>3667<seealso cref="M:Tao.FreeGlut.Glut.glutReshapeWindow(System.Int32,System.Int32)"/>3668</member>3669<member name="M:Tao.FreeGlut.Glut.glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)">3670<summary>3671Sets the keyboard callback for the current window.3672</summary>3673<param name="func">3674The new keyboard callback function. See <see cref="T:Tao.FreeGlut.Glut.KeyboardCallback"/>.3675</param>3676<remarks>3677<para>3678<b>glutKeyboardFunc</b> sets the keyboard callback for the current window.3679When a user types into the window, each key press generating an ASCII3680character will generate a keyboard callback. The <i>key</i> callback3681parameter is the generated ASCII character. The state of modifier keys such3682as Shift cannot be determined directly; their only effect will be on the3683returned ASCII data. The <i>x</i> and <i>y</i> callback parameters indicate3684the mouse location in window relative coordinates when the key was pressed.3685When a new window is created, no keyboard callback is initially registered,3686and ASCII key strokes in the window are ignored. Passing <c>null</c> to3687<b>glutKeyboardFunc</b> disables the generation of keyboard callbacks.3688</para>3689<para>3690During a keyboard callback, <see cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/> may be called to3691determine the state of modifier keys when the keystroke generating the3692callback occurred.3693</para>3694<para>3695Also, see <see cref="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)"/> for a means to detect non-ASCII key3696strokes.3697</para>3698</remarks>3699<seealso cref="T:Tao.FreeGlut.Glut.KeyboardCallback"/>3700<seealso cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/>3701<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)"/>3702</member>3703<member name="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)">3704<summary>3705Sets the mouse callback for the current window.3706</summary>3707<param name="func">3708The new mouse callback function. See <see cref="T:Tao.FreeGlut.Glut.MouseCallback"/>.3709</param>3710<remarks>3711<para>3712<b>glutMouseFunc</b> sets the mouse callback for the current window. When a3713user presses and releases mouse buttons in the window, each press and each3714release generates a mouse callback. The <i>button</i> parameter is one of3715<see cref="F:Tao.FreeGlut.Glut.GLUT_LEFT_BUTTON"/>, <see cref="F:Tao.FreeGlut.Glut.GLUT_MIDDLE_BUTTON"/>, or3716<see cref="F:Tao.FreeGlut.Glut.GLUT_RIGHT_BUTTON"/>. For systems with only two mouse buttons, it3717may not be possible to generate the <i>GLUT_MIDDLE_BUTTON</i> callback. For3718systems with a single mouse button, it may be possible to generate only a3719<i>GLUT_LEFT_BUTTON</i> callback. The <i>state</i> parameter is either3720<see cref="F:Tao.FreeGlut.Glut.GLUT_UP"/> or <see cref="F:Tao.FreeGlut.Glut.GLUT_DOWN"/> indicating whether the3721callback was due to a release or press respectively. The <i>x</i> and3722<i>y</i> callback parameters indicate the window relative coordinates when the3723mouse button state changed. If a <i>GLUT_DOWN</i> callback for a specific3724button is triggered, the program can assume a <i>GLUT_UP</i> callback for the3725same button will be generated (assuming the window still has a mouse callback3726registered) when the mouse button is released even if the mouse has moved3727outside the window.3728</para>3729<para>3730If a menu is attached to a button for a window, mouse callbacks will not be3731generated for that button.3732</para>3733<para>3734During a mouse callback, <see cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/> may be called to3735determine the state of modifier keys when the mouse event generating the3736callback occurred.3737</para>3738<para>3739Passing <c>null</c> to <b>glutMouseFunc</b> disables the generation of mouse3740callbacks.3741</para>3742</remarks>3743<seealso cref="T:Tao.FreeGlut.Glut.MouseCallback"/>3744<seealso cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/>3745</member>3746<member name="M:Tao.FreeGlut.Glut.glutMotionFunc(Tao.FreeGlut.Glut.MotionCallback)">3747<summary>3748Sets the motion callbacks for the current window.3749</summary>3750<param name="func">3751The new motion callback function. See <see cref="T:Tao.FreeGlut.Glut.MotionCallback"/>.3752</param>3753<remarks>3754<para>3755<b>glutMotionFunc</b> sets the motion callback for the current window. The3756motion callback for a window is called when the mouse moves within the window3757while one or more mouse buttons are pressed.3758</para>3759<para>3760The <i>x</i> and <i>y</i> callback parameters indicate the mouse location in3761window relative coordinates.3762</para>3763<para>3764Passing <c>null</c> to <b>glutMotionFunc</b> disables the generation of the3765motion callback.3766</para>3767</remarks>3768<seealso cref="T:Tao.FreeGlut.Glut.MotionCallback"/>3769<seealso cref="M:Tao.FreeGlut.Glut.glutPassiveMotionFunc(Tao.FreeGlut.Glut.PassiveMotionCallback)"/>3770</member>3771<member name="M:Tao.FreeGlut.Glut.glutPassiveMotionFunc(Tao.FreeGlut.Glut.PassiveMotionCallback)">3772<summary>3773Sets the passive motion callbacks for the current window.3774</summary>3775<param name="func">3776The new passive motion callback function. See3777<see cref="T:Tao.FreeGlut.Glut.PassiveMotionCallback"/>.3778</param>3779<remarks>3780<para>3781<b>glutPassiveMotionFunc</b> sets the passive motion callback for the current3782window. The passive motion callback for a window is called when the mouse3783moves within the window while no mouse buttons are pressed.3784</para>3785<para>3786The <i>x</i> and <i>y</i> callback parameters indicate the mouse location in3787window relative coordinates.3788</para>3789<para>3790Passing <c>null</c> to <b>glutPassiveMotionFunc</b> disables the generation of3791the passive motion callback.3792</para>3793</remarks>3794<seealso cref="T:Tao.FreeGlut.Glut.PassiveMotionCallback"/>3795<seealso cref="M:Tao.FreeGlut.Glut.glutMotionFunc(Tao.FreeGlut.Glut.MotionCallback)"/>3796</member>3797<member name="M:Tao.FreeGlut.Glut.glutEntryFunc(Tao.FreeGlut.Glut.EntryCallback)">3798<summary>3799Sets the mouse enter/leave callback for the current window.3800</summary>3801<param name="func">3802The new entry callback function. See <see cref="T:Tao.FreeGlut.Glut.EntryCallback"/>.3803</param>3804<remarks>3805<para>3806<b>glutEntryFunc</b> sets the mouse enter/leave callback for the current3807window. The state callback parameter is either <see cref="F:Tao.FreeGlut.Glut.GLUT_LEFT"/> or3808<see cref="F:Tao.FreeGlut.Glut.GLUT_ENTERED"/> depending on if the mouse pointer has last left or3809entered the window.3810</para>3811<para>3812Passing <c>null</c> to <b>glutEntryFunc</b> disables the generation of the3813mouse enter/leave callback.3814</para>3815<para>3816Some window systems may not generate accurate enter/leave callbacks.3817</para>3818</remarks>3819<seealso cref="T:Tao.FreeGlut.Glut.EntryCallback"/>3820</member>3821<member name="M:Tao.FreeGlut.Glut.glutVisibilityFunc(Tao.FreeGlut.Glut.VisibilityCallback)">3822<summary>3823Sets the visibility callback for the current window.3824</summary>3825<param name="func">3826The new visibility callback function. See <see cref="T:Tao.FreeGlut.Glut.VisibilityCallback"/>.3827</param>3828<remarks>3829<para>3830<b>glutVisibilityFunc</b> sets the visibility callback for the current window.3831The visibility callback for a window is called when the visibility of a3832window changes. The state callback parameter is either3833<see cref="F:Tao.FreeGlut.Glut.GLUT_NOT_VISIBLE"/> or <see cref="F:Tao.FreeGlut.Glut.GLUT_VISIBLE"/> depending on3834the current visibility of the window. <i>GLUT_VISIBLE</i> does not3835distinguish a window being totally versus partially visible.3836<i>GLUT_NOT_VISIBLE</i> means no part of the window is visible, i.e., until3837the window's visibility changes, all further rendering to the window is3838discarded.3839</para>3840<para>3841GLUT considers a window visible if any pixel of the window is visible or any3842pixel of any descendant window is visible on the screen.3843</para>3844<para>3845Passing <c>null</c> to <b>glutVisibilityFunc</b> disables the generation of3846the visibility callback.3847</para>3848<para>3849If the visibility callback for a window is disabled and later re-enabled, the3850visibility status of the window is undefined; any change in window visibility3851will be reported, that is if you disable a visibility callback and re-enable3852the callback, you are guaranteed the next visibility change will be reported.3853</para>3854</remarks>3855<seealso cref="T:Tao.FreeGlut.Glut.VisibilityCallback"/>3856</member>3857<member name="M:Tao.FreeGlut.Glut.glutIdleFunc(Tao.FreeGlut.Glut.IdleCallback)">3858<summary>3859Sets the global idle callback.3860</summary>3861<param name="func">3862The new idle callback function. See <see cref="T:Tao.FreeGlut.Glut.IdleCallback"/>.3863</param>3864<remarks>3865<para>3866<b>glutIdleFunc</b> sets the global idle callback to be func so a GLUT program3867can perform background processing tasks or continuous animation when window3868system events are not being received. If enabled, the idle callback is3869continuously called when events are not being received. The callback routine3870has no parameters. The current window and current menu will not be changed3871before the idle callback. Programs with multiple windows and/or menus should3872explicitly set the current window and/or current menu and not rely on its3873current setting.3874</para>3875<para>3876The amount of computation and rendering done in an idle callback should be3877minimized to avoid affecting the program's interactive response. In general,3878not more than a single frame of rendering should be done in an idle callback.3879</para>3880<para>3881Passing <c>null</c> to <b>glutIdleFunc</b> disables the generation of the idle3882callback.3883</para>3884</remarks>3885<seealso cref="T:Tao.FreeGlut.Glut.IdleCallback"/>3886</member>3887<member name="M:Tao.FreeGlut.Glut.glutTimerFunc(System.Int32,Tao.FreeGlut.Glut.TimerCallback,System.Int32)">3888<summary>3889Registers a timer callback to be triggered in a specified number of milliseconds.3890</summary>3891<param name="msecs">3892The number of milliseconds between calls to the timer callback.3893</param>3894<param name="func">3895The new timer callback function. See <see cref="T:Tao.FreeGlut.Glut.TimerCallback"/>.3896</param>3897<param name="val">3898The value to be passed to the timer callback.3899</param>3900<remarks>3901<para>3902<b>glutTimerFunc</b> registers the timer callback <i>func</i> to be triggered3903in at least <i>msecs</i> milliseconds. The <i>val</i> parameter to the timer3904callback will be the value of the <i>val</i> parameter to3905<b>glutTimerFunc</b>. Multiple timer callbacks at same or differing times may3906be registered simultaneously.3907</para>3908<para>3909The number of milliseconds is a lower bound on the time before the callback is3910generated. GLUT attempts to deliver the timer callback as soon as possible3911after the expiration of the callback's time interval.3912</para>3913<para>3914There is no support for canceling a registered callback. Instead, ignore a3915callback based on its <i>val</i> parameter when it is triggered.3916</para>3917</remarks>3918<seealso cref="T:Tao.FreeGlut.Glut.TimerCallback"/>3919</member>3920<member name="M:Tao.FreeGlut.Glut.glutMenuStateFunc(Tao.FreeGlut.Glut.MenuStateCallback)">3921<summary>3922A deprecated version of the <see cref="M:Tao.FreeGlut.Glut.glutMenuStatusFunc(Tao.FreeGlut.Glut.MenuStatusCallback)"/> routine.3923</summary>3924<param name="func">3925The new menu state callback function. <see cref="T:Tao.FreeGlut.Glut.MenuStateCallback"/>.3926</param>3927<remarks>3928The only difference is <b>glutMenuStateFunc</b> callback prototype does not3929deliver the two additional <i>x</i> and <i>y</i> coordinates.3930</remarks>3931<seealso cref="T:Tao.FreeGlut.Glut.MenuStateCallback"/>3932<seealso cref="T:Tao.FreeGlut.Glut.MenuStatusCallback"/>3933<seealso cref="M:Tao.FreeGlut.Glut.glutMenuStatusFunc(Tao.FreeGlut.Glut.MenuStatusCallback)"/>3934</member>3935<member name="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)">3936<summary>3937Sets the special keyboard callback for the current window.3938</summary>3939<param name="func">3940The new special callback function. See <see cref="T:Tao.FreeGlut.Glut.SpecialCallback"/>.3941</param>3942<remarks>3943<para>3944<b>glutSpecialFunc</b> sets the special keyboard callback for the current3945window. The special keyboard callback is triggered when keyboard function or3946directional keys are pressed. The <i>key</i> callback parameter is a3947GLUT_KEY_* constant for the special key pressed. The <i>x</i> and <i>y</i>3948callback parameters indicate the mouse in window relative coordinates when the3949key was pressed. When a new window is created, no special callback is3950initially registered and special key strokes in the window are ignored.3951Passing <c>null</c> to <b>glutSpecialFunc</b> disables the generation of3952special callbacks.3953</para>3954<para>3955During a special callback, <see cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/> may be called to3956determine the state of modifier keys when the keystroke generating the3957callback occurred.3958</para>3959<para>3960An implementation should do its best to provide ways to generate all the3961GLUT_KEY_* special keys. The available GLUT_KEY_* values are:3962</para>3963<para>3964<list type="table">3965<listheader>3966<term>Value</term>3967<description>Description</description>3968</listheader>3969<item>3970<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F1"/></term>3971<description>F1 function key.</description>3972</item>3973<item>3974<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F2"/></term>3975<description>F2 function key.</description>3976</item>3977<item>3978<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F3"/></term>3979<description>F3 function key.</description>3980</item>3981<item>3982<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F4"/></term>3983<description>F4 function key.</description>3984</item>3985<item>3986<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F5"/></term>3987<description>F5 function key.</description>3988</item>3989<item>3990<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F6"/></term>3991<description>F6 function key.</description>3992</item>3993<item>3994<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F7"/></term>3995<description>F7 function key.</description>3996</item>3997<item>3998<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F8"/></term>3999<description>F8 function key.</description>4000</item>4001<item>4002<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F9"/></term>4003<description>F9 function key.</description>4004</item>4005<item>4006<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F10"/></term>4007<description>F10 function key.</description>4008</item>4009<item>4010<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F11"/></term>4011<description>F11 function key.</description>4012</item>4013<item>4014<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F12"/></term>4015<description>F12 function key.</description>4016</item>4017<item>4018<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_LEFT"/></term>4019<description>Left directional key.</description>4020</item>4021<item>4022<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_UP"/></term>4023<description>Up directional key.</description>4024</item>4025<item>4026<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_RIGHT"/></term>4027<description>Right directional key.</description>4028</item>4029<item>4030<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_DOWN"/></term>4031<description>Down directional key.</description>4032</item>4033<item>4034<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_PAGE_UP"/></term>4035<description>Page up directional key.</description>4036</item>4037<item>4038<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_PAGE_DOWN"/></term>4039<description>Page down directional key.</description>4040</item>4041<item>4042<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_HOME"/></term>4043<description>Home directional key.</description>4044</item>4045<item>4046<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_END"/></term>4047<description>End directional key.</description>4048</item>4049<item>4050<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_INSERT"/></term>4051<description>Insert directional key.</description>4052</item>4053</list>4054</para>4055<para>4056Note that the escape, backspace, and delete keys are generated as an ASCII4057character.4058</para>4059</remarks>4060<seealso cref="T:Tao.FreeGlut.Glut.SpecialCallback"/>4061<seealso cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/>4062</member>4063<member name="M:Tao.FreeGlut.Glut.glutSpaceballMotionFunc(Tao.FreeGlut.Glut.SpaceballMotionCallback)">4064<summary>4065Sets the Spaceball motion callback for the current window.4066</summary>4067<param name="func">4068The new Spaceball motion callback function. See4069<see cref="T:Tao.FreeGlut.Glut.SpaceballMotionCallback"/>.4070</param>4071<remarks>4072<para>4073<b>glutSpaceballMotionFunc</b> sets the Spaceball motion callback for the4074current window. The Spaceball motion callback for a window is called when the4075window has Spaceball input focus (normally, when the mouse is in the window)4076and the user generates Spaceball translations. The <i>x</i>, <i>y</i>, and4077<i>z</i> callback parameters indicate the translations along the X, Y, and Z4078axes. The callback parameters are normalized to be within the range of -10004079to 1000 inclusive.4080</para>4081<para>4082Registering a Spaceball motion callback when a Spaceball device is not4083available has no effect and is not an error. In this case, no Spaceball4084motion callbacks will be generated.4085</para>4086<para>4087Passing <c>null</c> to <b>glutSpaceballMotionFunc</b> disables the generation4088of Spaceball motion callbacks. When a new window is created, no Spaceball4089motion callback is initially registered.4090</para>4091</remarks>4092<seealso cref="T:Tao.FreeGlut.Glut.SpaceballMotionCallback"/>4093</member>4094<member name="M:Tao.FreeGlut.Glut.glutSpaceballRotateFunc(Tao.FreeGlut.Glut.SpaceballRotateCallback)">4095<summary>4096Sets the Spaceball rotation callback for the current window.4097</summary>4098<param name="func">4099The new Spaceball rotate callback function. See4100<see cref="T:Tao.FreeGlut.Glut.SpaceballRotateCallback"/>.4101</param>4102<remarks>4103<para>4104<b>glutSpaceballRotateFunc</b> sets the Spaceball rotate callback for the4105current window. The Spaceball rotate callback for a window is called when the4106window has Spaceball input focus (normally, when the mouse is in the window)4107and the user generates Spaceball rotations. The <i>x</i>, <i>y</i>, and4108<i>z</i> callback parameters indicate the rotation along the X, Y, and Z4109axes. The callback parameters are normalized to be within the range of -18004110to 1800 inclusive.4111</para>4112<para>4113Registering a Spaceball rotate callback when a Spaceball device is not4114available is ineffectual and not an error. In this case, no Spaceball rotate4115callbacks will be generated.4116</para>4117<para>4118Passing <c>null</c> to <b>glutSpaceballRotateFunc</b> disables the generation4119of Spaceball rotate callbacks. When a new window is created, no Spaceball4120rotate callback is initially registered.4121</para>4122</remarks>4123<seealso cref="T:Tao.FreeGlut.Glut.SpaceballRotateCallback"/>4124</member>4125<member name="M:Tao.FreeGlut.Glut.glutSpaceballButtonFunc(Tao.FreeGlut.Glut.SpaceballButtonCallback)">4126<summary>4127Sets the Spaceball button callback for the current window.4128</summary>4129<param name="func">4130The new Spaceball button callback function. See4131<see cref="T:Tao.FreeGlut.Glut.SpaceballButtonCallback"/>.4132</param>4133<remarks>4134<para>4135<b>glutSpaceballButtonFunc</b> sets the Spaceball button callback for the4136current window. The Spaceball button callback for a window is called when the4137window has Spaceball input focus (normally, when the mouse is in the window)4138and the user generates Spaceball button presses. The <i>button</i> parameter4139will be the button number (starting at one). The number of available4140Spaceball buttons can be determined with4141<c>glutDeviceGet(GLUT_NUM_SPACEBALL_BUTTONS)</c>. The <i>state</i> is either4142<see cref="F:Tao.FreeGlut.Glut.GLUT_UP"/> or <see cref="F:Tao.FreeGlut.Glut.GLUT_DOWN"/> indicating whether the4143callback was due to a release or press respectively.4144</para>4145<para>4146Registering a Spaceball button callback when a Spaceball device is not4147available is ineffectual and not an error. In this case, no Spaceball button4148callbacks will be generated.4149</para>4150<para>4151Passing <c>null</c> to <b>glutSpaceballButtonFunc</b> disables the generation4152of Spaceball button callbacks. When a new window is created, no Spaceball4153button callback is initially registered.4154</para>4155</remarks>4156<seealso cref="T:Tao.FreeGlut.Glut.SpaceballButtonCallback"/>4157<seealso cref="M:Tao.FreeGlut.Glut.glutDeviceGet(System.Int32)"/>4158</member>4159<member name="M:Tao.FreeGlut.Glut.glutButtonBoxFunc(Tao.FreeGlut.Glut.ButtonBoxCallback)">4160<summary>4161Sets the dial and button box button callback for the current window.4162</summary>4163<param name="func">4164The new button box callback function. See <see cref="T:Tao.FreeGlut.Glut.ButtonBoxCallback"/>.4165</param>4166<remarks>4167<para>4168<b>glutButtonBoxFunc</b> sets the dial and button box button callback for the4169current window. The dial and button box button callback for a window is4170called when the window has dial and button box input focus (normally, when the4171mouse is in the window) and the user generates dial and button box button4172presses. The <i>button</i> parameter will be the button number (starting at4173one). The number of available dial and button box buttons can be determined4174with <c>Glut.glutDeviceGet(Glut.GLUT_NUM_BUTTON_BOX_BUTTONS)</c>. The4175<i>state</i> is either <see cref="F:Tao.FreeGlut.Glut.GLUT_UP"/> or <see cref="F:Tao.FreeGlut.Glut.GLUT_DOWN"/>4176indicating whether the callback was due to a release or press respectively.4177</para>4178<para>4179Registering a dial and button box button callback when a dial and button box4180device is not available is ineffectual and not an error. In this case, no4181dial and button box button callbacks will be generated.4182</para>4183<para>4184Passing <c>null</c> to <b>glutButtonBoxFunc</b> disables the generation of4185dial and button box button callbacks. When a new window is created, no dial4186and button box button callback is initially registered.4187</para>4188</remarks>4189<seealso cref="T:Tao.FreeGlut.Glut.ButtonBoxCallback"/>4190<seealso cref="M:Tao.FreeGlut.Glut.glutDeviceGet(System.Int32)"/>4191</member>4192<member name="M:Tao.FreeGlut.Glut.glutDialsFunc(Tao.FreeGlut.Glut.DialsCallback)">4193<summary>4194Sets the dial and button box dials callback for the current window.4195</summary>4196<param name="func">4197The new dials callback function. See <see cref="T:Tao.FreeGlut.Glut.DialsCallback"/>.4198</param>4199<remarks>4200<para>4201<b>glutDialsFunc</b> sets the dial and button box dials callback for the4202current window. The dial and button box dials callback for a window is called4203when the window has dial and button box input focus (normally, when the mouse4204is in the window) and the user generates dial and button box dial changes.4205The <i>dial</i> parameter will be the dial number (starting at one). The4206number of available dial and button box dials can be determined with4207<c>Glut.glutDeviceGet(Glut.GLUT_NUM_DIALS)</c>. The <i>val</i> measures the4208absolute rotation in degrees. Dial values do not "roll over" with each4209complete rotation but continue to accumulate degrees (until the <c>int</c>4210dial value overflows).4211</para>4212<para>4213Registering a dial and button box dials callback when a dial and button box4214device is not available is ineffectual and not an error. In this case, no4215dial and button box dials callbacks will be generated.4216</para>4217<para>4218Passing <c>null</c> to <b>glutDialsFunc</b> disables the generation of dial4219and button box dials callbacks. When a new window is created, no dial and4220button box dials callback is initially registered.4221</para>4222</remarks>4223<seealso cref="T:Tao.FreeGlut.Glut.DialsCallback"/>4224<seealso cref="M:Tao.FreeGlut.Glut.glutDeviceGet(System.Int32)"/>4225</member>4226<member name="M:Tao.FreeGlut.Glut.glutTabletMotionFunc(Tao.FreeGlut.Glut.TabletMotionCallback)">4227<summary>4228Sets the tablet motion callback for the current window.4229</summary>4230<param name="func">4231The new tablet motion callback function. See4232<see cref="T:Tao.FreeGlut.Glut.TabletMotionCallback"/>.4233</param>4234<remarks>4235<para>4236<b>glutTabletMotionFunc</b> sets the tablet motion callback for the current4237window. The tablet motion callback for a window is called when the window has4238tablet input focus (normally, when the mouse is in the window) and the user4239generates tablet motion. The <i>x</i> and <i>y</i> callback parameters4240indicate the absolute position of the tablet "puck" on the tablet. The4241callback parameters are normalized to be within the range of 0 to 20004242inclusive.4243</para>4244<para>4245Registering a tablet motion callback when a tablet device is not available is4246ineffectual and not an error. In this case, no tablet motion callbacks will4247be generated.4248</para>4249<para>4250Passing <c>null</c> to <b>glutTabletMotionFunc</b> disables the generation of4251tablet motion callbacks. When a new window is created, no tablet motion4252callback is initially registered.4253</para>4254</remarks>4255<seealso cref="T:Tao.FreeGlut.Glut.TabletMotionCallback"/>4256</member>4257<member name="M:Tao.FreeGlut.Glut.glutTabletButtonFunc(Tao.FreeGlut.Glut.TabletButtonCallback)">4258<summary>4259Sets the tablet button callback for the current window.4260</summary>4261<param name="func">4262The new tablet button callback function. See4263<see cref="T:Tao.FreeGlut.Glut.TabletButtonCallback"/>.4264</param>4265<remarks>4266<para>4267<b>glutTabletButtonFunc</b> sets the tablet button callback for the current4268window. The tablet button callback for a window is called when the window has4269tablet input focus (normally, when the mouse is in the window) and the user4270generates tablet button presses. The <i>button</i> parameter will be the4271button number (starting at one). The number of available tablet buttons can4272be determined with <c>Glut.glutDeviceGet(Glut.GLUT_NUM_TABLET_BUTTONS)</c>.4273The <i>state</i> is either <see cref="F:Tao.FreeGlut.Glut.GLUT_UP"/> or <see cref="F:Tao.FreeGlut.Glut.GLUT_DOWN"/>4274indicating whether the callback was due to a release or press respectively.4275The <i>x</i> and <i>y</i> callback parameters indicate the window relative4276coordinates when the tablet button state changed.4277</para>4278<para>4279Registering a tablet button callback when a tablet device is not available is4280ineffectual and not an error. In this case, no tablet button callbacks will4281be generated.4282</para>4283<para>4284Passing <c>null</c> to <b>glutTabletButtonFunc</b> disables the generation of4285tablet button callbacks. When a new window is created, no tablet button4286callback is initially registered.4287</para>4288</remarks>4289<seealso cref="T:Tao.FreeGlut.Glut.TabletButtonCallback"/>4290<seealso cref="M:Tao.FreeGlut.Glut.glutDeviceGet(System.Int32)"/>4291</member>4292<member name="M:Tao.FreeGlut.Glut.glutMenuStatusFunc(Tao.FreeGlut.Glut.MenuStatusCallback)">4293<summary>4294Sets the global menu status callback.4295</summary>4296<param name="func">4297The new menu status button callback function. See4298<see cref="T:Tao.FreeGlut.Glut.MenuStatusCallback"/>.4299</param>4300<remarks>4301<para>4302<b>glutMenuStatusFunc</b> sets the global menu status callback so a GLUT4303program can determine when a menu is in use or not. When a menu status4304callback is registered, it will be called with the value4305<see cref="F:Tao.FreeGlut.Glut.GLUT_MENU_IN_USE"/> for its <i>val</i> parameter when pop-up menus4306are in use by the user; and the callback will be called with the value4307<see cref="F:Tao.FreeGlut.Glut.GLUT_MENU_NOT_IN_USE"/> for its <i>status</i> parameter when4308pop-up menus are no longer in use. The <i>x</i> and <i>y</i> parameters4309indicate the location in window coordinates of the button press that caused4310the menu to go into use, or the location where the menu was released (may be4311outside the window). The <i>func</i> parameter names the callback function.4312Other callbacks continue to operate (except mouse motion callbacks) when4313pop-up menus are in use so the menu status callback allows a program to4314suspend animation or other tasks when menus are in use. The cascading and4315unmapping of sub-menus from an initial pop-up menu does not generate menu4316status callbacks. There is a single menu status callback for GLUT.4317</para>4318<para>4319When the menu status callback is called, the current menu will be set to the4320initial pop-up menu in both the <i>GLUT_MENU_IN_USE</i> and4321<i>GLUT_MENU_NOT_IN_USE</i> cases. The current window will be set to the4322window from which the initial menu was popped up from, also in both cases.4323</para>4324<para>4325Passing <c>null</c> to <b>glutMenuStatusFunc</b> disables the generation of4326the menu status callback.4327</para>4328<para>4329<see cref="M:Tao.FreeGlut.Glut.glutMenuStateFunc(Tao.FreeGlut.Glut.MenuStateCallback)"/> is a deprecated version of the4330<b>glutMenuStatusFunc</b> routine. The only difference is4331<b>glutMenuStateFunc</b> callback prototype does not deliver the two4332additional <i>x</i> and <i>y</i> coordinates.4333</para>4334</remarks>4335<seealso cref="T:Tao.FreeGlut.Glut.MenuStateCallback"/>4336<seealso cref="T:Tao.FreeGlut.Glut.MenuStatusCallback"/>4337<seealso cref="M:Tao.FreeGlut.Glut.glutMenuStateFunc(Tao.FreeGlut.Glut.MenuStateCallback)"/>4338</member>4339<member name="M:Tao.FreeGlut.Glut.glutOverlayDisplayFunc(Tao.FreeGlut.Glut.OverlayDisplayCallback)">4340<summary>4341Sets the overlay display callback for the current window.4342</summary>4343<param name="func">4344The new overlay display callback function. See4345<see cref="T:Tao.FreeGlut.Glut.OverlayDisplayCallback"/>.4346</param>4347<remarks>4348<para>4349<b>glutDisplayFunc</b> sets the overlay display callback for the current4350window. The overlay display callback is functionally the same as the window's4351display callback except that the overlay display callback is used to redisplay4352the window's overlay.4353</para>4354<para>4355When GLUT determines that the overlay display for the window needs to be4356redisplayed, the overlay display callback for the window is called. Before4357the callback, the current window is set to the window needing to be4358redisplayed and the layer in use is set to the overlay. The overlay display4359callback is called with no parameters. The entire overlay region should be4360redisplayed in response to the callback (this includes ancillary buffers if4361your program depends on their state).4362</para>4363<para>4364GLUT determines when the overlay display callback should be triggered based on4365the window's overlay redisplay state. The overlay redisplay state for a4366window can be either set explicitly by calling4367<see cref="M:Tao.FreeGlut.Glut.glutPostOverlayRedisplay"/> or implicitly as the result of window4368damage reported by the window system. Multiple posted overlay redisplays for4369a window are coalesced by GLUT to minimize the number of overlay display4370callbacks called.4371</para>4372<para>4373Upon return from the overlay display callback, the overlay damaged state of4374the window (returned by calling4375<c>Glut.glutLayerGet(Glut.GLUT_OVERLAY_DAMAMGED)</c> is cleared.4376</para>4377<para>4378The overlay display callback can be deregistered by passing <c>null</c> to4379<see cref="M:Tao.FreeGlut.Glut.glutOverlayDisplayFunc(Tao.FreeGlut.Glut.OverlayDisplayCallback)"/>. The overlay display callback is4380initially <c>null</c> when an overlay is established. See4381<see cref="M:Tao.FreeGlut.Glut.glutDisplayFunc(Tao.FreeGlut.Glut.DisplayCallback)"/> to understand how the display callback alone is4382used if an overlay display callback is not registered.4383</para>4384</remarks>4385<seealso cref="T:Tao.FreeGlut.Glut.DisplayCallback"/>4386<seealso cref="T:Tao.FreeGlut.Glut.OverlayDisplayCallback"/>4387<seealso cref="M:Tao.FreeGlut.Glut.glutDisplayFunc(Tao.FreeGlut.Glut.DisplayCallback)"/>4388<seealso cref="M:Tao.FreeGlut.Glut.glutPostOverlayRedisplay"/>4389</member>4390<member name="M:Tao.FreeGlut.Glut.glutWindowStatusFunc(Tao.FreeGlut.Glut.WindowStatusCallback)">4391<summary>4392Sets the window status callback for the current window.4393</summary>4394<param name="func">4395The new window status callback function. See4396<see cref="T:Tao.FreeGlut.Glut.WindowStatusCallback"/>.4397</param>4398<remarks>4399<para>4400<b>glutWindowStatusFunc</b> sets the window status callback for the current4401window. The window status callback for a window is called when the window4402status (visibility) of a window changes. The state callback parameter is one4403of <see cref="F:Tao.FreeGlut.Glut.GLUT_HIDDEN"/>, <see cref="F:Tao.FreeGlut.Glut.GLUT_FULLY_RETAINED"/>,4404<see cref="F:Tao.FreeGlut.Glut.GLUT_PARTIALLY_RETAINED"/>, or <see cref="F:Tao.FreeGlut.Glut.GLUT_FULLY_COVERED"/>4405depending on the current window status of the window. <i>GLUT_HIDDEN</i>4406means that the window is either not shown (often meaning that the window is4407iconified). <i>GLUT_FULLY_RETAINED</i> means that the window is fully4408retained (no pixels belonging to the window are covered by other windows).4409<i>GLUT_PARTIALLY_RETAINED</i> means that the window is partially retained4410(some but not all pixels belonging to the window are covered by other4411windows). <i>GLUT_FULLY_COVERED</i> means the window is shown but no part of4412the window is visible, i.e., until the window's status changes, all further4413rendering to the window is discarded.4414</para>4415<para>4416GLUT considers a window visible if any pixel of the window is visible or any4417pixel of any descendant window is visible on the screen.4418</para>4419<para>4420GLUT applications are encouraged to disable rendering and/or animation when4421windows have a status of either <i>GLUT_HIDDEN</i> or4422<i>GLUT_FULLY_COVERED</i>.4423</para>4424<para>4425Passing <c>null</c> to <b>glutWindowStatusFunc</b> disables the generation of4426the window status callback.4427</para>4428<para>4429If the window status callback for a window is disabled and later re-enabled,4430the window status of the window is undefined; any change in window window4431status will be reported, that is if you disable a window status callback and4432re-enable the callback, you are guaranteed the next window status change will4433be reported.4434</para>4435<para>4436Setting the window status callback for a window disables the visibility4437callback set for the window (and vice versa). The visibility callback is set4438with <see cref="M:Tao.FreeGlut.Glut.glutVisibilityFunc(Tao.FreeGlut.Glut.VisibilityCallback)"/>. <b>glutVisibilityFunc</b> is4439deprecated in favor of the more informative <b>glutWindowStatusFunc</b>.4440</para>4441</remarks>4442<seealso cref="T:Tao.FreeGlut.Glut.WindowStatusCallback"/>4443<seealso cref="T:Tao.FreeGlut.Glut.VisibilityCallback"/>4444<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>4445<seealso cref="M:Tao.FreeGlut.Glut.glutPopWindow"/>4446<seealso cref="M:Tao.FreeGlut.Glut.glutVisibilityFunc(Tao.FreeGlut.Glut.VisibilityCallback)"/>4447</member>4448<member name="M:Tao.FreeGlut.Glut.glutKeyboardUpFunc(Tao.FreeGlut.Glut.KeyboardUpCallback)">4449<summary>4450Sets the keyboard up (key release) callback for the current window.4451</summary>4452<param name="func">4453The new keyboard up callback function. See <see cref="T:Tao.FreeGlut.Glut.KeyboardUpCallback"/>.4454</param>4455<remarks>4456<para>4457<b>glutKeyboardUpFunc</b> sets the keyboard up (key release) callback for the4458current window. When a user types into the window, each key release matching4459an ASCII character will generate a keyboard up callback. The <i>key</i>4460callback parameter is the generated ASCII character. The state of modifier4461keys such as Shift cannot be determined directly; their only effect will be on4462the returned ASCII data. The <i>x</i> and <i>y</i> callback parameters4463indicate the mouse location in window relative coordinates when the key was4464pressed. When a new window is created, no keyboard callback is initially4465registered, and ASCII key strokes in the window are ignored. Passing4466<c>null</c> to <b>glutKeyboardUpFunc</b> disables the generation of4467keyboard up callbacks.4468</para>4469<para>4470During a keyboard up callback, <see cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/> may be called4471to determine the state of modifier keys when the keystroke generating the4472callback occurred.4473</para>4474<para>4475To avoid the reporting of key release/press pairs due to auto repeat, use4476<see cref="M:Tao.FreeGlut.Glut.glutIgnoreKeyRepeat(System.Int32)"/> to ignore auto repeated keystrokes.4477</para>4478<para>4479There is no guarantee that the keyboard press callback will match the exact4480ASCII character as the keyboard up callback. For example, the key down may4481be for a lowercase b, but the key release may report an uppercase B if the4482shift state has changed. The same applies to symbols and control characters.4483The precise behavior is window system dependent.4484</para>4485<para>4486Use <see cref="M:Tao.FreeGlut.Glut.glutSpecialUpFunc(Tao.FreeGlut.Glut.SpecialUpCallback)"/> for a means to detect non-ASCII key4487release.4488</para>4489</remarks>4490<seealso cref="T:Tao.FreeGlut.Glut.KeyboardUpCallback"/>4491<seealso cref="M:Tao.FreeGlut.Glut.glutButtonBoxFunc(Tao.FreeGlut.Glut.ButtonBoxCallback)"/>4492<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>4493<seealso cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/>4494<seealso cref="M:Tao.FreeGlut.Glut.glutIgnoreKeyRepeat(System.Int32)"/>4495<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)"/>4496<seealso cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>4497<seealso cref="M:Tao.FreeGlut.Glut.glutSpaceballButtonFunc(Tao.FreeGlut.Glut.SpaceballButtonCallback)"/>4498<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)"/>4499<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialUpFunc(Tao.FreeGlut.Glut.SpecialUpCallback)"/>4500<seealso cref="M:Tao.FreeGlut.Glut.glutTabletButtonFunc(Tao.FreeGlut.Glut.TabletButtonCallback)"/>4501</member>4502<member name="M:Tao.FreeGlut.Glut.glutSpecialUpFunc(Tao.FreeGlut.Glut.SpecialUpCallback)">4503<summary>4504Sets the special keyboard up (key release) callback for the current window.4505</summary>4506<param name="func">4507The new special keyboard up callback function.4508<see cref="T:Tao.FreeGlut.Glut.SpecialUpCallback"/>.4509</param>4510<remarks>4511<para>4512<b>glutSpecialUpFunc</b> sets the special keyboard up (key release) callback4513for the current window. The special keyboard up callback is triggered when4514keyboard function or directional keys are released. The <i>key</i> callback4515parameter is a GLUT_KEY_* constant for the special key pressed. The <i>x</i>4516and <i>y</i> callback parameters indicate the mouse in window relative4517coordinates when the key was pressed. When a new window is created, no4518special up callback is initially registered and special key releases in the4519window are ignored. Passing <c>null</c> to <b>glutSpecialUpFunc</b> disables4520the generation of special up callbacks.4521</para>4522<para>4523During a special up callback, <see cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/> may be called to4524determine the state of modifier keys when the key release generating the4525callback occurred.4526</para>4527<para>4528To avoid the reporting of key release/press pairs due to auto repeat, use4529<see cref="M:Tao.FreeGlut.Glut.glutIgnoreKeyRepeat(System.Int32)"/> to ignore auto repeated keystrokes.4530</para>4531<para>4532An implementation should do its best to provide ways to generate all the4533GLUT_KEY_* special keys. The available GLUT_KEY_* values are:4534</para>4535<para>4536<list type="table">4537<listheader>4538<term>Value</term>4539<description>Description</description>4540</listheader>4541<item>4542<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F1"/></term>4543<description>F1 function key.</description>4544</item>4545<item>4546<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F2"/></term>4547<description>F2 function key.</description>4548</item>4549<item>4550<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F3"/></term>4551<description>F3 function key.</description>4552</item>4553<item>4554<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F4"/></term>4555<description>F4 function key.</description>4556</item>4557<item>4558<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F5"/></term>4559<description>F5 function key.</description>4560</item>4561<item>4562<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F6"/></term>4563<description>F6 function key.</description>4564</item>4565<item>4566<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F7"/></term>4567<description>F7 function key.</description>4568</item>4569<item>4570<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F8"/></term>4571<description>F8 function key.</description>4572</item>4573<item>4574<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F9"/></term>4575<description>F9 function key.</description>4576</item>4577<item>4578<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F10"/></term>4579<description>F10 function key.</description>4580</item>4581<item>4582<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F11"/></term>4583<description>F11 function key.</description>4584</item>4585<item>4586<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_F12"/></term>4587<description>F12 function key.</description>4588</item>4589<item>4590<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_LEFT"/></term>4591<description>Left directional key.</description>4592</item>4593<item>4594<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_UP"/></term>4595<description>Up directional key.</description>4596</item>4597<item>4598<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_RIGHT"/></term>4599<description>Right directional key.</description>4600</item>4601<item>4602<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_DOWN"/></term>4603<description>Down directional key.</description>4604</item>4605<item>4606<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_PAGE_UP"/></term>4607<description>Page up directional key.</description>4608</item>4609<item>4610<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_PAGE_DOWN"/></term>4611<description>Page down directional key.</description>4612</item>4613<item>4614<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_HOME"/></term>4615<description>Home directional key.</description>4616</item>4617<item>4618<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_END"/></term>4619<description>End directional key.</description>4620</item>4621<item>4622<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_INSERT"/></term>4623<description>Insert directional key.</description>4624</item>4625</list>4626</para>4627<para>4628Note that the escape, backspace, and delete keys are generated as an ASCII4629character.4630</para>4631</remarks>4632<seealso cref="T:Tao.FreeGlut.Glut.SpecialUpCallback"/>4633<seealso cref="M:Tao.FreeGlut.Glut.glutButtonBoxFunc(Tao.FreeGlut.Glut.ButtonBoxCallback)"/>4634<seealso cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/>4635<seealso cref="M:Tao.FreeGlut.Glut.glutIgnoreKeyRepeat(System.Int32)"/>4636<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)"/>4637<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardUpFunc(Tao.FreeGlut.Glut.KeyboardUpCallback)"/>4638<seealso cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>4639<seealso cref="M:Tao.FreeGlut.Glut.glutSpaceballButtonFunc(Tao.FreeGlut.Glut.SpaceballButtonCallback)"/>4640<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)"/>4641<seealso cref="M:Tao.FreeGlut.Glut.glutTabletButtonFunc(Tao.FreeGlut.Glut.TabletButtonCallback)"/>4642</member>4643<member name="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)">4644<summary>4645Sets the joystick callback for the current window.4646</summary>4647<param name="func">4648The new joystick callback function. See <see cref="T:Tao.FreeGlut.Glut.JoystickCallback"/>.4649</param>4650<param name="pollInterval">4651Joystick polling interval in milliseconds.4652</param>4653<remarks>4654<para>4655<b>glutJoystickFunc</b> sets the joystick callback for the current window.4656</para>4657<para>4658The joystick callback is called either due to polling of the joystick at the4659uniform timer interval specified by <i>pollInterval</i> (in milliseconds) or4660in response to calling <see cref="M:Tao.FreeGlut.Glut.glutForceJoystickFunc"/>. If the4661<i>pollInterval</i> is non-positive, no joystick polling is performed and the4662GLUT application must frequently (usually from an idle callback) call4663<b>glutForceJoystickFunc</b>.4664</para>4665<para>4666The joystick buttons are reported by the callback's <i>buttonMask</i>4667parameter. The constants <see cref="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_BUTTON_A"/> (0x1),4668<see cref="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_BUTTON_B"/> (0x2),4669<see cref="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_BUTTON_C"/> (0x4), and4670<see cref="F:Tao.FreeGlut.Glut.GLUT_JOYSTICK_BUTTON_D"/> (0x8) are provided for programming4671convience.4672</para>4673<para>4674The <i>x</i>, <i>y</i>, and <i>z</i> callback parameters report the X, Y, and4675Z axes of the joystick. The joystick is centered at (0, 0, 0). X, Y, and Z4676are scaled to range between -1000 and 1000. Moving the joystick left reports4677negative X; right reports positive X. Pulling the stick towards you reports4678negative Y; push the stick away from you reports positive Y. If the joystick4679has a third axis (rudder or up/down), down reports negative Z; up reports4680positive Z.4681</para>4682<para>4683Passing a <c>null</c> to <b>glutJoystickFunc</b> disables the generation of4684joystick callbacks. Without a joystick callback registered,4685<b>glutForceJoystickFunc</b> does nothing.4686</para>4687<para>4688When a new window is created, no joystick callback is initially registered.4689</para>4690<para>4691<b>LIMITATIONS</b>4692</para>4693<para>4694The GLUT joystick callback only reports the first 3 axes and 32 buttons.4695GLUT supports only a single joystick.4696</para>4697<para>4698<b>X IMPLEMENTATION NOTES</b>4699</para>4700<para>4701The GLUT 3.7 implementation of GLUT for X11 supports the joystick API, but not4702joystick input. A future implementation of GLUT for X11 may add joystick4703support.4704</para>4705<para>4706<b>WIN32 IMPLEMENTATION NOTES</b>4707</para>4708<para>4709The GLUT 3.7 implementation of GLUT for Win32 supports the joystick API and4710joystick input, but does so through the dated <c>joySetCapture</c> and4711<c>joyGetPosEx</c> Win32 Multimedia API. The GLUT 3.7 joystick support for4712Win32 has all the limitations of the Win32 Multimedia API joystick support.4713A future implementation of GLUT for Win32 may use DirectInput.4714</para>4715<para>4716<b>GLUT IMPLEMENTATION NOTES FOR NON-ANALOG JOYSTICKS</b>4717</para>4718<para>4719If the connected joystick does not return (x, y, z) as a continuous range (for4720example, an 8 position Atari 2600 joystick), the implementation should report4721the most extreme (x, y, z) location. That is, if a 2D joystick is pushed to4722the upper left, report (-1000, 1000, 0).4723</para>4724</remarks>4725<seealso cref="T:Tao.FreeGlut.Glut.JoystickCallback"/>4726<seealso cref="M:Tao.FreeGlut.Glut.glutButtonBoxFunc(Tao.FreeGlut.Glut.ButtonBoxCallback)"/>4727<seealso cref="M:Tao.FreeGlut.Glut.glutDeviceGet(System.Int32)"/>4728<seealso cref="M:Tao.FreeGlut.Glut.glutForceJoystickFunc"/>4729<seealso cref="M:Tao.FreeGlut.Glut.glutMotionFunc(Tao.FreeGlut.Glut.MotionCallback)"/>4730<seealso cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>4731<seealso cref="M:Tao.FreeGlut.Glut.glutSpaceballButtonFunc(Tao.FreeGlut.Glut.SpaceballButtonCallback)"/>4732<seealso cref="M:Tao.FreeGlut.Glut.glutSpaceballMotionFunc(Tao.FreeGlut.Glut.SpaceballMotionCallback)"/>4733<seealso cref="M:Tao.FreeGlut.Glut.glutTabletButtonFunc(Tao.FreeGlut.Glut.TabletButtonCallback)"/>4734</member>4735<member name="M:Tao.FreeGlut.Glut.glutSetColor(System.Int32,System.Single,System.Single,System.Single)">4736<summary>4737Sets the color of a colormap entry in the layer of use for the current window.4738</summary>4739<param name="cell">4740Color cell index (starting at zero).4741</param>4742<param name="red">4743Red intensity (clamped between 0.0 and 1.0 inclusive).4744</param>4745<param name="green">4746Green intensity (clamped between 0.0 and 1.0 inclusive).4747</param>4748<param name="blue">4749Blue intensity (clamped between 0.0 and 1.0 inclusive).4750</param>4751<remarks>4752Sets the <i>cell</i> color index colormap entry of the current window's4753logical colormap for the layer in use with the color specified by <i>red</i>,4754<i>green</i>, and <i>blue</i>. The layer in use of the current window should4755be a color index window. <i>cell</i> should be zero or greater and less than4756the total number of colormap entries for the window. If the layer in use's4757colormap was copied by reference, a <b>glutSetColor</b> call will force the4758duplication of the colormap. Do not attempt to set the color of an overlay's4759transparent index.4760</remarks>4761<seealso cref="M:Tao.FreeGlut.Glut.glutCopyColormap(System.Int32)"/>4762<seealso cref="M:Tao.FreeGlut.Glut.glutGetColor(System.Int32,System.Int32)"/>4763<seealso cref="M:Tao.FreeGlut.Glut.glutInitDisplayMode(System.Int32)"/>4764</member>4765<member name="M:Tao.FreeGlut.Glut.glutGetColor(System.Int32,System.Int32)">4766<summary>4767Retrieves a red, green, or blue component for a given color index colormap entry4768for the layer in use's logical colormap for the current window.4769</summary>4770<param name="cell">4771Color cell index (starting at zero).4772</param>4773<param name="component">4774One of <see cref="F:Tao.FreeGlut.Glut.GLUT_RED"/>, <see cref="F:Tao.FreeGlut.Glut.GLUT_GREEN"/>, or4775<see cref="F:Tao.FreeGlut.Glut.GLUT_BLUE"/>.4776</param>4777<returns>4778For valid color indices, the value returned is a floating point value between47790.0 and 1.0 inclusive. <b>glutGetColor</b> will return -1.0 if the color4780index specified is an overlay's transparent index, less than zero, or greater4781or equal to the value returned by4782<c>Glut.glutGet(Glut.GLUT_WINDOW_COLORMAP_SIZE)</c>, that is if the color4783index is transparent or outside the valid range of color indices.4784</returns>4785<remarks>4786<b>glutGetColor</b> retrieves a red, green, or blue component for a given4787color index colormap entry for the current window's logical colormap. The4788current window should be a color index window. <i>cell</i> should be zero or4789greater and less than the total number of colormap entries for the window.4790</remarks>4791<seealso cref="M:Tao.FreeGlut.Glut.glutCopyColormap(System.Int32)"/>4792<seealso cref="M:Tao.FreeGlut.Glut.glutGet(System.Int32)"/>4793<seealso cref="M:Tao.FreeGlut.Glut.glutSetColor(System.Int32,System.Single,System.Single,System.Single)"/>4794</member>4795<member name="M:Tao.FreeGlut.Glut.glutCopyColormap(System.Int32)">4796<summary>4797Copies the logical colormap for the layer in use from a specified window to the4798current window.4799</summary>4800<param name="win">4801The identifier of the window to copy the logical colormap from.4802</param>4803<remarks>4804<para>4805<b>glutCopyColormap</b> copies (lazily if possible to promote sharing) the4806logical colormap from a specified window to the current window's layer in use.4807The copy will be from the normal plane to the normal plane; or from the4808overlay to the overlay (never across different layers). Once a colormap has4809been copied, avoid setting cells in the colormap with4810<see cref="M:Tao.FreeGlut.Glut.glutSetColor(System.Int32,System.Single,System.Single,System.Single)"/> since that will force an actual copy of the4811colormap if it was previously copied by reference. <b>glutCopyColormap</b>4812should only be called when both the current window and the <i>win</i> window4813are color index windows.4814</para>4815<para>4816<b>EXAMPLE</b>4817</para>4818<para>4819Here is an example of how to create two color index GLUT windows with their4820colormaps loaded identically and so that the windows are likely to share the4821same colormap:4822</para>4823<para>4824<code>4825int win1, win2;48264827Glut.glutInitDisplayMode(Glut.GLUT_INDEX);4828win1 = Glut.glutCreateWindow("First color index window");4829Glut.glutSetColor(0, 0.0f, 0.0f, 0.0f); // black4830Glut.glutSetColor(1, 0.5f, 0.5f, 0.5f); // gray4831Glut.glutSetColor(2, 1.0f, 1.0f, 1.0f); // white4832Glut.glutSetColor(3, 1.0f, 0.0f, 0.0f); // red48334834win2 = Glut.glutCreateWindow("Second color index window");4835Glut.glutCopyColormap(win1);4836</code>4837</para>4838</remarks>4839<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>4840<seealso cref="M:Tao.FreeGlut.Glut.glutGetColor(System.Int32,System.Int32)"/>4841<seealso cref="M:Tao.FreeGlut.Glut.glutSetColor(System.Int32,System.Single,System.Single,System.Single)"/>4842</member>4843<member name="M:Tao.FreeGlut.Glut.glutGet(System.Int32)">4844<summary>4845Retrieves simple GLUT state represented by integers.4846</summary>4847<param name="state">4848<para>4849Name of state to retrieve. Valid values are:4850</para>4851<para>4852<list type="table">4853<listheader>4854<term>Value</term>4855<description>Description</description>4856</listheader>4857<item>4858<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_X"/></term>4859<description>4860X location in pixels (relative to the screen origin) of the4861current window.4862</description>4863</item>4864<item>4865<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_Y"/></term>4866<description>4867Y location in pixels (relative to the screen origin) of the4868current window.4869</description>4870</item>4871<item>4872<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_WIDTH"/></term>4873<description>4874Width in pixels of the current window.4875</description>4876</item>4877<item>4878<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_HEIGHT"/></term>4879<description>4880Height in pixels of the current window.4881</description>4882</item>4883<item>4884<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_BUFFER_SIZE"/></term>4885<description>4886Total number of bits for current window's color buffer. For an4887RGBA window, this is the sum of4888<see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_RED_SIZE"/>,4889<see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_GREEN_SIZE"/>,4890<see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_BLUE_SIZE"/>, and4891<see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ALPHA_SIZE"/>. For color index windows,4892this is the size of the color indexes.4893</description>4894</item>4895<item>4896<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_STENCIL_SIZE"/></term>4897<description>4898Number of bits in the current window's stencil buffer.4899</description>4900</item>4901<item>4902<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_DEPTH_SIZE"/></term>4903<description>4904Number of bits in the current window's depth buffer.4905</description>4906</item>4907<item>4908<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_RED_SIZE"/></term>4909<description>4910Number of bits of red stored the current window's color buffer.4911Zero if the window is color index.4912</description>4913</item>4914<item>4915<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_GREEN_SIZE"/></term>4916<description>4917Number of bits of green stored the current window's color buffer.4918Zero if the window is color index.4919</description>4920</item>4921<item>4922<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_BLUE_SIZE"/></term>4923<description>4924Number of bits of blue stored the current window's color buffer.4925Zero if the window is color index.4926</description>4927</item>4928<item>4929<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ALPHA_SIZE"/></term>4930<description>4931Number of bits of alpha stored the current window's color buffer.4932Zero if the window is color index.4933</description>4934</item>4935<item>4936<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ACCUM_RED_SIZE"/></term>4937<description>4938Number of bits of red stored in the current window's accumulation4939buffer. Zero if the window is color index.4940</description>4941</item>4942<item>4943<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ACCUM_GREEN_SIZE"/></term>4944<description>4945Number of bits of green stored in the current window's4946accumulation buffer. Zero if the window is color index.4947</description>4948</item>4949<item>4950<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ACCUM_BLUE_SIZE"/></term>4951<description>4952Number of bits of blue stored in the current window's4953accumulation buffer. Zero if the window is color index.4954</description>4955</item>4956<item>4957<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_ACCUM_ALPHA_SIZE"/></term>4958<description>4959Number of bits of alpha stored in the current window's4960accumulation buffer. Zero if the window is color index.4961</description>4962</item>4963<item>4964<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_DOUBLEBUFFER"/></term>4965<description>4966One if the current window is double buffered, zero otherwise.4967</description>4968</item>4969<item>4970<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_RGBA"/></term>4971<description>4972One if the current window is RGBA mode, zero otherwise (i.e.,4973color index).4974</description>4975</item>4976<item>4977<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_PARENT"/></term>4978<description>4979The window number of the current window's parent; zero if the4980window is a top-level window.4981</description>4982</item>4983<item>4984<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_NUM_CHILDREN"/></term>4985<description>4986The number of subwindows the current window has (not counting4987children of children).4988</description>4989</item>4990<item>4991<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_COLORMAP_SIZE"/></term>4992<description>4993Size of current window's color index colormap; zero for RGBA4994color model windows.4995</description>4996</item>4997<item>4998<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_NUM_SAMPLES"/></term>4999<description>5000Number of samples for multisampling for the current window.5001</description>5002</item>5003<item>5004<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_STEREO"/></term>5005<description>5006One if the current window is stereo, zero otherwise.5007</description>5008</item>5009<item>5010<term><see cref="F:Tao.FreeGlut.Glut.GLUT_WINDOW_CURSOR"/></term>5011<description>5012Current cursor for the current window.5013</description>5014</item>5015<item>5016<term><see cref="F:Tao.FreeGlut.Glut.GLUT_SCREEN_WIDTH"/></term>5017<description>5018Width of the screen in pixels. Zero indicates the width is5019unknown or not available.5020</description>5021</item>5022<item>5023<term><see cref="F:Tao.FreeGlut.Glut.GLUT_SCREEN_HEIGHT"/></term>5024<description>5025Height of the screen in pixels. Zero indicates the height is5026unknown or not available.5027</description>5028</item>5029<item>5030<term><see cref="F:Tao.FreeGlut.Glut.GLUT_SCREEN_WIDTH_MM"/></term>5031<description>5032Width of the screen in millimeters. Zero indicates the width is5033unknown or not available.5034</description>5035</item>5036<item>5037<term><see cref="F:Tao.FreeGlut.Glut.GLUT_SCREEN_HEIGHT_MM"/></term>5038<description>5039Height of the screen in millimeters. Zero indicates the height5040is unknown or not available.5041</description>5042</item>5043<item>5044<term><see cref="F:Tao.FreeGlut.Glut.GLUT_MENU_NUM_ITEMS"/></term>5045<description>5046Number of menu items in the current menu.5047</description>5048</item>5049<item>5050<term><see cref="F:Tao.FreeGlut.Glut.GLUT_DISPLAY_MODE_POSSIBLE"/></term>5051<description>5052Whether the current display mode is supported or not.5053</description>5054</item>5055<item>5056<term><see cref="F:Tao.FreeGlut.Glut.GLUT_INIT_DISPLAY_MODE"/></term>5057<description>5058The initial display mode bit mask.5059</description>5060</item>5061<item>5062<term><see cref="F:Tao.FreeGlut.Glut.GLUT_INIT_WINDOW_X"/></term>5063<description>5064The X value of the initial window position.5065</description>5066</item>5067<item>5068<term><see cref="F:Tao.FreeGlut.Glut.GLUT_INIT_WINDOW_Y"/></term>5069<description>5070The Y value of the initial window position.5071</description>5072</item>5073<item>5074<term><see cref="F:Tao.FreeGlut.Glut.GLUT_INIT_WINDOW_WIDTH"/></term>5075<description>5076The width value of the initial window size.5077</description>5078</item>5079<item>5080<term><see cref="F:Tao.FreeGlut.Glut.GLUT_INIT_WINDOW_HEIGHT"/></term>5081<description>5082The height value of the initial window size.5083</description>5084</item>5085<item>5086<term><see cref="F:Tao.FreeGlut.Glut.GLUT_ELAPSED_TIME"/></term>5087<description>5088Number of milliseconds since <see cref="M:Tao.FreeGlut.Glut.glutInit"/> called (or5089first call to <c>Glut.glutGet(Glut.GLUT_ELAPSED_TIME)</c>).5090</description>5091</item>5092</list>5093</para>5094</param>5095<returns>5096GLUT state represented by integers.5097</returns>5098<remarks>5099<b>glutGet</b> retrieves simple GLUT state represented by integers. The5100<i>state</i> parameter determines what type of state to return. Window5101capability state is returned for the layer in use. GLUT state names5102beginning with GLUT_WINDOW_ return state for the current window. GLUT state5103names beginning with GLUT_MENU_ return state for the current menu. Other5104GLUT state names return global state. Requesting state for an invalid GLUT5105state name returns negative one.5106</remarks>5107<seealso cref="M:Tao.FreeGlut.Glut.glutDeviceGet(System.Int32)"/>5108<seealso cref="M:Tao.FreeGlut.Glut.glutExtensionSupported(System.String)"/>5109<seealso cref="M:Tao.FreeGlut.Glut.glutGetColor(System.Int32,System.Int32)"/>5110<seealso cref="M:Tao.FreeGlut.Glut.glutGetMenu"/>5111<seealso cref="M:Tao.FreeGlut.Glut.glutGetModifiers"/>5112<seealso cref="M:Tao.FreeGlut.Glut.glutGetWindow"/>5113<seealso cref="M:Tao.FreeGlut.Glut.glutLayerGet(System.Int32)"/>5114</member>5115<member name="M:Tao.FreeGlut.Glut.glutDeviceGet(System.Int32)">5116<summary>5117Retrieves GLUT device information represented by integers.5118</summary>5119<param name="info">5120<para>5121Name of device information to retrieve. Valid values are:5122</para>5123<para>5124<list type="table">5125<listheader>5126<term>Value</term>5127<description>Description</description>5128</listheader>5129<item>5130<term><see cref="F:Tao.FreeGlut.Glut.GLUT_HAS_KEYBOARD"/></term>5131<description>5132Non-zero if a keyboard is available; zero if not available. For5133most GLUT implementations, a keyboard can be assumed.5134</description>5135</item>5136<item>5137<term><see cref="F:Tao.FreeGlut.Glut.GLUT_HAS_MOUSE"/></term>5138<description>5139Non-zero if a mouse is available; zero if not available. For5140most GLUT implementations, a keyboard can be assumed.5141</description>5142</item>5143<item>5144<term><see cref="F:Tao.FreeGlut.Glut.GLUT_HAS_SPACEBALL"/></term>5145<description>5146Non-zero if a Spaceball is available; zero if not available.5147</description>5148</item>5149<item>5150<term><see cref="F:Tao.FreeGlut.Glut.GLUT_HAS_DIAL_AND_BUTTON_BOX"/></term>5151<description>5152Non-zero if a dial and button box is available; zero if not5153available.5154</description>5155</item>5156<item>5157<term><see cref="F:Tao.FreeGlut.Glut.GLUT_HAS_TABLET"/></term>5158<description>5159Non-zero if a tablet is available; zero if not available.5160</description>5161</item>5162<item>5163<term><see cref="F:Tao.FreeGlut.Glut.GLUT_NUM_MOUSE_BUTTONS"/></term>5164<description>5165Number of buttons supported by the mouse. If no mouse is5166supported, zero is returned.5167</description>5168</item>5169<item>5170<term><see cref="F:Tao.FreeGlut.Glut.GLUT_NUM_SPACEBALL_BUTTONS"/></term>5171<description>5172Number of buttons supported by the Spaceball. If no Spaceball is5173supported, zero is returned.5174</description>5175</item>5176<item>5177<term><see cref="F:Tao.FreeGlut.Glut.GLUT_NUM_BUTTON_BOX_BUTTONS"/></term>5178<description>5179Number of buttons supported by the dial and button box device.5180If no dials and button box device is supported, zero is returned.5181</description>5182</item>5183<item>5184<term><see cref="F:Tao.FreeGlut.Glut.GLUT_NUM_DIALS"/></term>5185<description>5186Number of dials supported by the dial and button box device. If5187no dials and button box device is supported, zero is returned.5188</description>5189</item>5190<item>5191<term><see cref="F:Tao.FreeGlut.Glut.GLUT_NUM_TABLET_BUTTONS"/></term>5192<description>5193Number of buttons supported by the tablet. If no tablet is5194supported, zero is returned.5195</description>5196</item>5197</list>5198</para>5199</param>5200<returns>5201<b>glutDeviceGet</b> retrieves GLUT device information represented by5202integers. The <i>info</i> parameter determines what type of device5203information to return. Requesting device information for an invalid GLUT5204device information name returns negative one.5205</returns>5206<remarks>5207<b>glutDeviceGet</b> retrieves GLUT device information represented by5208integers. The <i>info</i> parameter determines what type of device5209information to return. Requesting device information for an invalid GLUT5210device information name returns negative one.5211</remarks>5212<seealso cref="M:Tao.FreeGlut.Glut.glutButtonBoxFunc(Tao.FreeGlut.Glut.ButtonBoxCallback)"/>5213<seealso cref="M:Tao.FreeGlut.Glut.glutDialsFunc(Tao.FreeGlut.Glut.DialsCallback)"/>5214<seealso cref="M:Tao.FreeGlut.Glut.glutGet(System.Int32)"/>5215<seealso cref="M:Tao.FreeGlut.Glut.glutIgnoreKeyRepeat(System.Int32)"/>5216<seealso cref="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)"/>5217<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)"/>5218<seealso cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>5219<seealso cref="M:Tao.FreeGlut.Glut.glutSetKeyRepeat(System.Int32)"/>5220<seealso cref="M:Tao.FreeGlut.Glut.glutSpaceballMotionFunc(Tao.FreeGlut.Glut.SpaceballMotionCallback)"/>5221<seealso cref="M:Tao.FreeGlut.Glut.glutTabletButtonFunc(Tao.FreeGlut.Glut.TabletButtonCallback)"/>5222<seealso cref="M:Tao.FreeGlut.Glut.glutTabletMotionFunc(Tao.FreeGlut.Glut.TabletMotionCallback)"/>5223</member>5224<member name="M:Tao.FreeGlut.Glut.glutExtensionSupported(System.String)">5225<summary>5226Helps to easily determine whether a given OpenGL extension is supported.5227</summary>5228<param name="extension">5229Name of OpenGL extension to query.5230</param>5231<returns>5232Returns non-zero if the extension is supported, zero if not supported.5233</returns>5234<remarks>5235<para>5236<b>glutExtensionSupported</b> helps to easily determine whether a given5237OpenGL extension is supported or not. The <i>extension</i> parameter names5238the extension to query. The supported extensions can also be determined with5239<c>Gl.glGetString(Gl.GL_EXTENSIONS)</c>, but <b>glutExtensionSupported</b>5240does the correct parsing of the returned string.5241</para>5242<para>5243There must be a valid current window to call <b>glutExtensionSupported</b>.5244</para>5245<para>5246<b>glutExtensionSupported</b> only returns information about OpenGL5247extensions only. This means window system dependent extensions (for example,5248GLX extensions) are not reported by <b>glutExtensionSupported</b>.5249</para>5250<para>5251<b>EXAMPLE</b>5252</para>5253<para>5254<code>5255if(!Glut.glutExtensionSupported("GL_EXT_texture")) {5256System.Console.WriteLine("Missing the texture extension!");5257System.Environment.Exit(1);5258}5259</code>5260</para>5261<para>5262Notice that the name argument includes both the GL prefix and the extension5263family prefix (EXT).5264</para>5265</remarks>5266<seealso cref="M:Tao.FreeGlut.Glut.glutGet(System.Int32)"/>5267<seealso cref="M:Tao.OpenGl.Gl.glGetString(System.Int32)"/>5268</member>5269<member name="M:Tao.FreeGlut.Glut.glutGetModifiers">5270<summary>5271Returns the modifier key state when certain callbacks were generated.5272</summary>5273<returns>5274<para>5275Returns the modifier key state at the time the input event for a keyboard,5276special, or mouse callback is generated. Valid values are:5277</para>5278<para>5279<list type="table">5280<listheader>5281<term>Value</term>5282<description>Description</description>5283</listheader>5284<item>5285<term><see cref="F:Tao.FreeGlut.Glut.GLUT_ACTIVE_SHIFT"/></term>5286<description>5287Set if the Shift modifier or Caps Lock is active.5288</description>5289</item>5290<item>5291<term><see cref="F:Tao.FreeGlut.Glut.GLUT_ACTIVE_CTRL"/></term>5292<description>5293Set if the Ctrl modifier is active.5294</description>5295</item>5296<item>5297<term><see cref="F:Tao.FreeGlut.Glut.GLUT_ACTIVE_ALT"/></term>5298<description>5299Set if the Alt modifier is active.5300</description>5301</item>5302</list>5303</para>5304</returns>5305<remarks>5306<b>glutGetModifiers</b> returns the modifier key state at the time the input5307event for a keyboard, special, or mouse callback is generated. This routine5308may only be called while a keyboard, special, or mouse callback is being5309handled. The window system is permitted to intercept window system defined5310modifier key strokes or mouse buttons, in which case, no GLUT callback will5311be generated. This interception will be independent of use of5312<b>glutGetModifiers</b>.5313</remarks>5314<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)"/>5315<seealso cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>5316<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)"/>5317</member>5318<member name="M:Tao.FreeGlut.Glut.glutLayerGet(System.Int32)">5319<summary>5320Retrieves GLUT state pertaining to the layers of the current window.5321</summary>5322<param name="info">5323<para>5324Name of device information to retrieve. Valid values are:5325</para>5326<para>5327<list type="table">5328<listheader>5329<term>Value</term>5330<description>Description</description>5331</listheader>5332<item>5333<term><see cref="F:Tao.FreeGlut.Glut.GLUT_OVERLAY_POSSIBLE"/></term>5334<description>5335Whether an overlay could be established for the current window5336given the current initial display mode. If false,5337<see cref="M:Tao.FreeGlut.Glut.glutEstablishOverlay"/> will fail with a fatal error5338if called.5339</description>5340</item>5341<item>5342<term><see cref="F:Tao.FreeGlut.Glut.GLUT_LAYER_IN_USE"/></term>5343<description>5344Either <see cref="F:Tao.FreeGlut.Glut.GLUT_NORMAL"/> or <see cref="F:Tao.FreeGlut.Glut.GLUT_OVERLAY"/>5345depending on whether the normal plane or overlay is the layer in5346use.5347</description>5348</item>5349<item>5350<term><see cref="F:Tao.FreeGlut.Glut.GLUT_HAS_OVERLAY"/></term>5351<description>5352If the current window has an overlay established.5353</description>5354</item>5355<item>5356<term><see cref="F:Tao.FreeGlut.Glut.GLUT_TRANSPARENT_INDEX"/></term>5357<description>5358The transparent color index of the overlay of the current window;5359negative one is returned if no overlay is in use.5360</description>5361</item>5362<item>5363<term><see cref="F:Tao.FreeGlut.Glut.GLUT_NORMAL_DAMAGED"/></term>5364<description>5365True if the normal plane of the current window has damaged (by5366window system activity) since the last display callback was5367triggered. Calling <see cref="M:Tao.FreeGlut.Glut.glutPostRedisplay"/> will not set5368this true.5369</description>5370</item>5371<item>5372<term><see cref="F:Tao.FreeGlut.Glut.GLUT_OVERLAY_DAMAGED"/></term>5373<description>5374True if the overlay plane of the current window has damaged (by5375window system activity) since the last display callback was5376triggered. Calling <see cref="M:Tao.FreeGlut.Glut.glutPostRedisplay"/> or5377<see cref="M:Tao.FreeGlut.Glut.glutPostOverlayRedisplay"/> will not set this true.5378Negative one is returned if no overlay is in use.5379</description>5380</item>5381</list>5382</para>5383</param>5384<returns>5385Retrieves GLUT layer information for the current window represented by5386integers. The <i>info</i> parameter determines what type of layer5387information to return.5388</returns>5389<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>5390<seealso cref="M:Tao.FreeGlut.Glut.glutEstablishOverlay"/>5391<seealso cref="M:Tao.FreeGlut.Glut.glutSetColor(System.Int32,System.Single,System.Single,System.Single)"/>5392</member>5393<member name="M:Tao.FreeGlut.Glut.glutBitmapCharacter(System.IntPtr,System.Int32)">5394<summary>5395Renders a bitmap character using OpenGL.5396</summary>5397<param name="font">5398<para>5399Bitmap font to use. Without using any display lists,5400<b>glutBitmapCharacter</b> renders the character in the named bitmap font.5401The available fonts are:5402</para>5403<para>5404<list type="table">5405<listheader>5406<term>Value</term>5407<description>Description</description>5408</listheader>5409<item>5410<term><see cref="F:Tao.FreeGlut.Glut.GLUT_BITMAP_8_BY_13"/></term>5411<description>5412A fixed width font with every character fitting in an 8 by 135413pixel rectangle.5414</description>5415</item>5416<item>5417<term><see cref="F:Tao.FreeGlut.Glut.GLUT_BITMAP_9_BY_15"/></term>5418<description>5419A fixed width font with every character fitting in an 9 by 155420pixel rectangle.5421</description>5422</item>5423<item>5424<term><see cref="F:Tao.FreeGlut.Glut.GLUT_BITMAP_TIMES_ROMAN_10"/></term>5425<description>5426A 10-point proportional spaced Times Roman font.5427</description>5428</item>5429<item>5430<term><see cref="F:Tao.FreeGlut.Glut.GLUT_BITMAP_TIMES_ROMAN_24"/></term>5431<description>5432A 24-point proportional spaced Times Roman font.5433</description>5434</item>5435<item>5436<term><see cref="F:Tao.FreeGlut.Glut.GLUT_BITMAP_HELVETICA_10"/></term>5437<description>5438A 10-point proportional spaced Helvetica font.5439</description>5440</item>5441<item>5442<term><see cref="F:Tao.FreeGlut.Glut.GLUT_BITMAP_HELVETICA_12"/></term>5443<description>5444A 12-point proportional spaced Helvetica font.5445</description>5446</item>5447<item>5448<term><see cref="F:Tao.FreeGlut.Glut.GLUT_BITMAP_HELVETICA_18"/></term>5449<description>5450A 18-point proportional spaced Helvetica font.5451</description>5452</item>5453</list>5454</para>5455</param>5456<param name="character">5457Character to render (not confined to 8 bits).5458</param>5459<remarks>5460<para>5461Rendering a nonexistent character has no effect. <b>glutBitmapCharacter</b>5462automatically sets the OpenGL unpack pixel storage modes it needs5463appropriately and saves and restores the previous modes before returning.5464The generated call to <c>Gl.glBitmap</c> will adjust the current raster5465position based on the width of the character.5466</para>5467<para>5468<b>EXAMPLE</b>5469</para>5470<para>5471Here is a routine that shows how to render a string of text with5472<b>glutBitmapCharacter</b>:5473</para>5474<para>5475<code>5476private void PrintText(float x, float y, string text) {5477Gl.glRasterPos2f(x, y);5478foreach(char c in text) {5479Glut.glutBitmapCharacter(Glut.GLUT_BITMAP_HELVETICA_18, c);5480}5481}5482</code>5483</para>5484</remarks>5485<seealso cref="M:Tao.FreeGlut.Glut.glutBitmapWidth(System.IntPtr,System.Int32)"/>5486<seealso cref="M:Tao.FreeGlut.Glut.glutStrokeCharacter(System.IntPtr,System.Int32)"/>5487</member>5488<member name="M:Tao.FreeGlut.Glut.glutBitmapWidth(System.IntPtr,System.Int32)">5489<summary>5490Returns the width of a bitmap character.5491</summary>5492<param name="font">5493Bitmap font to use. For valid values see the5494<see cref="M:Tao.FreeGlut.Glut.glutBitmapCharacter(System.IntPtr,System.Int32)"/> description.5495</param>5496<param name="character">5497Character to return width of (not confined to 8 bits).5498</param>5499<returns>5500Returns the width in pixels of a bitmap character in a supported bitmap font.5501</returns>5502<remarks>5503<b>glutBitmapWidth</b> returns the width in pixels of a bitmap character in a5504supported bitmap font. While the width of characters in a font may vary5505(though fixed width fonts do not vary), the maximum height characteristics of5506a particular font are fixed.5507</remarks>5508<seealso cref="M:Tao.FreeGlut.Glut.glutBitmapCharacter(System.IntPtr,System.Int32)"/>5509<seealso cref="M:Tao.FreeGlut.Glut.glutStrokeWidth(System.IntPtr,System.Int32)"/>5510</member>5511<member name="M:Tao.FreeGlut.Glut.glutStrokeCharacter(System.IntPtr,System.Int32)">5512<summary>5513Renders a stroke character using OpenGL.5514</summary>5515<param name="font">5516<para>5517Stroke font to use. Without using any display lists,5518<b>glutStrokeCharacter</b> renders the character in the named stroke font.5519The available fonts are:5520</para>5521<para>5522<list type="table">5523<listheader>5524<term>Value</term>5525<description>Description</description>5526</listheader>5527<item>5528<term><see cref="F:Tao.FreeGlut.Glut.GLUT_STROKE_ROMAN"/></term>5529<description>5530A proportionally spaced Roman Simplex font for ASCII characters553132 through 127. The maximum top character in the font is 119.055532units; the bottom descends 33.33 units.5533</description>5534</item>5535<item>5536<term><see cref="F:Tao.FreeGlut.Glut.GLUT_STROKE_MONO_ROMAN"/></term>5537<description>5538A mono-spaced spaced Roman Simplex font (same characters as5539<see cref="F:Tao.FreeGlut.Glut.GLUT_STROKE_ROMAN"/>) for ASCII characters 32 through5540127. The maximum top character in the font is 119.05 units; the5541bottom descends 33.33 units. Each character is 104.76 units wide.5542</description>5543</item>5544</list>5545</para>5546</param>5547<param name="character">5548Character to render (not confined to 8 bits).5549</param>5550<remarks>5551<para>5552Rendering a nonexistent character has no effect. A <c>Gl.glTranslatef</c> is5553used to translate the current model view matrix to advance the width of the5554character.5555</para>5556<para>5557<b>EXAMPLE</b>5558</para>5559<para>5560Here is a routine that shows how to render a text string with5561<b>glutStrokeCharacter</b>:5562</para>5563<para>5564<code>5565private void PrintText(float x, float y, string text) {5566GL.glPushMatrix();5567Gl.glTranslatef(x, y, 0);5568foreach(char c in text) {5569Glut.glutStrokeCharacter(Glut.GLUT_STROKE_ROMAN, c);5570}5571Gl.glPopMatrix();5572}5573</code>5574</para>5575<para>5576If you want to draw stroke font text using wide, antialiased lines, use:5577</para>5578<para>5579<code>5580Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);5581Gl.glEnable(Gl.GL_BLEND);5582Gl.glEnable(Gl.GL_LINE_SMOOTH);5583Gl.glLineWidth(2.0f);5584PrintText(200, 225, "This is antialiased.");5585</code>5586</para>5587</remarks>5588<seealso cref="M:Tao.FreeGlut.Glut.glutBitmapCharacter(System.IntPtr,System.Int32)"/>5589<seealso cref="M:Tao.FreeGlut.Glut.glutStrokeWidth(System.IntPtr,System.Int32)"/>5590</member>5591<member name="M:Tao.FreeGlut.Glut.glutStrokeWidth(System.IntPtr,System.Int32)">5592<summary>5593Returns the width of a stroke character.5594</summary>5595<param name="font">5596Stroke font to use. For valid values see the5597<see cref="M:Tao.FreeGlut.Glut.glutStrokeCharacter(System.IntPtr,System.Int32)"/> description.5598</param>5599<param name="character">5600Character to return width of (not confined to 8 bits).5601</param>5602<returns>5603Returns the width in pixels of a stroke character in a supported stroke font.5604</returns>5605<remarks>5606<b>glutStrokeWidth</b> returns the width in pixels of a stroke character in a5607supported stroke font. While the width of characters in a font may vary5608(though fixed width fonts do not vary), the maximum height characteristics of5609a particular font are fixed.5610</remarks>5611<seealso cref="M:Tao.FreeGlut.Glut.glutBitmapWidth(System.IntPtr,System.Int32)"/>5612<seealso cref="M:Tao.FreeGlut.Glut.glutStrokeCharacter(System.IntPtr,System.Int32)"/>5613</member>5614<member name="M:Tao.FreeGlut.Glut.glutBitmapLength(System.IntPtr,System.String)">5615<summary>5616Returns the length of a bitmap font string.5617</summary>5618<param name="font">5619Bitmap font to use. For valid values, see the5620<see cref="M:Tao.FreeGlut.Glut.glutBitmapCharacter(System.IntPtr,System.Int32)"/> description.5621</param>5622<param name="text">5623Text string.5624</param>5625<returns>5626Length of string in pixels.5627</returns>5628<remarks>5629<b>glutBitmapLength</b> returns the length in pixels of a string (8-bit5630characters). This length is equivalent to summing all the widths returned by5631<see cref="M:Tao.FreeGlut.Glut.glutBitmapWidth(System.IntPtr,System.Int32)"/> for each character in the string.5632</remarks>5633<seealso cref="M:Tao.FreeGlut.Glut.glutBitmapCharacter(System.IntPtr,System.Int32)"/>5634<seealso cref="M:Tao.FreeGlut.Glut.glutStrokeWidth(System.IntPtr,System.Int32)"/>5635</member>5636<member name="M:Tao.FreeGlut.Glut.glutStrokeLength(System.IntPtr,System.String)">5637<summary>5638Returns the length of a stroke font string.5639</summary>5640<param name="font">5641Stroke font to use. For valid values see the5642<see cref="M:Tao.FreeGlut.Glut.glutStrokeCharacter(System.IntPtr,System.Int32)"/> description.5643</param>5644<param name="text">5645Text string.5646</param>5647<returns>5648The length in modeling units of a string.5649</returns>5650<remarks>5651<b>glutStrokeLength</b> returns the length in modeling units of a string5652(8-bit characters). This length is equivalent to summing all the widths5653returned by <see cref="M:Tao.FreeGlut.Glut.glutStrokeWidth(System.IntPtr,System.Int32)"/> for each character in the string.5654</remarks>5655<seealso cref="M:Tao.FreeGlut.Glut.glutBitmapWidth(System.IntPtr,System.Int32)"/>5656<seealso cref="M:Tao.FreeGlut.Glut.glutStrokeCharacter(System.IntPtr,System.Int32)"/>5657</member>5658<member name="M:Tao.FreeGlut.Glut.glutWireSphere(System.Double,System.Int32,System.Int32)">5659<summary>5660Renders a wireframe sphere.5661</summary>5662<param name="radius">5663The radius of the sphere.5664</param>5665<param name="slices">5666The number of subdivisions around the Z axis (similar to lines of longitude).5667</param>5668<param name="stacks">5669The number of subdivisions along the Z axis (similar to lines of latitude).5670</param>5671<remarks>5672<b>glutWireSphere</b> renders a wireframe sphere centered at the modeling5673coordinates origin of the specified <i>radius</i>. The sphere is subdivided5674around the Z axis into <i>slices</i> and along the Z axis into <i>stacks</i>.5675</remarks>5676<seealso cref="M:Tao.FreeGlut.Glut.glutSolidSphere(System.Double,System.Int32,System.Int32)"/>5677</member>5678<member name="M:Tao.FreeGlut.Glut.glutSolidSphere(System.Double,System.Int32,System.Int32)">5679<summary>5680Renders a solid sphere.5681</summary>5682<param name="radius">5683The radius of the sphere.5684</param>5685<param name="slices">5686The number of subdivisions around the Z axis (similar to lines of longitude).5687</param>5688<param name="stacks">5689The number of subdivisions along the Z axis (similar to lines of latitude).5690</param>5691<remarks>5692<b>glutSolidSphere</b> renders a solid sphere centered at the modeling5693coordinates origin of the specified <i>radius</i>. The sphere is subdivided5694around the Z axis into <i>slices</i> and along the Z axis into <i>stacks</i>.5695</remarks>5696<seealso cref="M:Tao.FreeGlut.Glut.glutWireSphere(System.Double,System.Int32,System.Int32)"/>5697</member>5698<member name="M:Tao.FreeGlut.Glut.glutWireCone(System.Double,System.Double,System.Int32,System.Int32)">5699<summary>5700Renders a wireframe cone.5701</summary>5702<param name="baseRadius">5703The radius of the base of the cone.5704</param>5705<param name="height">5706The height of the cone.5707</param>5708<param name="slices">5709The number of subdivisions around the Z axis.5710</param>5711<param name="stacks">5712The number of subdivisions along the Z axis.5713</param>5714<remarks>5715<b>glutWireCone</b> renders a wireframe cone oriented along the Z axis. The5716<i>baseRadius</i> of the cone is placed at Z = 0, and the top at5717Z = <i>height</i>. The cone is subdivided around the Z axis into5718<i>slices</i>, and along the Z axis into <i>stacks</i>.5719</remarks>5720<seealso cref="M:Tao.FreeGlut.Glut.glutSolidCone(System.Double,System.Double,System.Int32,System.Int32)"/>5721</member>5722<member name="M:Tao.FreeGlut.Glut.glutSolidCone(System.Double,System.Double,System.Int32,System.Int32)">5723<summary>5724Renders a solid cone.5725</summary>5726<param name="baseRadius">5727The radius of the base of the cone.5728</param>5729<param name="height">5730The height of the cone.5731</param>5732<param name="slices">5733The number of subdivisions around the Z axis.5734</param>5735<param name="stacks">5736The number of subdivisions along the Z axis.5737</param>5738<remarks>5739<b>glutSolidCone</b> renders a solid cone oriented along the Z axis. The5740<i>baseRadius</i> of the cone is placed at Z = 0, and the top at5741Z = <i>height</i>. The cone is subdivided around the Z axis into5742<i>slices</i>, and along the Z axis into <i>stacks</i>.5743</remarks>5744<seealso cref="M:Tao.FreeGlut.Glut.glutWireCone(System.Double,System.Double,System.Int32,System.Int32)"/>5745</member>5746<member name="M:Tao.FreeGlut.Glut.glutWireCube(System.Double)">5747<summary>5748Renders a wireframe cube.5749</summary>5750<param name="size">5751Length of the sides of the cube.5752</param>5753<remarks>5754<b>glutWireCube</b> renders a wireframe cube. The cube is centered at the5755modeling coordinates origin with sides of length <i>size</i>.5756</remarks>5757<seealso cref="M:Tao.FreeGlut.Glut.glutSolidCube(System.Double)"/>5758</member>5759<member name="M:Tao.FreeGlut.Glut.glutSolidCube(System.Double)">5760<summary>5761Renders a solid cube.5762</summary>5763<param name="size">5764Length of the sides of the cube.5765</param>5766<remarks>5767<b>glutSolidCube</b> renders a solid cube. The cube is centered at the5768modeling coordinates origin with sides of length <i>size</i>.5769</remarks>5770<seealso cref="M:Tao.FreeGlut.Glut.glutWireCube(System.Double)"/>5771</member>5772<member name="M:Tao.FreeGlut.Glut.glutWireTorus(System.Double,System.Double,System.Int32,System.Int32)">5773<summary>5774Renders a wireframe torus (doughnut).5775</summary>5776<param name="innerRadius">5777Inner radius of the torus.5778</param>5779<param name="outerRadius">5780Outer radius of the torus.5781</param>5782<param name="sides">5783Number of sides for each radial section.5784</param>5785<param name="rings">5786Number of radial divisions for the torus.5787</param>5788<remarks>5789<b>glutWireTorus</b> renders a wireframe torus (doughnut) centered at the5790modeling coordinates origin whose axis is aligned with the Z axis.5791</remarks>5792<seealso cref="M:Tao.FreeGlut.Glut.glutSolidTorus(System.Double,System.Double,System.Int32,System.Int32)"/>5793</member>5794<member name="M:Tao.FreeGlut.Glut.glutSolidTorus(System.Double,System.Double,System.Int32,System.Int32)">5795<summary>5796Renders a solid torus (doughnut).5797</summary>5798<param name="innerRadius">5799Inner radius of the torus.5800</param>5801<param name="outerRadius">5802Outer radius of the torus.5803</param>5804<param name="sides">5805Number of sides for each radial section.5806</param>5807<param name="rings">5808Number of radial divisions for the torus.5809</param>5810<remarks>5811<b>glutSolidTorus</b> renders a solid torus (doughnut) centered at the5812modeling coordinates origin whose axis is aligned with the Z axis.5813</remarks>5814<seealso cref="M:Tao.FreeGlut.Glut.glutWireTorus(System.Double,System.Double,System.Int32,System.Int32)"/>5815</member>5816<member name="M:Tao.FreeGlut.Glut.glutWireDodecahedron">5817<summary>5818Renders a wireframe dodecahedron (12-sided regular solid).5819</summary>5820<remarks>5821<b>glutWireDodecahedron</b> renders a wireframe dodecahedron centered at the5822modeling coordinates origin with a radius of <c>Sqrt(3)</c>.5823</remarks>5824<seealso cref="M:Tao.FreeGlut.Glut.glutSolidDodecahedron"/>5825</member>5826<member name="M:Tao.FreeGlut.Glut.glutSolidDodecahedron">5827<summary>5828Renders a solid dodecahedron (12-sided regular solid).5829</summary>5830<remarks>5831<b>glutSolidDodecahedron</b> renders a solid dodecahedron centered at the5832modeling coordinates origin with a radius of <c>Sqrt(3)</c>.5833</remarks>5834<seealso cref="M:Tao.FreeGlut.Glut.glutWireDodecahedron"/>5835</member>5836<member name="M:Tao.FreeGlut.Glut.glutWireTeapot(System.Double)">5837<summary>5838Renders a wireframe teapot.5839</summary>5840<param name="size">5841Relative size of the teapot.5842</param>5843<remarks>5844<para>5845<b>glutWireTeapot</b> renders a wireframe teapot. Both surface normals and5846texture coordinates for the teapot are generated. The teapot is generated5847with OpenGL evaluators.5848</para>5849<para>5850<b>Footnote</b>5851</para>5852<para>5853Yes, the classic computer graphics teapot modeled by Martin Newell in 1975.5854</para>5855</remarks>5856<seealso cref="M:Tao.FreeGlut.Glut.glutSolidTeapot(System.Double)"/>5857</member>5858<member name="M:Tao.FreeGlut.Glut.glutSolidTeapot(System.Double)">5859<summary>5860Renders a solid teapot.5861</summary>5862<param name="size">5863Relative size of the teapot.5864</param>5865<remarks>5866<para>5867<b>glutSolidTeapot</b> renders a solid teapot. Both surface normals and5868texture coordinates for the teapot are generated. The teapot is generated5869with OpenGL evaluators.5870</para>5871<para>5872<b>Footnote</b>5873</para>5874<para>5875Yes, the classic computer graphics teapot modeled by Martin Newell in 1975.5876</para>5877</remarks>5878<seealso cref="M:Tao.FreeGlut.Glut.glutWireTeapot(System.Double)"/>5879</member>5880<member name="M:Tao.FreeGlut.Glut.glutWireOctahedron">5881<summary>5882Renders wireframe octahedron (8-sided regular solid).5883</summary>5884<remarks>5885<b>glutWireOctahedron</b> renders a wireframe octahedron centered at the5886modeling coordinates origin with a radius of 1.0.5887</remarks>5888<seealso cref="M:Tao.FreeGlut.Glut.glutSolidOctahedron"/>5889</member>5890<member name="M:Tao.FreeGlut.Glut.glutSolidOctahedron">5891<summary>5892Renders solid octahedron (8-sided regular solid).5893</summary>5894<remarks>5895<b>glutSolidOctahedron</b> renders a solid octahedron centered at the5896modeling coordinates origin with a radius of 1.0.5897</remarks>5898<seealso cref="M:Tao.FreeGlut.Glut.glutWireOctahedron"/>5899</member>5900<member name="M:Tao.FreeGlut.Glut.glutWireTetrahedron">5901<summary>5902Renders a wireframe tetrahedron (4-sided regular solid).5903</summary>5904<remarks>5905<b>glutWireTetrahedron</b> renders a wireframe tetrahedron centered at the5906modeling coordinates origin with a radius of <c>Sqrt(3)</c>.5907</remarks>5908<seealso cref="M:Tao.FreeGlut.Glut.glutSolidTetrahedron"/>5909</member>5910<member name="M:Tao.FreeGlut.Glut.glutSolidTetrahedron">5911<summary>5912Renders a solid tetrahedron (4-sided regular solid).5913</summary>5914<remarks>5915<b>glutSolidTetrahedron</b> renders a solid tetrahedron centered at the5916modeling coordinates origin with a radius of <c>Sqrt(3)</c>.5917</remarks>5918<seealso cref="M:Tao.FreeGlut.Glut.glutWireTetrahedron"/>5919</member>5920<member name="M:Tao.FreeGlut.Glut.glutWireIcosahedron">5921<summary>5922Renders a wireframe icosahedron (20-sided regular solid).5923</summary>5924<remarks>5925<b>glutWireIcosahedron</b> renders a wireframe icosahedron. The icosahedron5926is centered at the modeling coordinates origin and has a radius of 1.0.5927</remarks>5928<seealso cref="M:Tao.FreeGlut.Glut.glutSolidIcosahedron"/>5929</member>5930<member name="M:Tao.FreeGlut.Glut.glutSolidIcosahedron">5931<summary>5932Renders a solid icosahedron (20-sided regular solid).5933</summary>5934<remarks>5935<b>glutSolidIcosahedron</b> renders a solid icosahedron. The icosahedron is5936centered at the modeling coordinates origin and has a radius of 1.0.5937</remarks>5938<seealso cref="M:Tao.FreeGlut.Glut.glutWireIcosahedron"/>5939</member>5940<member name="M:Tao.FreeGlut.Glut.glutVideoResizeGet(System.Int32)">5941<summary>5942Retrieves GLUT video resize information represented by integers.5943</summary>5944<param name="param">5945<para>5946Name of video resize information to retrieve. Available values are:5947</para>5948<para>5949<list type="table">5950<listheader>5951<term>Value</term>5952<description>Description</description>5953</listheader>5954<item>5955<term><see cref="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_POSSIBLE"/></term>5956<description>5957Non-zero if video resizing is supported by the underlying system;5958zero if not supported. If this is zero, the other video resize5959GLUT calls do nothing when called.5960</description>5961</item>5962<item>5963<term><see cref="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_X_DELTA"/></term>5964<description>Unknown</description>5965</item>5966<item>5967<term><see cref="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_Y_DELTA"/></term>5968<description>Unknown</description>5969</item>5970<item>5971<term><see cref="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_WIDTH_DELTA"/></term>5972<description>Unknown</description>5973</item>5974<item>5975<term><see cref="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_HEIGHT_DELTA"/></term>5976<description>Unknown</description>5977</item>5978<item>5979<term><see cref="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_X"/></term>5980<description>Unknown</description>5981</item>5982<item>5983<term><see cref="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_Y"/></term>5984<description>Unknown</description>5985</item>5986<item>5987<term><see cref="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_WIDTH"/></term>5988<description>Unknown</description>5989</item>5990<item>5991<term><see cref="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_HEIGHT"/></term>5992<description>Unknown</description>5993</item>5994<item>5995<term><see cref="F:Tao.FreeGlut.Glut.GLUT_VIDEO_RESIZE_IN_USE"/></term>5996<description>Unknown</description>5997</item>5998</list>5999</para>6000</param>6001<remarks>6002<para>6003<b>glutVideoResizeGet</b> retrieves GLUT video resizing information6004represented by integers. The <i>param</i> parameter determines what type of6005video resize information to return.6006</para>6007<para>6008<b>X IMPLEMENTATION NOTES</b>6009</para>6010<para>6011The current implementation uses the <c>SGIX_video_resize</c> GLX extension.6012This extension is currently supported on SGI's InfiniteReality-based systems.6013</para>6014<para>6015<b>WIN32 IMPLEMENTATION NOTES</b>6016</para>6017<para>6018The current implementation never reports that video resizing is possible.6019</para>6020</remarks>6021<seealso cref="M:Tao.FreeGlut.Glut.glutGet(System.Int32)"/>6022<seealso cref="M:Tao.FreeGlut.Glut.glutSetupVideoResizing"/>6023<seealso cref="M:Tao.FreeGlut.Glut.glutStopVideoResizing"/>6024<seealso cref="M:Tao.FreeGlut.Glut.glutVideoPan(System.Int32,System.Int32,System.Int32,System.Int32)"/>6025<seealso cref="M:Tao.FreeGlut.Glut.glutVideoResize(System.Int32,System.Int32,System.Int32,System.Int32)"/>6026</member>6027<member name="M:Tao.FreeGlut.Glut.glutSetupVideoResizing">6028<summary>6029Unknown. Unable to locate definitive documentation on this method.6030</summary>6031<remarks>6032Unknown. Unable to locate definitive documentation on this method.6033</remarks>6034</member>6035<member name="M:Tao.FreeGlut.Glut.glutStopVideoResizing">6036<summary>6037Unknown. Unable to locate definitive documentation on this method.6038</summary>6039<remarks>6040Unknown. Unable to locate definitive documentation on this method.6041</remarks>6042</member>6043<member name="M:Tao.FreeGlut.Glut.glutVideoResize(System.Int32,System.Int32,System.Int32,System.Int32)">6044<summary>6045Unknown. Unable to locate definitive documentation on this method.6046</summary>6047<param name="x">6048Unknown. Unable to locate definitive documentation on this method.6049</param>6050<param name="y">6051Unknown. Unable to locate definitive documentation on this method.6052</param>6053<param name="width">6054Unknown. Unable to locate definitive documentation on this method.6055</param>6056<param name="height">6057Unknown. Unable to locate definitive documentation on this method.6058</param>6059<remarks>6060Unknown. Unable to locate definitive documentation on this method.6061</remarks>6062</member>6063<member name="M:Tao.FreeGlut.Glut.glutVideoPan(System.Int32,System.Int32,System.Int32,System.Int32)">6064<summary>6065Unknown. Unable to locate definitive documentation on this method.6066</summary>6067<param name="x">6068Unknown. Unable to locate definitive documentation on this method.6069</param>6070<param name="y">6071Unknown. Unable to locate definitive documentation on this method.6072</param>6073<param name="width">6074Unknown. Unable to locate definitive documentation on this method.6075</param>6076<param name="height">6077Unknown. Unable to locate definitive documentation on this method.6078</param>6079<remarks>6080Unknown. Unable to locate definitive documentation on this method.6081</remarks>6082</member>6083<member name="M:Tao.FreeGlut.Glut.glutReportErrors">6084<summary>6085Prints out OpenGL run-time errors.6086</summary>6087<remarks>6088<para>6089<b>glutReportErrors</b> prints out any OpenGL run-time errors pending and6090clears the errors. This routine typically should only be used for debugging6091purposes since calling it will slow OpenGL programs. It is provided as a6092convenience; all the routine does is call <see cref="M:Tao.OpenGl.Gl.glGetError"/> until6093no more errors are reported. Any errors detected are reported with a GLUT6094warning and the corresponding text message generated by6095/*see cref="Glu.gluErrorString" />*/.6096</para>6097<para>6098Calling <b>glutReportErrors</b> repeatedly in your program can help isolate6099OpenGL errors to the offending OpenGL command. Remember that you can use the6100<c>-gldebug</c> option to detect OpenGL errors in any GLUT program.6101</para>6102</remarks>6103<seealso cref="M:Tao.FreeGlut.Glut.glutCreateWindow(System.String)"/>6104/*seealso cref="Glu.gluErrorString" />*/6105<seealso cref="M:Tao.OpenGl.Gl.glGetError"/>6106<seealso cref="M:Tao.FreeGlut.Glut.glutInit"/>6107<seealso cref="M:Tao.FreeGlut.Glut.glutInitDisplayMode(System.Int32)"/>6108</member>6109<member name="M:Tao.FreeGlut.Glut.glutIgnoreKeyRepeat(System.Int32)">6110<summary>6111Determines if auto repeat keystrokes are reported to the current window.6112</summary>6113<param name="ignore">6114Non-zero indicates auto repeat keystrokes should not be reported by the6115keyboard and special callbacks; zero indicates that auto repeat keystrokes6116will be reported.6117</param>6118<remarks>6119<para>6120<b>glutIgnoreKeyRepeat</b> determines if auto repeat keystrokes are reported6121to the current window. The ignore auto repeat state of a window can be6122queried with <c>Glut.glutDeviceGet(Glut.GLUT_DEVICE_IGNORE_KEY_REPEAT)</c>.6123</para>6124<para>6125Ignoring auto repeated keystrokes is generally done in conjunction with using6126the <see cref="M:Tao.FreeGlut.Glut.glutKeyboardUpFunc(Tao.FreeGlut.Glut.KeyboardUpCallback)"/> and <see cref="M:Tao.FreeGlut.Glut.glutSpecialUpFunc(Tao.FreeGlut.Glut.SpecialUpCallback)"/>6127callbacks to repeat key releases. If you do not ignore auto repeated6128keystrokes, your GLUT application will experience repeated release/press6129callbacks. Games using the keyboard will typically want to ignore key6130repeat.6131</para>6132<para>6133<b>X IMPLEMENTATION NOTES</b>6134</para>6135<para>6136X11 sends <c>KeyPress</c> events repeatedly when the window system's global6137auto repeat is enabled. <b>glutIgnoreKeyRepeat</b> can prevent these auto6138repeated keystrokes from being reported as keyboard or special callbacks, but6139there is still some minimal overhead by the X server to continually stream6140<c>KeyPress</c> events to the GLUT application. The6141<see cref="M:Tao.FreeGlut.Glut.glutSetKeyRepeat(System.Int32)"/> routine can be used to actually disable the6142global sending of auto repeated <c>KeyPress</c> events. Note that6143<see cref="M:Tao.FreeGlut.Glut.glutSetKeyRepeat(System.Int32)"/> affects the global window system auto repeat6144state so other applications will not auto repeat if you disable auto repeat6145globally through <see cref="M:Tao.FreeGlut.Glut.glutSetKeyRepeat(System.Int32)"/>.6146</para>6147</remarks>6148<seealso cref="M:Tao.FreeGlut.Glut.glutDeviceGet(System.Int32)"/>6149<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)"/>6150<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardUpFunc(Tao.FreeGlut.Glut.KeyboardUpCallback)"/>6151<seealso cref="M:Tao.FreeGlut.Glut.glutSetKeyRepeat(System.Int32)"/>6152<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)"/>6153<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialUpFunc(Tao.FreeGlut.Glut.SpecialUpCallback)"/>6154</member>6155<member name="M:Tao.FreeGlut.Glut.glutSetKeyRepeat(System.Int32)">6156<summary>6157Sets the key repeat mode for the window system.6158</summary>6159<param name="repeatMode">6160<para>6161Mode for setting key repeat to. Available modes are:6162</para>6163<para>6164<list type="table">6165<listheader>6166<term>Value</term>6167<description>Description</description>6168</listheader>6169<item>6170<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_REPEAT_OFF"/></term>6171<description>6172Disable key repeat for the window system on a global basis if6173possible.6174</description>6175</item>6176<item>6177<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_REPEAT_ON"/></term>6178<description>6179Enable key repeat for the window system on a global basis if6180possible.6181</description>6182</item>6183<item>6184<term><see cref="F:Tao.FreeGlut.Glut.GLUT_KEY_REPEAT_DEFAULT"/></term>6185<description>6186Reset the key repeat mode for the window system to its default6187state if possible.6188</description>6189</item>6190</list>6191</para>6192</param>6193<remarks>6194<para>6195<b>glutSetKeyRepeat</b> sets the key repeat mode for the window system on a6196global basis if possible. If supported by the window system, the key repeat6197can either be enabled, disabled, or set to the window system's default key6198repeat state.6199</para>6200<para>6201<b>X IMPLEMENTATION NOTES</b>6202</para>6203<para>6204X11 sends <c>KeyPress</c> events repeatedly when the window system's global6205auto repeat is enabled. <see cref="M:Tao.FreeGlut.Glut.glutIgnoreKeyRepeat(System.Int32)"/> can prevent these6206auto repeated keystrokes from being reported as keyboard or special6207callbacks, but there is still some minimal overhead by the X server to6208continually stream <c>KeyPress</c> events to the GLUT application. The6209<b>glutSetKeyRepeat</b> routine can be used to actually disable the global6210sending of auto repeated <c>KeyPress</c> events. Note that6211<b>glutSetKeyRepeat</b> affects the global window system auto repeat state so6212other applications will not auto repeat if you disable auto repeat globally6213through <b>glutSetKeyRepeat</b>.6214</para>6215<para>6216GLUT applications using the X11 GLUT implemenation should disable key repeat6217with <b>glutSetKeyRepeat</b> to disable key repeats most efficiently.6218</para>6219<para>6220<b>WIN32 IMPLEMENTATION NOTES</b>6221</para>6222<para>6223The Win32 implementation of <b>glutSetKeyRepeat</b> does nothing. The6224<see cref="M:Tao.FreeGlut.Glut.glutIgnoreKeyRepeat(System.Int32)"/> routine can be used in the Win32 GLUT6225implementation to ignore repeated keys on a per-window basis without changing6226the global window system key repeat.6227</para>6228</remarks>6229<seealso cref="M:Tao.FreeGlut.Glut.glutDeviceGet(System.Int32)"/>6230<seealso cref="M:Tao.FreeGlut.Glut.glutIgnoreKeyRepeat(System.Int32)"/>6231<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)"/>6232<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardUpFunc(Tao.FreeGlut.Glut.KeyboardUpCallback)"/>6233<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)"/>6234<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialUpFunc(Tao.FreeGlut.Glut.SpecialUpCallback)"/>6235</member>6236<member name="M:Tao.FreeGlut.Glut.glutForceJoystickFunc">6237<summary>6238Forces current window's joystick callback to be called.6239</summary>6240<remarks>6241<para>6242<b>glutForceJoystickFunc</b> forces the current window's joystick callback to6243be called, reporting the latest joystick state.6244</para>6245<para>6246The joystick callback is called either due to polling of the joystick at the6247uniform timer interval set by <see cref="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)"/>'s6248<i>pollInterval</i> (specified in milliseconds) or in response to calling6249<b>glutForceJoystickFunc</b>. If the <i>pollInterval</i> is non-positive, no6250joystick polling is performed and the GLUT application must frequently6251(usually from an idle callback) call <b>glutForceJoystickFunc</b>.6252</para>6253<para>6254The joystick callback will be called once (if one exists) for each time6255<b>glutForceJoystickFunc</b> is called. The callback is called from6256<see cref="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)"/>. That is, when6257<see cref="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)"/> returns, the callback will have already6258happened.6259</para>6260<para>6261<b>X IMPLEMENTATION NOTES</b>6262</para>6263<para>6264The GLUT 3.7 implementation of GLUT for X11 supports the joystick API, but6265not actual joystick input. A future implementation of GLUT for X11 may add6266joystick support.6267</para>6268<para>6269<b>WIN32 IMPLEMENTATION NOTES</b>6270</para>6271<para>6272The GLUT 3.7 implementation of GLUT for Win32 supports the joystick API and6273joystick input, but does so through the dated <c>joySetCapture</c> and6274<c>joyGetPosEx</c> Win32 Multimedia API. The GLUT 3.7 joystick support for6275Win32 has all the limitations of the Win32 Multimedia API joystick support.6276A future implementation of GLUT for Win32 may use DirectInput.6277</para>6278</remarks>6279<seealso cref="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)"/>6280</member>6281<member name="M:Tao.FreeGlut.Glut.glutGameModeString(System.String)">6282<summary>6283Sets the game mode configuration via a string.6284</summary>6285<param name="str">6286string for selecting a game mode configuration.6287</param>6288<remarks>6289<para>6290<b>glutGameModeString</b> sets the game mode configuration via a string. The6291game mode configuration string for GLUT's fullscreen game mode describes the6292suitable screen width and height in pixels, the pixel depth in bits, and the6293video refresh frequency in hertz. The game mode configuration string can6294also specify a window system dependent display mode.6295</para>6296<para>6297The string is a list of zero or more capability descriptions seperated by6298spaces and tabs. Each capability description is a capability name that is6299followed by a comparator and a numeric value. (Unlike the display mode6300string specified using <see cref="M:Tao.FreeGlut.Glut.glutInitDisplayString(System.String)"/>, the comparator6301and numeric value are <i>not</i> optional.) For example, <c>"width>=640"</c>6302and <c>"bpp=32"</c> are both valid criteria.6303</para>6304<para>6305The capability descriptions are translated into a set of criteria used to6306select the appropriate game mode configuration.6307</para>6308<para>6309The criteria are matched in strict left to right order of precdence. That6310is, the first specified criteria (leftmost) takes precedence over the later6311criteria for non-exact criteria (greater than, less than, etc. comparators).6312Exact criteria (equal, not equal compartors) must match exactly so precedence6313is not relevant.6314</para>6315<para>6316The numeric value is an integer that is parsed according to ANSI C's6317<c>strtol(str, strptr, 0)</c> behavior. This means that decimal, octal6318(leading 0), and hexidecimal values (leading 0x) are accepeted.6319</para>6320<para>6321The valid compartors are:6322</para>6323<para>6324<list type="table">6325<listheader>6326<term>Value</term>6327<description>Description</description>6328</listheader>6329<item>6330<term>=</term>6331<description>Equal.</description>6332</item>6333<item>6334<term>!=</term>6335<description>Not equal.</description>6336</item>6337<item>6338<term><</term>6339<description>6340Less than and preferring larger difference (the least is best).6341</description>6342</item>6343<item>6344<term>></term>6345<description>6346Greater than and preferring larger differences (the most is6347best).6348</description>6349</item>6350<item>6351<term><=</term>6352<description>6353Less than or equal and preferring larger difference (the least is6354best).6355</description>6356</item>6357<item>6358<term>>=</term>6359<description>6360Greater than or equal and preferring more instead of less. This6361comparator is useful for allocating resources like color precsion6362or depth buffer precision where the maximum precison is generally6363preferred. Contrast with the tilde (~) comprator.6364</description>6365</item>6366<item>6367<term>~</term>6368<description>6369Greater than or equal but preferring less instead of more. This6370compartor is useful for allocating resources such as stencil bits6371or auxillary color buffers where you would rather not over6372allocate.6373</description>6374</item>6375</list>6376</para>6377<para>6378The valid capability names are:6379</para>6380<para>6381<list type="table">6382<listheader>6383<term>Value</term>6384<description>Description</description>6385</listheader>6386<item>6387<term>bpp</term>6388<description>Bits per pixel for the frame buffer.</description>6389</item>6390<item>6391<term>height</term>6392<description>Height of the screen in pixels.</description>6393</item>6394<item>6395<term>hertz</term>6396<description>Video refresh rate of the screen in hertz.</description>6397</item>6398<item>6399<term>num</term>6400<description>6401Number of the window system depenedent display mode6402configuration.6403</description>6404</item>6405<item>6406<term>width</term>6407<description>Width of the screen in pixels.</description>6408</item>6409</list>6410</para>6411<para>6412An additional compact screen resolution description format is supported.6413This compact description convienently encodes the screen resolution6414description in a single phrase. For example, <c>"640x480:16@60"</c>6415requests a 640 by 480 pixel screen with 16 bits per pixel at a 60 hertz video6416refresh rate. A compact screen resolution description can be mixed with6417conventional capability descriptions.6418</para>6419<para>6420The compact screen resolution description format is as follows:6421</para>6422<para>6423<c>[width "x" height][":" bitsPerPixel]["@" videoRate]</c>6424</para>6425<para>6426Unspecifed capability descriptions will result in unspecified criteria being6427generated. These unspecified criteria help <b>glutGameModeString</b> behave6428sensibly with terse game mode description strings.6429</para>6430</remarks>6431</member>6432<member name="M:Tao.FreeGlut.Glut.glutEnterGameMode">6433<summary>6434Enters GLUT's game mode.6435</summary>6436<returns>6437This is defined in the header as an <c>int</c>, however, from the6438documentation that I've seen, I believe it should be a <c>void</c>. You6439should check your game mode state after entering game mode with:6440<see cref="M:Tao.FreeGlut.Glut.glutGameModeGet(System.Int32)"/> passing appropriate parameters.6441</returns>6442<remarks>6443<para>6444<b>glutEnterGameMode</b> is designed to enable high-performance fullscreen6445GLUT rendering, possibly at a different screen display format. Calling6446<b>glutEnterGameMode</b> creates a special fullscreen GLUT window (with its6447own callbacks and OpenGL rendering context state). If the game mode string6448describes a possible screen display format, GLUT also changes the screen6449display format to the one described by the game mode string.6450</para>6451<para>6452When game mode is entered, certain GLUT functionality is disable to6453facilitate high-performance fullscreen rendering. GLUT pop-up menus are not6454available while in game mode. Other created windows and subwindows are not6455displayed in GLUT game mode. Game mode will also hide all other applications6456running on the computer's display screen. The intent of these restrictions6457is to eliminate window clipping issues, permit screen display format changes,6458and permit fullscreen rendering optimization such as page flipping for6459fullscreen buffer swaps.6460</para>6461<para>6462The following GLUT routines are ignored in game mode:6463</para>6464<para>6465<list type="bullet">6466<item><see cref="M:Tao.FreeGlut.Glut.glutFullScreen"/></item>6467<item><see cref="M:Tao.FreeGlut.Glut.glutHideWindow"/></item>6468<item><see cref="M:Tao.FreeGlut.Glut.glutIconifyWindow"/></item>6469<item><see cref="M:Tao.FreeGlut.Glut.glutPopWindow"/></item>6470<item><see cref="M:Tao.FreeGlut.Glut.glutPositionWindow(System.Int32,System.Int32)"/></item>6471<item><see cref="M:Tao.FreeGlut.Glut.glutPushWindow"/></item>6472<item><see cref="M:Tao.FreeGlut.Glut.glutReshapeWindow(System.Int32,System.Int32)"/></item>6473<item><see cref="M:Tao.FreeGlut.Glut.glutSetIconTitle(System.String)"/></item>6474<item><see cref="M:Tao.FreeGlut.Glut.glutSetWindowTitle(System.String)"/></item>6475<item><see cref="M:Tao.FreeGlut.Glut.glutShowWindow"/></item>6476</list>6477</para>6478<para>6479<b>glutEnterGameMode</b> can be called when already in game mode. This will6480destroy the previous game mode window (including any OpenGL rendering state)6481and create a new game mode window with a new OpenGL rendering context. Also6482if <b>glutEnterGameMode</b> is called when already in game mode and if the6483game mode string has changed and describes a possible screen display format,6484the new screen display format takes effect. A reshape callback is generated6485if the game mode window changes size due to a screen display format change.6486</para>6487<para>6488Re-entering game mode provides a mechanism for changing the screen display6489format while already in game mode. Note though that the game mode window's6490OpenGL state is lost in this process and the application is responsible for6491re-initializing the newly created game mode window OpenGL state when6492re-entering game mode.6493</para>6494<para>6495Game mode cannot be entered while pop-up menus are in use.6496</para>6497<para>6498Note that the <b>glutEnterGameMode</b> and <see cref="M:Tao.FreeGlut.Glut.glutFullScreen"/>6499routines operate differently. <see cref="M:Tao.FreeGlut.Glut.glutFullScreen"/> simply makes the6500current window match the size of the screen. <see cref="M:Tao.FreeGlut.Glut.glutFullScreen"/>6501does not change the screen display format and does not disable any GLUT6502features such as pop-up menus; <see cref="M:Tao.FreeGlut.Glut.glutFullScreen"/> continues to6503operate in a "windowed" mode of operation. <b>glutEnterGameMode</b>6504creates a new window style, possibly changes the screen display mode, limits6505GLUT functionality, and hides other applications.6506</para>6507</remarks>6508<seealso cref="M:Tao.FreeGlut.Glut.glutGameModeGet(System.Int32)"/>6509<seealso cref="M:Tao.FreeGlut.Glut.glutGameModeString(System.String)"/>6510<seealso cref="M:Tao.FreeGlut.Glut.glutInitDisplayString(System.String)"/>6511<seealso cref="M:Tao.FreeGlut.Glut.glutLeaveGameMode"/>6512</member>6513<member name="M:Tao.FreeGlut.Glut.glutLeaveGameMode">6514<summary>6515Leaves GLUT's game mode.6516</summary>6517<remarks>6518<para>6519<b>glutLeaveGameMode</b> leaves the GLUT game mode and returns the screen6520display format to its default format.6521</para>6522<para>6523After leaving game mode, the GLUT functionality disabled in game mode is6524available again. The game mode window (and its OpenGL rendering state) is6525destroyed when leaving game mode. Any windows and subwindows created before6526entering the game mode are displayed in their previous locations. The OpenGL6527state of normal GLUT windows and subwindows is not disturbed by entering6528and/or leaving game mode.6529</para>6530</remarks>6531<seealso cref="M:Tao.FreeGlut.Glut.glutEnterGameMode"/>6532<seealso cref="M:Tao.FreeGlut.Glut.glutGameModeGet(System.Int32)"/>6533<seealso cref="M:Tao.FreeGlut.Glut.glutGameModeString(System.String)"/>6534<seealso cref="M:Tao.FreeGlut.Glut.glutInitDisplayString(System.String)"/>6535</member>6536<member name="M:Tao.FreeGlut.Glut.glutGameModeGet(System.Int32)">6537<summary>6538Retrieves GLUT device information represented by integers.6539</summary>6540<param name="mode">6541Name of game mode information to retrieve.6542</param>6543<returns>6544<para>6545<list type="table">6546<listheader>6547<term>Value</term>6548<description>Description</description>6549</listheader>6550<item>6551<term><see cref="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_ACTIVE"/></term>6552<description>6553Non-zero if GLUT's game mode is active; zero if not active. Game6554mode is not active initially. Game mode becomes active when6555<see cref="M:Tao.FreeGlut.Glut.glutEnterGameMode"/> is called. Game mode becomes6556inactive when <see cref="M:Tao.FreeGlut.Glut.glutLeaveGameMode"/> is called.6557</description>6558</item>6559<item>6560<term><see cref="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_POSSIBLE"/></term>6561<description>6562Non-zero if the game mode string last specified to6563<see cref="M:Tao.FreeGlut.Glut.glutGameModeString(System.String)"/> is a possible game mode6564configuration; zero otherwise. Being "possible" does not6565guarantee that if game mode is entered with6566<see cref="M:Tao.FreeGlut.Glut.glutEnterGameMode"/> that the display settings will6567actually changed. <see cref="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_DISPLAY_CHANGED"/>6568should be called once game mode is entered to determine if the6569display mode is actually changed.6570</description>6571</item>6572<item>6573<term><see cref="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_WIDTH"/></term>6574<description>6575Width in pixels of the screen when game mode is activated.6576</description>6577</item>6578<item>6579<term><see cref="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_HEIGHT"/></term>6580<description>6581Height in pixels of the screen when game mode is activated.6582</description>6583</item>6584<item>6585<term><see cref="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_PIXEL_DEPTH"/></term>6586<description>6587Pixel depth of the screen when game mode is activiated.6588</description>6589</item>6590<item>6591<term><see cref="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_REFRESH_RATE"/></term>6592<description>6593Screen refresh rate in cyles per second (hertz) when game mode is6594activated. Zero is returned if the refresh rate is unknown or6595cannot be queried.6596</description>6597</item>6598<item>6599<term><see cref="F:Tao.FreeGlut.Glut.GLUT_GAME_MODE_DISPLAY_CHANGED"/></term>6600<description>6601Non-zero if entering game mode actually changed the display6602settings. If the game mode string is not possible or the display6603mode could not be changed for any other reason, zero is returned.6604</description>6605</item>6606</list>6607</para>6608</returns>6609<remarks>6610<b>glutGameModeGet</b> retrieves GLUT game mode information represented by6611integers. The <i>mode</i> parameter determines what type of game mode6612information to return. Requesting game mode information for an invalid GLUT6613game mode information name returns negative one.6614</remarks>6615<seealso cref="M:Tao.FreeGlut.Glut.glutDeviceGet(System.Int32)"/>6616<seealso cref="M:Tao.FreeGlut.Glut.glutEnterGameMode"/>6617<seealso cref="M:Tao.FreeGlut.Glut.glutGameModeString(System.String)"/>6618<seealso cref="M:Tao.FreeGlut.Glut.glutGet(System.Int32)"/>6619<seealso cref="M:Tao.FreeGlut.Glut.glutLayerGet(System.Int32)"/>6620<seealso cref="M:Tao.FreeGlut.Glut.glutLeaveGameMode"/>6621</member>6622<member name="M:Tao.FreeGlut.Glut.glutMainLoopEvent">6623<summary>6624Performs the main loop event and returns control.6625</summary>6626</member>6627<member name="M:Tao.FreeGlut.Glut.glutLeaveMainLoop">6628<summary>6629Leaves the main loop.6630</summary>6631</member>6632<member name="M:Tao.FreeGlut.Glut.glutMouseWheelFunc(Tao.FreeGlut.Glut.MouseWheelCallback)">6633<summary>6634Sets the mouse wheel callback.6635</summary>6636<param name="func">6637The new mouse wheel callback function. See <see cref="T:Tao.FreeGlut.Glut.MouseWheelCallback"/>.6638</param>6639</member>6640<member name="M:Tao.FreeGlut.Glut.glutCloseFunc(Tao.FreeGlut.Glut.CloseCallback)">6641<summary>6642Sets the close callback.6643</summary>6644<param name="func">6645The new close callback function. See <see cref="T:Tao.FreeGlut.Glut.CloseCallback"/>.6646</param>6647</member>6648<member name="M:Tao.FreeGlut.Glut.glutWMCloseFunc(Tao.FreeGlut.Glut.WindowCloseCallback)">6649<summary>6650Sets the window close callback for the current window.6651</summary>6652<param name="func">6653The new window close callback function. See <see cref="T:Tao.FreeGlut.Glut.WindowCloseCallback"/>.6654</param>6655</member>6656<member name="M:Tao.FreeGlut.Glut.glutMenuDestroyFunc(Tao.FreeGlut.Glut.MenuDestroyCallback)">6657<summary>6658Sets the menu destroy callback.6659</summary>6660<param name="func">6661The new menu destroy callback function. See <see cref="T:Tao.FreeGlut.Glut.MenuDestroyCallback"/>.6662</param>6663</member>6664<member name="M:Tao.FreeGlut.Glut.glutSetOption(System.Int32,System.Int32)">6665<summary>6666Sets simple GLUT state represented by integers.6667</summary>6668<param name="optionFlag">6669The option to set.6670</param>6671<param name="value">6672The value to set for the option.6673</param>6674</member>6675<member name="M:Tao.FreeGlut.Glut.glutGetWindowData">6676<summary>6677Get the user data for the current window.6678</summary>6679<returns>6680An <see cref="T:System.IntPtr"/> associated with the current window as set with <see cref="M:Tao.FreeGlut.Glut.glutSetupWindowData(System.IntPtr)"/>.6681</returns>6682</member>6683<member name="M:Tao.FreeGlut.Glut.glutSetupWindowData(System.IntPtr)">6684<summary>6685Set the user data for the current window.6686</summary>6687<param name="data">6688Arbitrary client-supplied <see cref="T:System.IntPtr"/>.6689</param>6690</member>6691<member name="M:Tao.FreeGlut.Glut.glutGetMenuData">6692<summary>6693Rerieves user data from a menu.6694</summary>6695<returns>6696A previously stored arbitrary user data <see cref="T:System.IntPtr"/> from the current menu.6697</returns>6698</member>6699<member name="M:Tao.FreeGlut.Glut.glutSetMenuData(System.IntPtr)">6700<summary>6701Stores user data in a menu.6702</summary>6703<param name="data">6704An arbitrary client <see cref="T:System.IntPtr"/>.6705</param>6706</member>6707<member name="M:Tao.FreeGlut.Glut.glutBitmapHeight(System.IntPtr)">6708<summary>6709Returns the height of a given font, in pixels.6710</summary>6711<param name="font">6712A bitmapped font identifier.6713</param>6714<returns>6715Returns 0 if font is invalid, otherwise, the font's height, in pixels.6716</returns>6717</member>6718<member name="M:Tao.FreeGlut.Glut.glutStrokeHeight(System.IntPtr)">6719<summary>6720Returns the height of a given font.6721</summary>6722<param name="font">6723A GLUT stroked font identifier.6724</param>6725<returns>6726Returns 0 if fontID is invalid, otherwise, the height of the font in pixels.6727</returns>6728</member>6729<member name="M:Tao.FreeGlut.Glut.glutBitmapString(System.IntPtr,System.String)">6730<summary>6731Draw a string of bitmapped characters.6732</summary>6733<param name="font">6734A bitmapped font identifier.6735</param>6736<param name="str">6737The string to draw.6738</param>6739</member>6740<member name="M:Tao.FreeGlut.Glut.glutStrokeString(System.IntPtr,System.String)">6741<summary>6742Draw a string of stroked characters.6743</summary>6744<param name="font">6745A GLUT stroked font identifier.6746</param>6747<param name="str">6748The string to draw.6749</param>6750</member>6751<member name="M:Tao.FreeGlut.Glut.glutWireRhombicDodecahedron">6752<summary>6753Draw a wireframe rhombic dodecahedron.6754</summary>6755<remarks>6756This function draws a wireframe dodecahedron whose facets are rhombic and whose vertices are at unit radius.6757No facet lies normal to any coordinate axes. The polyhedron is centered at the origin.6758</remarks>6759</member>6760<member name="M:Tao.FreeGlut.Glut.glutSolidRhombicDodecahedron">6761<summary>6762Draw a solid rhombic dodecahedron.6763</summary>6764<remarks>6765This function draws a solid-shaded dodecahedron whose facets are rhombic and whose vertices are at unit radius.6766No facet lies normal to any coordinate axes. The polyhedron is centered at the origin.6767</remarks>6768</member>6769<member name="M:Tao.FreeGlut.Glut.glutWireSierpinskiSponge(System.Int32,System.Double[],System.Double)">6770<summary>6771Draw a wireframe Spierspinski's sponge6772</summary>6773<param name="levels">6774Recursive depth.6775</param>6776<param name="offset">6777Location vector.6778</param>6779<param name="scale">6780Relative size.6781</param>6782<remarks>6783This function recursively draws a few levels of Sierpinski's Sponge in wireframe.6784If <paramref name="levels" /> is 0, draws 1 tetrahedron. The <paramref name="offset" /> is a translation.6785The z axis is normal to the base. The sponge is centered at the origin.6786</remarks>6787</member>6788<member name="M:Tao.FreeGlut.Glut.glutSolidSierpinskiSponge(System.Int32,System.Double[],System.Double)">6789<summary>6790Draw a solid Spierspinski's sponge.6791</summary>6792<param name="levels">6793Recursive depth.6794</param>6795<param name="offset">6796Location vector.6797</param>6798<param name="scale">6799Relative size.6800</param>6801<remarks>6802This function recursively draws a few levels of a solid-shaded Sierpinski's Sponge. If <paramref name="levels" /> is 0,6803draws 1 tetrahedron. The <paramref name="offset" /> is a translation. The z axis is normal to the base. The sponge is6804centered at the origin.6805</remarks>6806</member>6807<member name="M:Tao.FreeGlut.Glut.glutWireCylinder(System.Double,System.Double,System.Int32,System.Int32)">6808<summary>6809Draw a wireframe cylinder.6810</summary>6811<param name="radius">6812Radius of cylinder.6813</param>6814<param name="height">6815Z height.6816</param>6817<param name="slices">6818Number of divisions around the z axis.6819</param>6820<param name="stacks">6821Number of divisions along the z axis.6822</param>6823<remarks>6824Draws a wireframe of a cylinder, the center of whose base is at the origin, and whose axis parallels the z axis.6825</remarks>6826</member>6827<member name="M:Tao.FreeGlut.Glut.glutSolidCylinder(System.Double,System.Double,System.Int32,System.Int32)">6828<summary>6829Draw a solid cylinder.6830</summary>6831<param name="radius">6832Radius of cylinder.6833</param>6834<param name="height">6835Z height.6836</param>6837<param name="slices">6838Number of divisions around the z axis.6839</param>6840<param name="stacks">6841Number of divisions along the z axis.6842</param>6843<remarks>6844Draws a solid of a cylinder, the center of whose base is at the origin, and whose axis parallels the z axis.6845</remarks>6846</member>6847<member name="M:Tao.FreeGlut.Glut.glutGetProcAddress(System.String)">6848<summary>6849Determine if an procedure or extension is available.6850</summary>6851<param name="procName">6852Procedure name.6853</param>6854<returns>6855<para>6856Given a function name, searches for the function (or "procedure", hence "Proc") in internal tables.6857If the function is found, a pointer to the function is returned. If the function is not found,6858<see cref="F:System.IntPtr.Zero"/> is returned.6859</para>6860<para>6861In addition to an internal freeglut table, this function will also consult glX (on X systems) or6862wgl (on WIN32 and WINCE), if the freeglut tables do not have the requested function. It should6863return any OpenGL, glX, or wgl function if those functions are available.6864</para>6865</returns>6866</member>6867<member name="T:Tao.FreeGlut.Glut.ButtonBoxCallback">6868<summary>6869Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutButtonBoxFunc(Tao.FreeGlut.Glut.ButtonBoxCallback)"/>.6870</summary>6871<seealso cref="M:Tao.FreeGlut.Glut.glutButtonBoxFunc(Tao.FreeGlut.Glut.ButtonBoxCallback)"/>6872</member>6873<member name="T:Tao.FreeGlut.Glut.CreateMenuCallback">6874<summary>6875Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutCreateMenu(Tao.FreeGlut.Glut.CreateMenuCallback)"/>.6876</summary>6877<seealso cref="M:Tao.FreeGlut.Glut.glutCreateMenu(Tao.FreeGlut.Glut.CreateMenuCallback)"/>6878</member>6879<member name="T:Tao.FreeGlut.Glut.DialsCallback">6880<summary>6881Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutDialsFunc(Tao.FreeGlut.Glut.DialsCallback)"/>.6882</summary>6883<seealso cref="M:Tao.FreeGlut.Glut.glutDialsFunc(Tao.FreeGlut.Glut.DialsCallback)"/>6884</member>6885<member name="T:Tao.FreeGlut.Glut.DisplayCallback">6886<summary>6887Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutDisplayFunc(Tao.FreeGlut.Glut.DisplayCallback)"/>.6888</summary>6889<seealso cref="M:Tao.FreeGlut.Glut.glutDisplayFunc(Tao.FreeGlut.Glut.DisplayCallback)"/>6890</member>6891<member name="T:Tao.FreeGlut.Glut.EntryCallback">6892<summary>6893Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutEntryFunc(Tao.FreeGlut.Glut.EntryCallback)"/>.6894</summary>6895<seealso cref="M:Tao.FreeGlut.Glut.glutEntryFunc(Tao.FreeGlut.Glut.EntryCallback)"/>6896</member>6897<member name="T:Tao.FreeGlut.Glut.IdleCallback">6898<summary>6899Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutIdleFunc(Tao.FreeGlut.Glut.IdleCallback)"/>.6900</summary>6901<seealso cref="M:Tao.FreeGlut.Glut.glutIdleFunc(Tao.FreeGlut.Glut.IdleCallback)"/>6902</member>6903<member name="T:Tao.FreeGlut.Glut.JoystickCallback">6904<summary>6905Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)"/>.6906</summary>6907<seealso cref="M:Tao.FreeGlut.Glut.glutJoystickFunc(Tao.FreeGlut.Glut.JoystickCallback,System.Int32)"/>6908</member>6909<member name="T:Tao.FreeGlut.Glut.KeyboardCallback">6910<summary>6911Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)"/>.6912</summary>6913<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardFunc(Tao.FreeGlut.Glut.KeyboardCallback)"/>6914</member>6915<member name="T:Tao.FreeGlut.Glut.KeyboardUpCallback">6916<summary>6917Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutKeyboardUpFunc(Tao.FreeGlut.Glut.KeyboardUpCallback)"/>.6918</summary>6919<seealso cref="M:Tao.FreeGlut.Glut.glutKeyboardUpFunc(Tao.FreeGlut.Glut.KeyboardUpCallback)"/>6920</member>6921<member name="T:Tao.FreeGlut.Glut.MenuStateCallback">6922<summary>6923Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutMenuStateFunc(Tao.FreeGlut.Glut.MenuStateCallback)"/>.6924</summary>6925<seealso cref="M:Tao.FreeGlut.Glut.glutMenuStateFunc(Tao.FreeGlut.Glut.MenuStateCallback)"/>6926</member>6927<member name="T:Tao.FreeGlut.Glut.MenuStatusCallback">6928<summary>6929Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutMenuStatusFunc(Tao.FreeGlut.Glut.MenuStatusCallback)"/>.6930</summary>6931<seealso cref="M:Tao.FreeGlut.Glut.glutMenuStatusFunc(Tao.FreeGlut.Glut.MenuStatusCallback)"/>6932</member>6933<member name="T:Tao.FreeGlut.Glut.MotionCallback">6934<summary>6935Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutMotionFunc(Tao.FreeGlut.Glut.MotionCallback)"/>.6936</summary>6937<seealso cref="M:Tao.FreeGlut.Glut.glutMotionFunc(Tao.FreeGlut.Glut.MotionCallback)"/>6938</member>6939<member name="T:Tao.FreeGlut.Glut.MouseCallback">6940<summary>6941Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>.6942</summary>6943<seealso cref="M:Tao.FreeGlut.Glut.glutMouseFunc(Tao.FreeGlut.Glut.MouseCallback)"/>6944</member>6945<member name="T:Tao.FreeGlut.Glut.OverlayDisplayCallback">6946<summary>6947Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutOverlayDisplayFunc(Tao.FreeGlut.Glut.OverlayDisplayCallback)"/>.6948</summary>6949<seealso cref="M:Tao.FreeGlut.Glut.glutOverlayDisplayFunc(Tao.FreeGlut.Glut.OverlayDisplayCallback)"/>6950</member>6951<member name="T:Tao.FreeGlut.Glut.PassiveMotionCallback">6952<summary>6953Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutPassiveMotionFunc(Tao.FreeGlut.Glut.PassiveMotionCallback)"/>.6954</summary>6955<seealso cref="M:Tao.FreeGlut.Glut.glutPassiveMotionFunc(Tao.FreeGlut.Glut.PassiveMotionCallback)"/>6956</member>6957<member name="T:Tao.FreeGlut.Glut.ReshapeCallback">6958<summary>6959Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutReshapeFunc(Tao.FreeGlut.Glut.ReshapeCallback)"/>.6960</summary>6961<seealso cref="M:Tao.FreeGlut.Glut.glutReshapeFunc(Tao.FreeGlut.Glut.ReshapeCallback)"/>6962</member>6963<member name="T:Tao.FreeGlut.Glut.SpaceballButtonCallback">6964<summary>6965Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutSpaceballButtonFunc(Tao.FreeGlut.Glut.SpaceballButtonCallback)"/>.6966</summary>6967<seealso cref="M:Tao.FreeGlut.Glut.glutSpaceballButtonFunc(Tao.FreeGlut.Glut.SpaceballButtonCallback)"/>6968</member>6969<member name="T:Tao.FreeGlut.Glut.SpaceballMotionCallback">6970<summary>6971Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutSpaceballMotionFunc(Tao.FreeGlut.Glut.SpaceballMotionCallback)"/>.6972</summary>6973<seealso cref="M:Tao.FreeGlut.Glut.glutSpaceballMotionFunc(Tao.FreeGlut.Glut.SpaceballMotionCallback)"/>6974</member>6975<member name="T:Tao.FreeGlut.Glut.SpaceballRotateCallback">6976<summary>6977Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutSpaceballRotateFunc(Tao.FreeGlut.Glut.SpaceballRotateCallback)"/>.6978</summary>6979<seealso cref="M:Tao.FreeGlut.Glut.glutSpaceballRotateFunc(Tao.FreeGlut.Glut.SpaceballRotateCallback)"/>6980</member>6981<member name="T:Tao.FreeGlut.Glut.SpecialCallback">6982<summary>6983Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)"/>.6984</summary>6985<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialFunc(Tao.FreeGlut.Glut.SpecialCallback)"/>6986</member>6987<member name="T:Tao.FreeGlut.Glut.SpecialUpCallback">6988<summary>6989Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutSpecialUpFunc(Tao.FreeGlut.Glut.SpecialUpCallback)"/>.6990</summary>6991<seealso cref="M:Tao.FreeGlut.Glut.glutSpecialUpFunc(Tao.FreeGlut.Glut.SpecialUpCallback)"/>6992</member>6993<member name="T:Tao.FreeGlut.Glut.TabletButtonCallback">6994<summary>6995Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutTabletButtonFunc(Tao.FreeGlut.Glut.TabletButtonCallback)"/>.6996</summary>6997<seealso cref="M:Tao.FreeGlut.Glut.glutTabletButtonFunc(Tao.FreeGlut.Glut.TabletButtonCallback)"/>6998</member>6999<member name="T:Tao.FreeGlut.Glut.TabletMotionCallback">7000<summary>7001Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutTabletMotionFunc(Tao.FreeGlut.Glut.TabletMotionCallback)"/>.7002</summary>7003<seealso cref="M:Tao.FreeGlut.Glut.glutTabletMotionFunc(Tao.FreeGlut.Glut.TabletMotionCallback)"/>7004</member>7005<member name="T:Tao.FreeGlut.Glut.TimerCallback">7006<summary>7007Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutTimerFunc(System.Int32,Tao.FreeGlut.Glut.TimerCallback,System.Int32)"/>.7008</summary>7009<seealso cref="M:Tao.FreeGlut.Glut.glutTimerFunc(System.Int32,Tao.FreeGlut.Glut.TimerCallback,System.Int32)"/>7010</member>7011<member name="T:Tao.FreeGlut.Glut.WindowStatusCallback">7012<summary>7013Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutWindowStatusFunc(Tao.FreeGlut.Glut.WindowStatusCallback)"/>.7014</summary>7015<seealso cref="M:Tao.FreeGlut.Glut.glutWindowStatusFunc(Tao.FreeGlut.Glut.WindowStatusCallback)"/>7016</member>7017<member name="T:Tao.FreeGlut.Glut.VisibilityCallback">7018<summary>7019Callback (delegate) for use with <see cref="M:Tao.FreeGlut.Glut.glutVisibilityFunc(Tao.FreeGlut.Glut.VisibilityCallback)"/>.7020</summary>7021<seealso cref="M:Tao.FreeGlut.Glut.glutVisibilityFunc(Tao.FreeGlut.Glut.VisibilityCallback)"/>7022</member>7023<member name="T:Tao.FreeGlut.Glut.MouseWheelCallback">7024<summary>7025Callback (delegate for use with <see cref="M:Tao.FreeGlut.Glut.glutMouseWheelFunc(Tao.FreeGlut.Glut.MouseWheelCallback)"/>.7026</summary>7027<param name="wheel">7028Wheel number.7029</param>7030<param name="direction">7031Direction, +/- 1.7032</param>7033<param name="x">7034Pointer X coordinate.7035</param>7036<param name="y">7037Pointer Y coordinate.7038</param>7039<remarks>7040This may not work reliably on X Windows.7041</remarks>7042<seealso cref="M:Tao.FreeGlut.Glut.glutMouseWheelFunc(Tao.FreeGlut.Glut.MouseWheelCallback)"/>7043</member>7044<member name="T:Tao.FreeGlut.Glut.CloseCallback">7045<summary>7046Callback (delegate for use with <see cref="M:Tao.FreeGlut.Glut.glutCloseFunc(Tao.FreeGlut.Glut.CloseCallback)"/>.7047</summary>7048<seealso cref="M:Tao.FreeGlut.Glut.glutCloseFunc(Tao.FreeGlut.Glut.CloseCallback)"/>7049</member>7050<member name="T:Tao.FreeGlut.Glut.WindowCloseCallback">7051<summary>7052Callback (delegate for use with <see cref="M:Tao.FreeGlut.Glut.glutWMCloseFunc(Tao.FreeGlut.Glut.WindowCloseCallback)"/>.7053</summary>7054<seealso cref="M:Tao.FreeGlut.Glut.glutWMCloseFunc(Tao.FreeGlut.Glut.WindowCloseCallback)"/>7055</member>7056<member name="T:Tao.FreeGlut.Glut.MenuDestroyCallback">7057<summary>7058Callback (delegate for use with <see cref="M:Tao.FreeGlut.Glut.glutMenuDestroyFunc(Tao.FreeGlut.Glut.MenuDestroyCallback)"/>.7059</summary>7060<seealso cref="M:Tao.FreeGlut.Glut.glutMenuDestroyFunc(Tao.FreeGlut.Glut.MenuDestroyCallback)"/>7061</member>7062<member name="T:Tao.FreeGlut.Glut.GLUTprocDelegate">7063<summary>70647065</summary>7066</member>7067</members>7068</doc>706970707071