MGraphics without jsui

From WikiName
Jump to: navigation, search

MGraphics is a great easy-to-use wrapper for OpenGL in Javascript. In Max, the only documented use is within a [jsui] object.

However, MGraphics can be used just as well without jsui, outputting a Jitter matrix instead. Here is an example:


Save this as ToJitter.js in the same folder as the Max patch below:

autowatch = 1;

var mgraphics = new MGraphics(256, 256);
var outmatrix = new JitterMatrix(4, "char", 256, 256);

var start = new Date();

var speed = 2.;

function draw(now)
{
	var progress = (now * speed) % 1.;

	with (mgraphics) {
		// draw background with changing alpha (causes trail effect)
		set_source_rgba(0, 1, 0, progress);
		rectangle(0, 0, 256, 256);
		fill();
	
		// draw scaling square
		set_source_rgba(1, 0, 1, 1);
		rectangle(64 - progress * 64, 64 - progress * 64, 128 + progress * 128, 128 - progress * 128);
		fill();
	}
		
	var theImage = new Image(mgraphics);
	theImage.tonamedmatrix(outmatrix.name);
	outlet(0, "jit_matrix", outmatrix.name);

	gc();
}

Save this as a Max patch in the same folder as the js file above:

<code>
----------begin_max5_patcher----------
1704.3oc6a17iiZCE.+bxeEVH0KUYSw17U1Sak5dn8P6kpdY0pHGvCimk.Tv
Yloc09+d8G.AR.BICIgUpqlkLisA+7O+d1O+djuNelwljWo4Ff2C9DX1ruNe
1LUQxBlU72yL1Rd0OhjqZlwVZdNIjZrPWGm9JWUNx1AH9eY4I63QTN+eRo5G
tgA3yEUEuaKKVTo54gJJLkv8ejEGtNi5y02B1d0Rr3eVVK.Pa6klK.1txqvU
KMqdZr.U2mr4o2Y4V16OjDyiIaU8swOmwHQF66bsno5cXs1my9WU6g3klxR+
174xKKdibw+QR10BJHOINvN8BEm6HThouHjgiXRJHjx+8jW5jKODkP3c.GX2
vwsP8P8gCTdEYVCK9IQIY5lZtzyBCwtKD+lqED55H+MUQXwinCVZOJrDIDrZ
iAZVAAKPnn0rH5yzrbVRbsGxLCRZZshmU6Vjb+I8XyYQUQrXcQvphxnOyJue
upRIYBRxEXbWldD8pmigtRwb87xasDyNJ0NmUJ9hTvFCc1iLgVQXTh+WnJxY
VVXRJMlEmlQyowbBuPJppNf9.YWDec6npY8OP7ocdysNuLyHLiEjDKEhF2or
3xt6Sh0YTZP10GLpVDSRa4lyEiic4aHYRptIhVy3UntmjD0rppIRgUCIlskv
oblVXQlUOT11zLVLuQGQiIhmwi49YIQQMdT5ZdtkZBDy09zWXA7GUOq5nTzb
VZ4TfQEiBXgzbdyx3jv7lkzXOi5Jg0WNnQ48srPykF3fM.y50bzZCaHwgFK.
FJD84ZsrsUI5ZkBnXJ1VLQCUKRfsNbohCs7wd0kot0xNdE.zA2WcU6xZTqpV
XsM9HMTnlAf.XuTsGThFDJ8zaPeRRhrtTRBu6j7m.PSSyk8Bxlacc1zz1TuE
lZOcK2SQS3pueo46.2DT5pMwQRkzdQoy2unzOcmubG22DNgCBmZuMsOslo8+
iygrCzf4IdhyS0H+z6b2MvLGh9mk5Jxt7ZW3xBOLf3mrcKMtvkmQjF5ty3MY
qgrrVZaiPVNCZDa08H17LFw6c7MhE2kedJYVVe6nHOYWle4zd4zAnonKbBky
hqNGvm16dfvYk5M7QVPPS+t0tplKc7UeDiAMwc0jY4RcGzv6kLK8S8.70Cmm
Px7f3LdxHysfu1k4VFb2KYV5q3fjYqoitgzorgoarZ5Hy1CUlclNxL9bj4wX
8YvmmWO9RF4jmoAqEcgXSv0DNOisYGWu8S8Pi8ViBzoixzYDZjVEhd57t5zv
njMjnhfAVcusDAl46g33DI1eD3rD4gun.w1WTpw1UQoF4nbcwZ0Qgisd7UPi
UjUGO17C.3xNAS8nOcYXwRetT69vBZ0zCK4r38GbezBceCz3ozUv8qwL8HSZ
FMkFG.BxHubto74jY0.4fke3Y0q9h4DjJju.RSxYxkTEJNxedGd44xGqdTcL
QJ0ErxfBB6Usw6NBnxSdcHg9nJD9fsTiyTyvScLQrNcWd8MrO6j.Z1ehqdHK
bSQREt.P7DiuL8EVbPOo.TFh+y2VA4ZVsLhkxTQyHmtLXZeziFwD.acsx9qY
s.a1U1eQ3oW1eyD8FEjFQho9I6h4.IR.Ars8qKrnWch9VevEszq.ZZqDniN9
JcjlWzYasXc0glzjYKQ3U7qr3GRFwcWpSm5VLcAGr4zSi5obvel7aLNmls7o
7weqWs+Htn9Vg0Zje0.F34gjup.U81wPPNpxDUKJbsNSw6OO1XdNBo5YXzRU
pxejHLm+qe8W93e.9f9OT15fOH583fBwPbFxOndcLjYlrV1IOdVS7nWq07ur
sDzygXa86JiWudG.O6igft59OIQqduxRnJ7lB3XaJ1TqSnUlj7yGW1X8JjHc
xy50qBHbZhKglXlPUiloI10iREu5UPXuTxbxRI4euKidBLIs.CiVWz32jUHR
qVAw8AL26Hu3IggQzK3X+mTYAWkhutG4UG2u0UsaeajwSoP9t2rAPyH4zSZx
T9ot0WHRVot531GRN6W4N7U234uEyLYI.3IV98r8tWCEGkSXN8FWH3U3Trp9
oYN+zL5vXIWPpiyiS8PH2Q3iajdpiib7wQM9nYrgJMdCPZja2WqQWSwAiFf7
fuYhCZ0PDmaGdFh3.uYRi6zR2wtgQSG4ry9lJNmjNl2TwAMcDGqgfmCL+t+x
yMjOCPbbmTRCdZAma3dVlCQbbtcaZ4L.Sc4WBnajKFHmgrvrysUdN47E91IO
CQ+w5lo9.Gfzbo6hpcd9fueNRA4fuWNG7cx43uONc8cwQzOea9+gRpViy
-----------end_max5_patcher-----------
</code>