Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
mgl:mglmetal [2022/09/06 14:16]
joshryu0425 [Development status]
mgl:mglmetal [2023/08/09 12:19] (current)
Line 131: Line 131:
 In case you do need to build it, there are three places to look these days (as of Spring 2022). In case you do need to build it, there are three places to look these days (as of Spring 2022).
  
-==== mglMakeMetal.m ==== +===== mglMakeMetal.m ​===== 
 This builds most of the mex-functions for MGL, including functions for things like HID inputs and sounds. This builds most of the mex-functions for MGL, including functions for things like HID inputs and sounds.
  
Line 138: Line 138:
 </​code>​ </​code>​
  
-==== mglMakeSocket.m ====+===== mglMakeSocket.m ​===== 
  
 This builds mex-functions specifically for socket communications with the new mglMetal swift application. After building you can test the results with mglTestSocket.m. The test will open a pair of sockets and send a bunch of data between them, using various data types that the mglMetal Swift app supports. This builds mex-functions specifically for socket communications with the new mglMetal swift application. After building you can test the results with mglTestSocket.m. The test will open a pair of sockets and send a bunch of data between them, using various data types that the mglMetal Swift app supports.
Line 147: Line 147:
 </​code>​ </​code>​
  
-==== mglMetal.app ====+===== mglMetal.app ​=====
 To build the standalone mglMetal Swift application,​ you need to use Xcode. From testing so far, it looks like you'll need macOS 10.15.7 Catalina or later, with Xcode 12.4 or later. To build the standalone mglMetal Swift application,​ you need to use Xcode. From testing so far, it looks like you'll need macOS 10.15.7 Catalina or later, with Xcode 12.4 or later.
  
Line 172: Line 172:
 </​code>​ </​code>​
  
 +Note that the default setting for Xcode is to build debug binaries into the directory:
 +
 +  ~/​Library/​Developer/​Xcode/​DerivedData/​Build/​Products/​Debug
 +
 +So, mglMetalExecutableName now looks into that directory to see if there is a version of mglMetal that has a newer timestamp then the ones found in the mgl library. If so, it uses that, and will tell you it is doing that when you run mglOpen.
 ====== Development status ===== ====== Development status =====
 Development of MGL v3 with Metal is still in progress. Although we're not ready to declare v3 complete, a lot of functionality is in place. You might want to test it out! Development of MGL v3 with Metal is still in progress. Although we're not ready to declare v3 complete, a lot of functionality is in place. You might want to test it out!
Line 201: Line 206:
 You can also look for the latest known [[https://​github.com/​justingardner/​mgl/​issues\ | issues at GitHub]]. You can also look for the latest known [[https://​github.com/​justingardner/​mgl/​issues\ | issues at GitHub]].
  
-==== Major functionality ====+===== Major functionality ​=====
 ^ Function name ^ Status ^ Notes ^ ^ Function name ^ Status ^ Notes ^
 | mglOpen | working | Currently starts out as windowed only. Can we pass initial window state as command line arg? Or start out with window hidden?| | mglOpen | working | Currently starts out as windowed only. Can we pass initial window state as command line arg? Or start out with window hidden?|
Line 220: Line 225:
  
  
-==== Secondary priority functionality ====+===== Secondary priority functionality ​=====
 ^ Function name ^ Status ^ Notes ^ ^ Function name ^ Status ^ Notes ^
 | mglFrameGrab.m | | Not working per se, but mglMetalSetRenderTarget.m and mglMetalReadTexture.m are working | | mglFrameGrab.m | | Not working per se, but mglMetalSetRenderTarget.m and mglMetalReadTexture.m are working |
Line 234: Line 239:
  
  
-==== Minor functionality ====+===== Minor functionality ​=====
 ^ Function name ^ Status ^ Notes ^ ^ Function name ^ Status ^ Notes ^
 | mglFillOval.m | working | |  | mglFillOval.m | working | | 
Line 250: Line 255:
  
  
-==== Functionality not affected by Metal ====+===== Functionality not affected by Metal =====
 ^ Function name ^ Status ^ Notes ^ ^ Function name ^ Status ^ Notes ^
 |mglSetGammaTable | | needs testing| |mglSetGammaTable | | needs testing|
Line 281: Line 286:
  
  
-==== Functionality no longer needed ====+===== Functionality no longer needed ​=====
 ^ Function name ^ Notes ^ Done ^ ^ Function name ^ Notes ^ Done ^
 | mglBindTexture.m | Fast binding of textures. No need to continue to support ​ | n/a| | mglBindTexture.m | Fast binding of textures. No need to continue to support ​ | n/a|
Line 288: Line 293:
 |mglFlushAndWait.m |  No need to update / or provide as wrapper | Check | |mglFlushAndWait.m |  No need to update / or provide as wrapper | Check |
  
-==== Brainard Lab functionality ====+===== Brainard Lab functionality ​=====
 ^ Function name ^ Notes ^ Done ^ ^ Function name ^ Notes ^ Done ^
 | mglBindFrameBufferObject.m | Chris Broussard function | | | mglBindFrameBufferObject.m | Chris Broussard function | |
Line 358: Line 363:
 | mglPolygon | vertices with color components | | Draw the given vertices as a triangle strip. | | mglPolygon | vertices with color components | | Draw the given vertices as a triangle strip. |
 | mglArcs | vertices with color, size, and shape components | | Draw the given vertices as points, with various curved shape options. | | mglArcs | vertices with color, size, and shape components | | Draw the given vertices as points, with various curved shape options. |
-| mglUpdateTexture | texture number, width, height, and rgba float texture data | | Replace the given texture'​s contents, to be displayed during this frame.|+| mglUpdateTexture | texture number, width, height, and rgba float texture data | | Replace the given texture'​s contents, to be displayed during this frame. ​ |