Files Classes Functions Hierarchy
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
1.5.8