aboutsummaryrefslogtreecommitdiff
path: root/Gem/examples/09.openGL
diff options
context:
space:
mode:
authorTravis CI <zmoelnig@travis-ci.umlaeute.mur.at>2015-03-14 20:40:49 +0000
committerTravis CI <zmoelnig@travis-ci.umlaeute.mur.at>2015-03-14 20:40:49 +0000
commit5c694f159b012d1d94bf15bfe580dec52e4fe797 (patch)
treece400f82d72f92189c50f54afa11c568cda53562 /Gem/examples/09.openGL
Gem osx/x86_64
built '' for osx/x86_64
Diffstat (limited to 'Gem/examples/09.openGL')
-rw-r--r--Gem/examples/09.openGL/01.primQuad.pd107
-rw-r--r--Gem/examples/09.openGL/02.displayList.pd185
-rw-r--r--Gem/examples/09.openGL/03.stencilBuffer.pd251
-rw-r--r--Gem/examples/09.openGL/04.clearZ.pd27
-rw-r--r--Gem/examples/09.openGL/05.load_identity_matrix.pd74
5 files changed, 644 insertions, 0 deletions
diff --git a/Gem/examples/09.openGL/01.primQuad.pd b/Gem/examples/09.openGL/01.primQuad.pd
new file mode 100644
index 0000000..da187b2
--- /dev/null
+++ b/Gem/examples/09.openGL/01.primQuad.pd
@@ -0,0 +1,107 @@
+#N canvas 50 20 769 629 10;
+#X obj 469 17 gemhead;
+#X obj 468 504 GEMglEnd;
+#X obj 469 233 GEMglColor4f 1 0 0 0;
+#X obj 469 254 GEMglVertex3f -1 0 0;
+#X obj 469 366 GEMglColor3f 0 1 0;
+#X obj 468 387 GEMglVertex3f 1 0 0;
+#X obj 469 307 GEMglColor3f 0 0 1;
+#X obj 469 330 GEMglVertex3f 0 -1 0;
+#X floatatom 502 45 5 0 0 0 - - -;
+#X obj 469 77 GEMglRotatef 0 1 1 1;
+#X obj 605 127 GLdefine GL_SMOOTH;
+#X obj 605 105 loadbang;
+#X obj 605 147 loadbang;
+#X obj 605 169 GLdefine GL_POLYGON;
+#X obj 469 187 GEMglBegin;
+#X obj 469 145 GEMglShadeModel;
+#X obj 621 487 loadbang;
+#X obj 468 527 GEMglShadeModel;
+#X obj 621 509 GLdefine GL_FLAT;
+#X text 52 17 this is an example how to use Gem as an openGL-wrapper:
+;
+#X text 47 79 you can use "any" openGL-command (like "glBegin") as
+a Gem-object with a prepended "GEM" (like [GEMglBegin]);
+#X text 32 378 to make use of GL-constants (like "GL_TRIANGLE") \,
+use the object [GLdefine] \, that maps symbols to their corresponding
+values.;
+#X obj 468 436 GEMglColor3fv 1 1 0;
+#X obj 468 459 GEMglVertex3fv 0 1 0;
+#X msg 613 413 1 0 1;
+#X msg 655 413 1 1 0;
+#X floatatom 650 260 3 0 100 0 - - -;
+#X obj 650 281 * 0.01;
+#X msg 672 103 bang;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 104 170 pd Gem.init;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 1;
+#X obj 102 161 r \$0-gemstart;
+#X obj 102 182 select 1 0;
+#X msg 102 214 create \, 1;
+#X msg 177 215 destroy;
+#X obj 102 239 t a;
+#X obj 318 54 inlet;
+#X obj 318 255 gemwin;
+#X obj 318 100 t a a;
+#X obj 318 287 outlet;
+#X obj 350 128 route create destroy;
+#X obj 350 150 t b;
+#X msg 350 172 1;
+#X obj 390 150 t b;
+#X msg 390 172 0;
+#X obj 350 195 t f;
+#X msg 350 219 set \$1;
+#X text 118 122 rendering;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 74 187 pd gemwin;
+#X connect 0 0 9 0;
+#X connect 1 0 17 0;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 22 0;
+#X connect 6 0 7 0;
+#X connect 7 0 4 0;
+#X connect 8 0 9 1;
+#X connect 9 0 15 0;
+#X connect 10 0 15 1;
+#X connect 11 0 10 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 1;
+#X connect 14 0 2 0;
+#X connect 15 0 14 0;
+#X connect 16 0 18 0;
+#X connect 18 0 17 1;
+#X connect 22 0 23 0;
+#X connect 23 0 1 0;
+#X connect 24 0 22 1;
+#X connect 25 0 22 1;
+#X connect 26 0 27 0;
+#X connect 27 0 6 2;
+#X connect 28 0 10 0;
+#X connect 29 0 30 0;
diff --git a/Gem/examples/09.openGL/02.displayList.pd b/Gem/examples/09.openGL/02.displayList.pd
new file mode 100644
index 0000000..d6ec2e6
--- /dev/null
+++ b/Gem/examples/09.openGL/02.displayList.pd
@@ -0,0 +1,185 @@
+#N canvas 76 58 1137 553 10;
+#X obj 366 251 GEMglGenLists 1;
+#X obj 336 418 GEMglNewList;
+#X obj 147 432 GEMglCallList;
+#N canvas 0 0 450 300 once 0;
+#X obj 91 62 inlet;
+#X obj 91 266 outlet;
+#X obj 91 150 spigot 1;
+#X obj 91 175 t a b;
+#X msg 121 197 0;
+#X obj 298 57 inlet open;
+#X obj 298 92 t b;
+#X msg 142 128 1;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 1 4 0;
+#X connect 4 0 2 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 2 1;
+#X restore 366 229 pd once;
+#N canvas 0 0 450 300 once 0;
+#X obj 91 62 inlet;
+#X obj 91 266 outlet;
+#X obj 91 150 spigot 1;
+#X obj 91 175 t a b;
+#X msg 121 197 0;
+#X obj 298 57 inlet open;
+#X obj 298 92 t b;
+#X msg 142 128 1;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 1 4 0;
+#X connect 4 0 2 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 2 1;
+#X restore 336 392 pd once;
+#X obj 549 281 t b f;
+#X obj 415 374 loadbang;
+#X obj 415 393 GLdefine GL_COMPILE;
+#X msg 417 199 bang;
+#X obj 336 508 GEMglEndList;
+#X obj 336 445 t a a;
+#X obj 366 466 separator;
+#X obj 336 173 gemhead 1;
+#X obj 336 198 t a a;
+#X obj 466 271 t f b;
+#X obj 345 298 t f f;
+#X text 26 21 this is an example of how to use Gem's openGL-wrapper-objects
+to speed up things;
+#X obj 147 248 gemhead;
+#X obj 147 311 translateXYZ;
+#X obj 147 364 rotateXYZ;
+#X floatatom 549 236 5 -2 2 2 pos - -;
+#X floatatom 199 282 5 -4 4 0 - - -;
+#X floatatom 185 339 5 0 0 0 - - -;
+#X text 346 25 1 generate a displaylist with [GEMglGenLists];
+#X text 376 38 you should do this only once;
+#X text 346 65 2 compile what is between [GEMglNewList] and [GEMglEndList]
+;
+#X text 377 82 you should do this \, whenever a parameter of the display-list
+has changed;
+#X text 346 125 3 call the displaylist with [GEMglCallList];
+#N canvas 0 0 450 300 weird 0;
+#X obj 37 9 inlet gemlist;
+#X obj 37 125 cylinder;
+#X obj 190 30 inlet dist;
+#X obj 360 30 inlet tearot;
+#X obj 67 204 rotate 0 0 1 0;
+#X obj 67 231 teapot 0.2;
+#X obj 67 173 translate 1 0 0 2;
+#X obj 67 144 color 1 0 0;
+#X obj 37 103 color 1 1 1 0.5;
+#X obj 37 81 alpha;
+#X obj 37 34 t a a;
+#X obj 67 56 separator;
+#X connect 0 0 10 0;
+#X connect 2 0 6 1;
+#X connect 3 0 4 1;
+#X connect 4 0 5 0;
+#X connect 6 0 4 0;
+#X connect 7 0 6 0;
+#X connect 8 0 1 0;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 10 1 11 0;
+#X connect 11 0 7 0;
+#X restore 366 487 pd weird thing;
+#X msg 496 318 bang;
+#X floatatom 660 269 5 0 0 2 rot - -;
+#X text 535 320 recompile the display-list;
+#X obj 147 400 spigot;
+#X obj 249 365 t b f;
+#X msg 202 400 1;
+#X text 461 190 CLICK ME to generate the display-list \, once the rendering
+is turned on;
+#X text 598 231 when you change this \, the display-list will be recompiled
+;
+#X text 706 258 when you change this \, the display-list will NOT be
+recompiled. You have to do that by hand!;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 119 99 pd Gem.init;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 1;
+#X obj 102 161 r \$0-gemstart;
+#X obj 102 182 select 1 0;
+#X msg 102 214 create \, 1;
+#X msg 177 215 destroy;
+#X obj 102 239 t a;
+#X obj 318 54 inlet;
+#X obj 318 255 gemwin;
+#X obj 318 100 t a a;
+#X obj 318 287 outlet;
+#X obj 350 128 route create destroy;
+#X obj 350 150 t b;
+#X msg 350 172 1;
+#X obj 390 150 t b;
+#X msg 390 172 0;
+#X obj 350 195 t f;
+#X msg 350 219 set \$1;
+#X text 118 122 rendering;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 89 116 pd gemwin;
+#X connect 0 1 14 0;
+#X connect 1 0 10 0;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 29 0;
+#X connect 5 1 28 1;
+#X connect 6 0 7 0;
+#X connect 7 0 1 2;
+#X connect 8 0 3 1;
+#X connect 10 0 9 0;
+#X connect 10 1 11 0;
+#X connect 11 0 28 0;
+#X connect 12 0 13 0;
+#X connect 13 0 4 0;
+#X connect 13 1 3 0;
+#X connect 14 0 15 0;
+#X connect 14 1 29 0;
+#X connect 15 0 33 0;
+#X connect 15 1 1 1;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 19 0 32 0;
+#X connect 20 0 5 0;
+#X connect 21 0 18 1;
+#X connect 21 0 18 2;
+#X connect 22 0 19 1;
+#X connect 22 0 19 2;
+#X connect 22 0 19 3;
+#X connect 29 0 4 1;
+#X connect 30 0 28 2;
+#X connect 32 0 2 0;
+#X connect 33 0 34 0;
+#X connect 33 1 2 1;
+#X connect 34 0 32 1;
+#X connect 38 0 39 0;
diff --git a/Gem/examples/09.openGL/03.stencilBuffer.pd b/Gem/examples/09.openGL/03.stencilBuffer.pd
new file mode 100644
index 0000000..44f1e61
--- /dev/null
+++ b/Gem/examples/09.openGL/03.stencilBuffer.pd
@@ -0,0 +1,251 @@
+#N canvas 431 30 849 872 10;
+#X obj 39 330 GEMglEnable;
+#X floatatom 125 332 5 0 0 0 - - -;
+#X obj 111 282 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 111 305 GLdefine GL_STENCIL_TEST;
+#X obj 129 280 loadbang;
+#X obj 104 382 GLdefine GL_STENCIL_BUFFER_BIT;
+#X obj 166 361 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 119 407 5 0 0 0 - - -;
+#X obj 104 359 loadbang;
+#X obj 39 249 GEMglClearStencil 0;
+#X obj 39 407 GEMglClear;
+#X obj 39 33 gemhead 45;
+#X obj 39 506 GEMglStencilFunc;
+#X msg 146 480 1;
+#X obj 75 436 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 74 459 GLdefine GL_ALWAYS;
+#X obj 96 436 loadbang;
+#X floatatom 100 480 5 0 0 0 - - -;
+#X obj 39 586 GEMglStencilOp;
+#X floatatom 156 581 5 0 0 0 - - -;
+#X obj 70 486 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 70 552 GLdefine GL_REPLACE;
+#X obj 95 530 loadbang;
+#X obj 239 743 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 170 742 loadbang;
+#X obj 39 810 GEMglClear;
+#X floatatom 156 812 5 0 0 0 - - -;
+#X obj 145 788 GLdefine GL_DEPTH_BUFFER_BIT;
+#X obj 126 743 t b b;
+#X obj 490 287 GEMglStencilFunc;
+#X msg 597 263 1;
+#X obj 525 220 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 546 218 loadbang;
+#X floatatom 535 264 5 0 0 0 - - -;
+#X obj 525 241 GLdefine GL_NOTEQUAL;
+#X obj 490 396 color 1 0 0;
+#X obj 490 659 GEMglStencilFunc;
+#X msg 597 634 1;
+#X obj 525 594 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 547 592 loadbang;
+#X floatatom 536 638 5 0 0 0 - - -;
+#X obj 490 709 rotateXYZ 0 0 45;
+#X obj 525 615 GLdefine GL_EQUAL;
+#X obj 490 685 color 1 1 0;
+#X obj 126 766 GLdefine GL_COLOR_BUFFER_BIT;
+#X obj 490 365 GEMglStencilOp;
+#X floatatom 601 364 5 0 0 0 - - -;
+#X obj 521 310 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 544 307 loadbang;
+#X obj 521 331 GLdefine GL_KEEP;
+#X floatatom 58 144 5 0 0 0 - - -;
+#X floatatom 97 144 5 0 0 0 - - -;
+#X obj 39 187 colorRGB 0 0 1;
+#X obj 126 810 |;
+#X floatatom 587 830 5 0 0 0 - - -;
+#X obj 569 782 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 569 805 GLdefine GL_STENCIL_TEST;
+#X obj 587 780 loadbang;
+#X obj 490 830 GEMglDisable;
+#X text 67 212 allow \, clear and configure stencil buffer;
+#X obj 39 695 circle 1.5;
+#X text 131 685 draw in all buffer;
+#X text 104 840 clear color and depth buffer;
+#X text 488 189 draw where the stencil buffer is not 1;
+#X obj 490 423 square 3;
+#X text 522 565 draw where the stencil buffer is 1;
+#X obj 529 21 gemhead 10;
+#X floatatom 562 41 5 0 0 0 - - -;
+#X floatatom 602 41 5 0 0 0 - - -;
+#X floatatom 642 41 5 0 0 0 - - -;
+#X obj 529 87 world_light;
+#X obj 529 62 rotateXYZ 0 0 0;
+#X obj 39 167 rotateXYZ;
+#X text 151 144 <- play with this.;
+#X text 238 858 (c) Cyrille Henry 2006;
+#X obj 39 56 t a b;
+#X obj 74 78 i;
+#X obj 122 56 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 103 78 + 0;
+#X obj 74 123 t f f;
+#X obj 74 100 spigot;
+#X obj 104 673 teapot 1.5;
+#X obj 39 657 spigot;
+#X obj 104 654 spigot;
+#X obj 79 610 loadbang;
+#X obj 147 632 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 82 634 == 0;
+#X msg 147 611 0;
+#X obj 131 77 % 360;
+#X obj 490 754 sphere 1.2 25;
+#X obj 36 6 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X obj 118 113 outlet;
+#X msg 118 81 reset \, lighting 1;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X restore 372 38 pd Gem.init;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 1;
+#X obj 102 161 r \$0-gemstart;
+#X obj 102 182 select 1 0;
+#X msg 102 214 create \, 1;
+#X msg 177 215 destroy;
+#X obj 102 239 t a;
+#X obj 318 54 inlet;
+#X obj 318 255 gemwin;
+#X obj 318 100 t a a;
+#X obj 318 287 outlet;
+#X obj 350 128 route create destroy;
+#X obj 350 150 t b;
+#X msg 350 172 1;
+#X obj 390 150 t b;
+#X msg 390 172 0;
+#X obj 350 195 t f;
+#X msg 350 219 set \$1;
+#X text 118 122 rendering;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 342 55 pd gemwin;
+#X connect 0 0 10 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 0 0 1;
+#X connect 4 0 3 0;
+#X connect 5 0 7 0;
+#X connect 5 0 10 1;
+#X connect 6 0 5 0;
+#X connect 8 0 5 0;
+#X connect 9 0 0 0;
+#X connect 10 0 12 0;
+#X connect 11 0 75 0;
+#X connect 12 0 18 0;
+#X connect 13 0 12 3;
+#X connect 13 0 12 2;
+#X connect 14 0 15 0;
+#X connect 14 0 13 0;
+#X connect 15 0 12 1;
+#X connect 15 0 17 0;
+#X connect 16 0 13 0;
+#X connect 16 0 15 0;
+#X connect 18 0 82 0;
+#X connect 18 0 83 0;
+#X connect 20 0 21 0;
+#X connect 21 0 19 0;
+#X connect 21 0 18 1;
+#X connect 21 0 18 2;
+#X connect 21 0 18 3;
+#X connect 22 0 20 0;
+#X connect 23 0 28 0;
+#X connect 24 0 28 0;
+#X connect 25 0 29 0;
+#X connect 27 0 53 1;
+#X connect 28 0 44 0;
+#X connect 28 1 27 0;
+#X connect 29 0 45 0;
+#X connect 30 0 29 3;
+#X connect 30 0 29 2;
+#X connect 31 0 34 0;
+#X connect 32 0 30 0;
+#X connect 32 0 34 0;
+#X connect 34 0 29 1;
+#X connect 34 0 33 0;
+#X connect 35 0 64 0;
+#X connect 36 0 43 0;
+#X connect 37 0 36 3;
+#X connect 37 0 36 2;
+#X connect 38 0 42 0;
+#X connect 39 0 37 0;
+#X connect 39 0 42 0;
+#X connect 41 0 89 0;
+#X connect 42 0 36 1;
+#X connect 42 0 40 0;
+#X connect 43 0 41 0;
+#X connect 44 0 53 0;
+#X connect 45 0 35 0;
+#X connect 47 0 49 0;
+#X connect 48 0 47 0;
+#X connect 49 0 46 0;
+#X connect 49 0 45 1;
+#X connect 49 0 45 2;
+#X connect 49 0 45 3;
+#X connect 50 0 72 1;
+#X connect 51 0 72 2;
+#X connect 52 0 9 0;
+#X connect 53 0 26 0;
+#X connect 53 0 25 1;
+#X connect 55 0 56 0;
+#X connect 56 0 54 0;
+#X connect 56 0 58 1;
+#X connect 57 0 56 0;
+#X connect 60 0 25 0;
+#X connect 64 0 36 0;
+#X connect 66 0 71 0;
+#X connect 67 0 71 1;
+#X connect 68 0 71 2;
+#X connect 69 0 71 3;
+#X connect 71 0 70 0;
+#X connect 72 0 52 0;
+#X connect 75 0 72 0;
+#X connect 75 1 76 0;
+#X connect 76 0 78 0;
+#X connect 76 0 80 0;
+#X connect 77 0 78 1;
+#X connect 77 0 80 1;
+#X connect 78 0 88 0;
+#X connect 79 0 50 0;
+#X connect 79 1 51 0;
+#X connect 80 0 79 0;
+#X connect 81 0 25 0;
+#X connect 82 0 60 0;
+#X connect 83 0 81 0;
+#X connect 84 0 87 0;
+#X connect 85 0 83 1;
+#X connect 85 0 86 0;
+#X connect 86 0 82 1;
+#X connect 87 0 85 0;
+#X connect 88 0 76 1;
+#X connect 89 0 58 0;
+#X connect 90 0 11 0;
+#X connect 91 0 92 0;
diff --git a/Gem/examples/09.openGL/04.clearZ.pd b/Gem/examples/09.openGL/04.clearZ.pd
new file mode 100644
index 0000000..e4947ff
--- /dev/null
+++ b/Gem/examples/09.openGL/04.clearZ.pd
@@ -0,0 +1,27 @@
+#N canvas 0 0 710 401 10;
+#X obj 111 162 loadbang;
+#X obj 44 209 GEMglClear;
+#X obj 111 186 GLdefine GL_DEPTH_BUFFER_BIT;
+#X obj 173 164 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 44 75 gemhead;
+#X obj 44 255 translateXYZ 0 0 -2;
+#X obj 339 129 gemwin;
+#X msg 352 101 create \, 1;
+#X obj 44 281 color 1 0 0;
+#X obj 44 126 circle 1;
+#X obj 44 310 circle 1;
+#X text 206 11 Clear Depth Buffer;
+#X text 205 352 this is related to the depth object that turn off depth
+buffer test \, but not quite the same...;
+#X text 176 213 <- clear Depth buffer \, so that you can draw anything
+even if it is behind something else;
+#X connect 0 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 1 1;
+#X connect 3 0 2 0;
+#X connect 4 0 9 0;
+#X connect 5 0 8 0;
+#X connect 7 0 6 0;
+#X connect 8 0 10 0;
+#X connect 9 0 1 0;
diff --git a/Gem/examples/09.openGL/05.load_identity_matrix.pd b/Gem/examples/09.openGL/05.load_identity_matrix.pd
new file mode 100644
index 0000000..2db138a
--- /dev/null
+++ b/Gem/examples/09.openGL/05.load_identity_matrix.pd
@@ -0,0 +1,74 @@
+#N canvas 0 0 784 537 10;
+#X obj 64 47 gemhead;
+#X obj 96 94 gemlist_info;
+#X floatatom 177 138 5 0 0 0 - - -;
+#X floatatom 217 138 5 0 0 0 - - -;
+#X floatatom 258 138 5 0 0 0 - - -;
+#X obj 177 115 unpack f f f;
+#X text 185 97 position;
+#X obj 64 71 t a a;
+#X obj 64 328 GEMglLoadIdentity;
+#X obj 64 204 translateXYZ 2 1 3;
+#X obj 96 254 gemlist_info;
+#X floatatom 177 298 5 0 0 0 - - -;
+#X floatatom 217 298 5 0 0 0 - - -;
+#X floatatom 258 298 5 0 0 0 - - -;
+#X obj 177 275 unpack f f f;
+#X text 185 257 position;
+#X obj 64 231 t a a;
+#X obj 96 384 gemlist_info;
+#X floatatom 177 428 5 0 0 0 - - -;
+#X floatatom 217 428 5 0 0 0 - - -;
+#X floatatom 258 428 5 0 0 0 - - -;
+#X obj 177 405 unpack f f f;
+#X text 185 387 position;
+#X obj 64 361 t a a;
+#X obj 64 532 circle;
+#X floatatom 105 179 5 0 0 0 - - -;
+#X obj 391 101 gemwin;
+#X msg 400 78 create \, 1;
+#X obj 64 457 translateXYZ 0 0 -4;
+#X obj 96 504 gemlist_info;
+#X floatatom 177 548 5 0 0 0 - - -;
+#X floatatom 217 548 5 0 0 0 - - -;
+#X floatatom 258 548 5 0 0 0 - - -;
+#X obj 177 525 unpack f f f;
+#X text 185 507 position;
+#X obj 64 481 t a a;
+#X text 272 197 <- this translation does not affect the circle \, because
+of the "load identity" object that resets the transformation;
+#X text 209 333 <- this object reset the gemlist sent by the gemhead.
+;
+#X text 211 457 <- move the object regarding the camera position (this
+is normally done automatically by the gemwin \, but since we have reset
+the transformation matrix we have to do it ourselves...);
+#X connect 0 0 7 0;
+#X connect 1 4 5 0;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 5 2 4 0;
+#X connect 7 0 9 0;
+#X connect 7 1 1 0;
+#X connect 8 0 23 0;
+#X connect 9 0 16 0;
+#X connect 10 4 14 0;
+#X connect 14 0 11 0;
+#X connect 14 1 12 0;
+#X connect 14 2 13 0;
+#X connect 16 0 8 0;
+#X connect 16 1 10 0;
+#X connect 17 4 21 0;
+#X connect 21 0 18 0;
+#X connect 21 1 19 0;
+#X connect 21 2 20 0;
+#X connect 23 0 28 0;
+#X connect 23 1 17 0;
+#X connect 25 0 9 1;
+#X connect 27 0 26 0;
+#X connect 28 0 35 0;
+#X connect 29 4 33 0;
+#X connect 33 0 30 0;
+#X connect 33 1 31 0;
+#X connect 33 2 32 0;
+#X connect 35 0 24 0;
+#X connect 35 1 29 0;