usage: mglOpen(whichScreen, <screenWidth>, <screenHeight>, <frameRate>, <bitDepth>)
purpose: Opens an openGL window
argument | value |
---|---|
whichScreen | 0=Window, 1=primary screen, 2=secondary screen, etc |
<screenWidth> | [width] in pixels |
<screenHeight> | [height] in pixels |
<frameRate> | [frameRate] in hertz |
<bitDepth> | [bitDepth] this is usually 32 bits |
Open last monitor in list with current window settings
mglOpen
Open with resolution 800×600 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.
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
purpose: close OpenGL screen
usage: mglClose
availability: mgl 2.0
usage: mglResolution(<whichScreen>, <screenWidth>, <screenHeight>, <frameRate>, <bitDepth>)
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 1440×900:
mglResolution(2,1440,900)
usage: mglSwitchDisplay(<displayID>)
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 |
---|---|
<displayID> | 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);
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);
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.
usage: mglFrameGrab(<frameRect>)
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 1×4 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