proj home

Files   Classes   Functions   Hierarchy  

graphicsImmediateDeferredTest.cpp

Go to the documentation of this file.
00001 
00002 #include <graphicsImmediateDeferredTest.h>
00003 #include <graphmisc.h>
00004 #include <menusystem.h>
00005 #include <print.h>
00006 
00007 // TODO -get the graphics window dimensions
00008 
00009 
00010 void graphicsImmediateDeferredTestTri::addshape01
00011 (
00012   gobjContainer & shp 
00013 )
00014 {
00015   shp.push(new gobjglColor3ub(shapecolor));
00016 
00017   shp.push(new gobjglBegin(GL_TRIANGLES));
00018   shp.push(new gobjglVertex2f(-0.5,0));
00019   shp.push(new gobjglVertex2f(0.5,0));
00020   shp.push(new gobjglVertex2f(0.0,.7));
00021   shp.push(new gobjglEnd());
00022 }
00023 
00024 
00025 
00026 void graphicsImmediateDeferredTestTri::addshape02()
00027 {
00028   gobjContainer* shp = new gobjContainer(true);
00029   
00030   shp->push(new gobjglColor3ub(shapecolor));
00031 
00032   shp->push(new gobjglBegin(GL_TRIANGLES));
00033   shp->push(new gobjglVertex2f(-0.5,0));
00034   shp->push(new gobjglVertex2f(0.5,0));
00035   shp->push(new gobjglVertex2f(0.0,.7));
00036   shp->push(new gobjglEnd());
00037 
00038   gobjpush(shp);
00039 }
00040 
00041 
00042 void graphicsImmediateDeferredTestTri::graphicscreate01()
00043 {
00044   assert(graphics==0);
00045   gobjContainer* g = new gobjContainer(true);
00046 
00047   addshape01(*g);
00048 
00049   graphics=g;
00050 }
00051 
00052 
00053 void graphicsImmediateDeferredTestg02::draw()
00054 {
00055 /*
00056   gobjContainer * px = new gobjContainer(true);
00057 
00058   ref.addshape01(*px);
00059 
00060   gobjpush(px);
00061 */
00062   ref.addshape02();
00063 }
00064 
00065 
00066 void graphicsImmediateDeferredTestTri::graphicscreate02()
00067 {
00068   g02 = new graphicsImmediateDeferred();
00069 
00070   g02->graphicsDeferred.push( new graphicsImmediateDeferredTestg02(*this) );
00071   g02->update();
00072 
00073   graphics=g02;
00074 }
00075 
00076 
00077 void graphicsImmediateDeferredTestTri::graphicscreate03()
00078 {
00079   g02 = new graphicsImmediateDeferred();
00080 
00081 cout << SHOW(gobj::global) << endl;
00082   g02->graphicsDeferred.globalpush();
00083 
00084 cout << "graphicscreate03" << endl;
00085 cout << "DEMO to show that this way does not work" << endl;
00086 
00087 cout << SHOW(g02->graphicsDeferred.vg.size()) << endl;
00088   gobjpush(new gobjglColor3ub(shapecolor));
00089   gobjpush(new gobjglBegin(GL_TRIANGLES));
00090   gobjpush(new gobjglVertex2f(-0.5,0));
00091   gobjpush(new gobjglVertex2f(0.5,0));
00092   gobjpush(new gobjglVertex2f(0.0,.7));
00093   gobjpush(new gobjglEnd());
00094 cout << SHOW(g02->graphicsDeferred.vg.size()) << endl;
00095 
00096 cout << SHOW(gobj::global) << endl;
00097   g02->graphicsDeferred.globalpop();
00098 cout << SHOW(gobj::global) << endl;
00099   g02->update();
00100   graphics=g02;
00101 }
00102 
00103 
00104 void graphicsImmediateDeferredTestTri::graphicscreate04()
00105 {
00106   // Build the usual shape graphics.
00107 
00108   g04 = new graphicsImmediateDeferredSwitch();
00109 
00110   g04->pushdeferred(g04switch,new graphicsImmediateDeferredTestg02(*this));
00111 
00112   //g04->push(g04switch,this);  //??? THIS FAILS  - is not a callback for
00113   //writing geometry.
00114  
00115 cout << SHOW(g04switch) << endl;
00116   graphics=g04;
00117   g04->update();
00118   //graphics=g04;
00119 }
00120 
00121 
00122 void graphicsImmediateDeferredTestTri::graphicscreate05()
00123 {
00124   // Build the usual shape graphics.
00125 
00126   g04 = new graphicsImmediateDeferredSwitch();
00127 
00128   g04->pushdeferred(g04switch,*this,&graphicsImmediateDeferredTestTri::addshape02);
00129 
00130   graphics=g04;
00131   g04->update();
00132 }
00133 
00134 
00135 void graphicsImmediateDeferredTestTri::graphicscreate06()
00136 {
00137   // Build the usual shape graphics.
00138 
00139   g04 = new graphicsImmediateDeferredSwitch();
00140 
00141   g04->pushdeferred(g04switch,*this,&graphicsImmediateDeferredTestTri::addshape01);
00142 
00143   graphics=g04;
00144   g04->update();
00145 }
00146 
00147 void graphicsImmediateDeferredTestTri::graphicscreate07()
00148 {
00149   g02 = new graphicsImmediateDeferred();
00150 
00151   g02->graphicsDeferred.pushcallback(*this,&graphicsImmediateDeferredTestTri::addshape02 );
00152   g02->update();
00153 
00154   graphics=g02;
00155 }
00156 
00157 
00158 
00159 
00160 
00161 void graphicsImmediateDeferredTestTri::draw()
00162 {
00163   assert(graphics!=0);
00164 
00165   graphics->draw();
00166 }
00167 
00168 
00169 string graphicsImmediateDeferredTest::doc[] = 
00170 {  
00171   "",
00172   "Test opengl rendering",
00173   "Use ImmediateDefered callback display.",
00174   "Show code that does not work with ImmediateDeferred.",
00175   "Add a switch to test02",
00176   "Functional object with () callback.",
00177   "Functional object with (gobjContainer&) callback.",
00178   ""
00179 };
00180 
00181 graphicsImmediateDeferredTestTri* graphicsImmediateDeferredTest::model=0;
00182 
00183 void graphicsImmediateDeferredTest::keyboard01
00184 (
00185   unsigned char key, 
00186   int x, 
00187   int y
00188 )
00189 {
00190   switch (key)
00191   {
00192     case 27: exit(0); break;
00193 
00194     case 'j': assert(model); model->circledraw.center.x -= model->circledelta; break;
00195     case 'k': assert(model); model->circledraw.center.x += model->circledelta; break;
00196 
00197     case '1': 
00198       assert(model); 
00199       if (model->g02)
00200       {
00201         model->shapecolor.x = rand() % 256; 
00202         model->shapecolor.y = rand() % 256; 
00203         model->shapecolor.z = rand() % 256; 
00204         model->g02->update();
00205       }
00206       break;
00207 
00208     case '2': 
00209       assert(model); 
00210       if (model->g04)
00211       {
00212 
00213         model->shapecolor.x = rand() % 256; 
00214         model->shapecolor.y = rand() % 256; 
00215         model->shapecolor.z = rand() % 256; 
00216         model->g04->toggle(0);
00217         model->g04->update();
00218       }
00219       break;
00220   }
00221 
00222   glutPostRedisplay();
00223 }
00224 
00225 
00226 void graphicsImmediateDeferredTest::display01()
00227 { 
00228   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
00229 
00230   gobj::global->draw();
00231 
00232   if (graphicsImmediateDeferredTest::model)
00233   {
00234     graphicsImmediateDeferredTest::model->circlecolor.draw();
00235     graphicsImmediateDeferredTest::model->circledraw.draw();
00236   }
00237 
00238   glerrordisplay();
00239   
00240   glutSwapBuffers();
00241 }
00242 
00243 void graphicsImmediateDeferredTest::test01(int argc, char** argv)
00244 {
00245   glutInit(&argc,argv);
00246   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
00247   glutInitWindowSize(600,600);
00248   glutCreateWindow("");
00249   glutDisplayFunc(display01);
00250   glutKeyboardFunc(keyboard01);
00251 
00252   OpenGLinitialisation();
00253 
00254   glEnable(GL_DEPTH_TEST);
00255   glEnable(GL_CULL_FACE);
00256   glEnable(GL_NORMALIZE);
00257 
00258   xGraphics.set();
00259 
00260   gobjpush(new myaxes(1.0));
00261 
00262   graphicsImmediateDeferredTestTri* g1 = new graphicsImmediateDeferredTestTri();
00263   g1->graphicscreate01();
00264   gobjpush(g1);
00265 
00266   glutMainLoop();
00267 }
00268 
00269 void graphicsImmediateDeferredTest::test02(int argc, char** argv)
00270 {
00271   glutInit(&argc,argv);
00272   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
00273   glutInitWindowSize(600,600);
00274   glutCreateWindow("");
00275   glutDisplayFunc(display01);
00276   glutKeyboardFunc(keyboard01);
00277 
00278   OpenGLinitialisation();
00279 
00280   glEnable(GL_DEPTH_TEST);
00281   glEnable(GL_CULL_FACE);
00282   glEnable(GL_NORMALIZE);
00283 
00284   xGraphics.set();
00285 
00286   gobjpush(new myaxes(1.0));
00287 
00288   graphicsImmediateDeferredTestTri* g1 = new graphicsImmediateDeferredTestTri();
00289   g1->graphicscreate02();
00290   gobjpush(g1);
00291 
00292   menu01();
00293 
00294   glutMainLoop();
00295 }
00296 
00297 void graphicsImmediateDeferredTest::test03(int argc, char** argv)
00298 {
00299   glutInit(&argc,argv);
00300   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
00301   glutInitWindowSize(600,600);
00302   glutCreateWindow("");
00303   glutDisplayFunc(display01);
00304   glutKeyboardFunc(keyboard01);
00305 
00306   OpenGLinitialisation();
00307 
00308   glEnable(GL_DEPTH_TEST);
00309   glEnable(GL_CULL_FACE);
00310   glEnable(GL_NORMALIZE);
00311 
00312   xGraphics.set();
00313 
00314   gobjpush(new myaxes(1.0));
00315 
00316   graphicsImmediateDeferredTestTri* g1 = new graphicsImmediateDeferredTestTri();
00317   g1->graphicscreate03();
00318   gobjpush(g1);
00319 
00320   glutMainLoop();
00321 }
00322 
00323 void graphicsImmediateDeferredTest::test07(int argc, char** argv)
00324 {
00325   glutInit(&argc,argv);
00326   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
00327   glutInitWindowSize(600,600);
00328   glutCreateWindow("");
00329   glutDisplayFunc(display01);
00330   glutKeyboardFunc(keyboard01);
00331 
00332   OpenGLinitialisation();
00333 
00334   glEnable(GL_DEPTH_TEST);
00335   glEnable(GL_CULL_FACE);
00336   glEnable(GL_NORMALIZE);
00337 
00338   xGraphics.set();
00339 
00340   gobjpush(new myaxes(1.0));
00341 
00342   graphicsImmediateDeferredTestTri* g1 = new graphicsImmediateDeferredTestTri();
00343   g1->graphicscreate07();
00344   gobjpush(g1);
00345 
00346   glutMainLoop();
00347 }
00348 
00349 
00350 void graphicsImmediateDeferredTest::test04(int argc, char** argv)
00351 {
00352   glutInit(&argc,argv);
00353   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
00354   glutInitWindowSize(600,600);
00355   glutCreateWindow("");
00356   glutDisplayFunc(display01);
00357   glutKeyboardFunc(keyboard01);
00358 
00359   OpenGLinitialisation();
00360 
00361   glEnable(GL_DEPTH_TEST);
00362   glEnable(GL_CULL_FACE);
00363   glEnable(GL_NORMALIZE);
00364 
00365   xGraphics.set();
00366 
00367   gobjpush(new myaxes(1.0));
00368 
00369   graphicsImmediateDeferredTestTri* g1 = new graphicsImmediateDeferredTestTri();
00370   g1->graphicscreate04();
00371   gobjpush(g1);
00372 
00373   menu02();
00374 
00375   glutMainLoop();
00376 }
00377 
00378 void graphicsImmediateDeferredTest::test05(int argc, char** argv)
00379 {
00380   glutInit(&argc,argv);
00381   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
00382   glutInitWindowSize(600,600);
00383   glutCreateWindow("");
00384   glutDisplayFunc(display01);
00385   glutKeyboardFunc(keyboard01);
00386 
00387   OpenGLinitialisation();
00388 
00389   glEnable(GL_DEPTH_TEST);
00390   glEnable(GL_CULL_FACE);
00391   glEnable(GL_NORMALIZE);
00392 
00393   xGraphics.set();
00394 
00395   gobjpush(new myaxes(1.0));
00396 
00397   graphicsImmediateDeferredTestTri* g1 = new graphicsImmediateDeferredTestTri();
00398   g1->graphicscreate05();
00399   gobjpush(g1);
00400 
00401   menu02();
00402 
00403   glutMainLoop();
00404 }
00405 
00406 void graphicsImmediateDeferredTest::test06(int argc, char** argv)
00407 {
00408   glutInit(&argc,argv);
00409   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
00410   glutInitWindowSize(600,600);
00411   glutCreateWindow("");
00412   glutDisplayFunc(display01);
00413   glutKeyboardFunc(keyboard01);
00414 
00415   OpenGLinitialisation();
00416 
00417   glEnable(GL_DEPTH_TEST);
00418   glEnable(GL_CULL_FACE);
00419   glEnable(GL_NORMALIZE);
00420 
00421   xGraphics.set();
00422 
00423   gobjpush(new myaxes(1.0));
00424 
00425   graphicsImmediateDeferredTestTri* g1 = new graphicsImmediateDeferredTestTri();
00426   g1->graphicscreate06();
00427   gobjpush(g1);
00428 
00429   menu02();
00430 
00431   glutMainLoop();
00432 }
00433 
00434 void graphicsImmediateDeferredTest::menu01()
00435 {
00436   gobjpush(new gobjglDisable(GL_LIGHTING));
00437   menusystem * menu = 
00438     new menusystem(point2<GLint>(60,30),10);
00439   menu->fontcolor = point4<float>(218.0/255.0,165.0/255.0,32.0/255.0,0.75);
00440 
00441   menu->addfont10("[1]   Update shape",1);
00442   menu->addfont10("[j,k]  Move circle left,right",2);
00443   menu->addfont10("[ESC]  Quit",1);
00444 
00445   gobjpush(menu);
00446 }
00447 
00448 void graphicsImmediateDeferredTest::menu02()
00449 {
00450   gobjpush(new gobjglDisable(GL_LIGHTING));
00451   menusystem * menu = 
00452     new menusystem(point2<GLint>(60,30),10);
00453   menu->fontcolor = point4<float>(218.0/255.0,165.0/255.0,32.0/255.0,0.75);
00454 
00455   menu->addfont10("[2]   Update and Toggle shape",1);
00456   menu->addfont10("[j,k]  Move circle left,right",2);
00457   menu->addfont10("[ESC]  Quit",1);
00458 
00459   gobjpush(menu);
00460 }
00461 
00462 
00463 
00464 
00465 
00466 
00467 
00468 

Generated on Fri Mar 4 00:49:27 2011 for Chelton Evans Source by  doxygen 1.5.8