====== Main screen functions ====== ===== mglOpen: Opens the screen ===== **usage:** mglOpen(whichScreen, , , , )\\ **purpose:** Opens an openGL window ^ argument ^ value ^ | whichScreen | 0=Window, 1=primary screen, 2=secondary screen, etc | | | [width] in pixels | | | [height] in pixels | | | [frameRate] in hertz | | | [bitDepth] this is usually 32 bits | Open last monitor in list with current window settings mglOpen Open with resolution 800x600 60Hz 32bit fullscreen mglOpen(1,800,600,60,32); Open in a window mglOpen(0); \\ Note that mglOpen hides the mouse cursor as a default. If you want to show the mouse cursor, you should call mglDisplayCursor after opening the screen. ===== mglFlush: Flips front and back buffer ===== **purpose:** swap front and back buffer (waits for one frame tick)\\ **usage:** mglFlush \\ **N.B.** mglFlush has to be called after each operation that involves drawing or erasing from the currently open window ===== mglClose: Closes the screen ===== **purpose:** close OpenGL screen\\ **usage:** mglClose ====== Other screen functions ====== ===== mglResolution: Get and set display resolution ===== **availability**: [[mgl:beta|mgl 2.0]]\\ **usage**: mglResolution(, , , , )\\ **purpose**: Gets or sets the resolution of a display **usage**: To get the resolution of the default display: mglResolution To get the resolution of display 1: mglResolution(1) To set the resolution of display 2 to 1440x900: mglResolution(2,1440,900) ===== mglSwitchDisplay: Switch between multiple monitors ===== **usage:** mglSwitchDisplay()\\ **purpose:** If you are using multiple monitors to display stimuli (like for a dichoptic presentation), you can open up multiple displays using this function. ^ argument ^ value ^ | | which display to switch to | You can use this to open up two separate screens and control them independently. For example, say you have two monitors 1 and 2. You open the first in the usual way: mglOpen(1) Then you switch monitors so that you can open up the other one mglSwitchDisplay mglOpen(2) Now if you want draw to the first display, you can do mglSwitchDisplay(1) mglClearScreen(0.5); mglFlush; Similarly, to draw to the second display mglSwitchDisplay(2); mglClearScreen(1); mglFlush; You can check the status of all open displays with: mglSwitchDisplay(-2); If you want to close all displays at once, you can do: mglSwitchDisplay(-1); ===== mglMoveWindow: Moves windows created by mglOpen(0) ===== **usage:** mglMoveWindow(leftPos,topPos)\\ **purpose:** Moves a window created by mglOpen(0) ^ argument ^ value ^ | leftPos | Left position of where the window will be moved to | | topPos | Top position of where the window will be moved to | mglOpen(0); mglMoveWindow(100,100); \\ ===== mglDescribeDisplays: Get information about your monitor and computer system ===== **usage:** [displayInfo computerInfo] = mglDescribeDisplays()\\ **purpose:** Gets information about your displays (as an array of structs with values for each monitor). As well as a single struct with info about your computer. ===== mglFrameGrab: Frame grab to a matlab matrix ===== **usage:** mglFrameGrab()\\ **purpose:** Does a frame grab of the current mgl screen and returns it as a matrix of dimensions widthxheightx3 ^ argument ^ value ^ | frameRect | Optional argument that is a 1x4 array specifying a rectangular part of the frame to grab in the format [x y width height] | mglOpen(); mglScreenCoordinates; mglClearScreen([0 0 0]); mglPoints2(mglGetParam('screenWidth')*rand(5000,1),mglGetParam('screenHeight')*rand(5000,1)); mglPolygon([0 0 mglGetParam('screenWidth') mglGetParam('screenWidth')],[mglGetParam('screenHeight')/3 mglGetParam('screenHeight')*2/3 mglGetParam('screenHeight')*2/3 mglGetParam('screenHeight')/3],0); mglTextSet('Helvetica',32,[1 1 1]); mglTextDraw('Frame Grab',[mglGetParam('screenWidth')/2 mglGetParam('screenHeight')/2]); frame = mglFrameGrab; imagesc(mean(frame,3)');colormap('gray') mglFlush