# IupGLControls

### OpenGL Controls Library

This library1 contains several controls that behave much like their standard controls counterpart such as IupLabel, IupButton, IupFrame, and so on.
But they were designed to be used only embedded in an OpenGL canvas along with the application drawing.
They will work and be displayed on top of the application drawing and respond to mouse events concurrently with the application mouse events.
In order to use these controls the application must use the IupGLCanvasBox controls instead of the IupGLCanvas control.
Actually the IupGLCanvasBox inherits from the IupGLCanvas control so their usage is identical.
But IupGLCanvasBox can have children and it will manage the display and mouse events of all its children.
All the IupGlControls visible elements that can be an embedded children of a IupGLCanvasBox are based on the IupGLSubCanvas control.
Other IUP elements can also be used.
It will work seamlessly with elements that are void containers that can also be used, such as IupHbox, IupVbox, IupGridBox, and so on.
IupFill() can also be used, however native elements can also be placed on top although they will not be clipped by IupGLFrame and other IupGlControls containers.
All functions and resources, like IupImage, are used just like any other IUP control.
These controls are drawn by IUP using OpenGL on a IupGLCanvas control, and are not native controls.
The IupGLControlsOpen() function must be called after IupOpen.
1 In C and Lua, IupGLControls is indeed a separate thing that needs special include files and link directives, but in Phix it is all bundled in with the standard `include pGUI.e`.
Examples of these controls can be found in demo\pGUI\iup3Dctrls.exw
None of these routines are supported by pwa/p2js.