236 |
|
|
237 |
|
|
238 |
template<class T> void render(const T &coords) const { |
template<class T> void render(const T &coords) const { |
239 |
GLERR |
GLERR; |
240 |
|
|
241 |
using namespace PaperPriv; |
using namespace PaperPriv; |
242 |
Verts verts(coords); |
Verts verts(coords); |
280 |
verts.startT2V3Operation(); |
verts.startT2V3Operation(); |
281 |
|
|
282 |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
283 |
GLERR |
GLERR; |
284 |
(*it).setUp_VP(&lightParam); |
(*it).setUp_VP(&lightParam); |
285 |
triangler.draw(); |
triangler.draw(); |
286 |
(*it).tearDown_VP(); |
(*it).tearDown_VP(); |
291 |
// Only vertex position comes from here |
// Only vertex position comes from here |
292 |
verts.startV3Operation(); |
verts.startV3Operation(); |
293 |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
294 |
GLERR |
GLERR; |
295 |
(*it).setUp_explicit(&lightParam); |
(*it).setUp_explicit(&lightParam); |
296 |
|
|
297 |
glBegin(GL_TRIANGLES); |
glBegin(GL_TRIANGLES); |
316 |
|
|
317 |
} |
} |
318 |
|
|
319 |
GLERR |
GLERR; |
320 |
|
|
321 |
|
|
322 |
} |
} |
353 |
// object -> paper/window |
// object -> paper/window |
354 |
const Transform &coords2inv = coords2.getInverse(); |
const Transform &coords2inv = coords2.getInverse(); |
355 |
|
|
356 |
GLERR |
GLERR; |
357 |
|
|
358 |
|
|
359 |
ZPt paperorigin, paperx, papery; |
ZPt paperorigin, paperx, papery; |
394 |
y1 << " " << |
y1 << " " << |
395 |
"\\n" |
"\\n" |
396 |
; |
; |
397 |
GLERR |
GLERR; |
398 |
|
|
399 |
|
|
400 |
int dice; |
int dice; |
482 |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
483 |
|
|
484 |
DBG(dbg_paperquad) << "Pass\\n"; |
DBG(dbg_paperquad) << "Pass\\n"; |
485 |
GLERR |
GLERR; |
486 |
(*it).setUp_VP(&lightParam); |
(*it).setUp_VP(&lightParam); |
487 |
|
|
488 |
DBG(dbg_paperquad) << "Going to multidraw\\n"; |
DBG(dbg_paperquad) << "Going to multidraw\\n"; |
489 |
GLERR |
GLERR; |
490 |
glMultiDrawElementsEXT(GL_QUAD_STRIP, counts, |
glMultiDrawElementsEXT(GL_QUAD_STRIP, counts, |
491 |
GL_UNSIGNED_INT, (const GLvoid **)indps, dice-1); |
GL_UNSIGNED_INT, (const GLvoid **)indps, dice-1); |
492 |
DBG(dbg_paperquad) << "Teardown\\n"; |
DBG(dbg_paperquad) << "Teardown\\n"; |
493 |
GLERR |
GLERR; |
494 |
(*it).tearDown_VP(); |
(*it).tearDown_VP(); |
495 |
|
|
496 |
GLERR |
GLERR; |
497 |
DBG(dbg_paperquad) << "Pass over\\n"; |
DBG(dbg_paperquad) << "Pass over\\n"; |
498 |
|
|
499 |
} |
} |
503 |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
504 |
|
|
505 |
DBG(dbg_paperquad) << "Pass\\n"; |
DBG(dbg_paperquad) << "Pass\\n"; |
506 |
GLERR |
GLERR; |
507 |
(*it).setUp_explicit(&lightParam); |
(*it).setUp_explicit(&lightParam); |
508 |
|
|
509 |
DBG(dbg_paperquad) << "Going to set texcoords explicit\\n"; |
DBG(dbg_paperquad) << "Going to set texcoords explicit\\n"; |
510 |
GLERR |
GLERR; |
511 |
|
|
512 |
|
|
513 |
for(int ix = 0; ix<dice-1; ix++) { |
for(int ix = 0; ix<dice-1; ix++) { |
532 |
|
|
533 |
|
|
534 |
DBG(dbg_paperquad) << "Teardown\\n"; |
DBG(dbg_paperquad) << "Teardown\\n"; |
535 |
GLERR |
GLERR; |
536 |
(*it).tearDown_explicit(); |
(*it).tearDown_explicit(); |
537 |
|
|
538 |
GLERR |
GLERR; |
539 |
DBG(dbg_paperquad) << "Pass over\\n"; |
DBG(dbg_paperquad) << "Pass over\\n"; |
540 |
} |
} |
541 |
} |
} |
542 |
|
|
543 |
DBG(dbg_paperquad) << "Passes over\\n"; |
DBG(dbg_paperquad) << "Passes over\\n"; |
544 |
|
|
545 |
GLERR |
GLERR; |
546 |
|
|
547 |
delete [] vertices; |
delete [] vertices; |
548 |
delete [] indices; |
delete [] indices; |
579 |
template<class T> void render(const T &coords1, const T &coords2) const { |
template<class T> void render(const T &coords1, const T &coords2) const { |
580 |
const int flags = this->flags; |
const int flags = this->flags; |
581 |
|
|
582 |
GLERR |
GLERR; |
583 |
|
|
584 |
Paper::LightParam lightParam; |
Paper::LightParam lightParam; |
585 |
|
|
599 |
lightParam.e2 << " " << |
lightParam.e2 << " " << |
600 |
"\\n" |
"\\n" |
601 |
; |
; |
602 |
GLERR |
GLERR; |
603 |
|
|
604 |
|
|
605 |
int dice; |
int dice; |
684 |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
685 |
|
|
686 |
DBG(dbg_paperquad) << "Pass\\n"; |
DBG(dbg_paperquad) << "Pass\\n"; |
687 |
GLERR |
GLERR; |
688 |
(*it).setUp_VP(&lightParam); |
(*it).setUp_VP(&lightParam); |
689 |
|
|
690 |
DBG(dbg_paperquad) << "Going to multidraw\\n"; |
DBG(dbg_paperquad) << "Going to multidraw\\n"; |
691 |
GLERR |
GLERR; |
692 |
glMultiDrawElementsEXT(GL_QUAD_STRIP, counts, |
glMultiDrawElementsEXT(GL_QUAD_STRIP, counts, |
693 |
GL_UNSIGNED_INT, (const GLvoid **)indps, dice-1); |
GL_UNSIGNED_INT, (const GLvoid **)indps, dice-1); |
694 |
DBG(dbg_paperquad) << "Teardown\\n"; |
DBG(dbg_paperquad) << "Teardown\\n"; |
695 |
GLERR |
GLERR; |
696 |
(*it).tearDown_VP(); |
(*it).tearDown_VP(); |
697 |
|
|
698 |
GLERR |
GLERR; |
699 |
DBG(dbg_paperquad) << "Pass over\\n"; |
DBG(dbg_paperquad) << "Pass over\\n"; |
700 |
|
|
701 |
} |
} |
705 |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
for(Paper::Paper::iterator it = paper->begin(); it != paper->end(); ++it) { |
706 |
|
|
707 |
DBG(dbg_paperquad) << "Pass\\n"; |
DBG(dbg_paperquad) << "Pass\\n"; |
708 |
GLERR |
GLERR; |
709 |
(*it).setUp_explicit(&lightParam); |
(*it).setUp_explicit(&lightParam); |
710 |
|
|
711 |
DBG(dbg_paperquad) << "Going to set texcoords explicit\\n"; |
DBG(dbg_paperquad) << "Going to set texcoords explicit\\n"; |
712 |
GLERR |
GLERR; |
713 |
|
|
714 |
|
|
715 |
for(int ix = 0; ix<dice-1; ix++) { |
for(int ix = 0; ix<dice-1; ix++) { |
734 |
|
|
735 |
|
|
736 |
DBG(dbg_paperquad) << "Teardown\\n"; |
DBG(dbg_paperquad) << "Teardown\\n"; |
737 |
GLERR |
GLERR; |
738 |
(*it).tearDown_explicit(); |
(*it).tearDown_explicit(); |
739 |
|
|
740 |
GLERR |
GLERR; |
741 |
DBG(dbg_paperquad) << "Pass over\\n"; |
DBG(dbg_paperquad) << "Pass over\\n"; |
742 |
} |
} |
743 |
} |
} |
744 |
|
|
745 |
DBG(dbg_paperquad) << "Passes over\\n"; |
DBG(dbg_paperquad) << "Passes over\\n"; |
746 |
|
|
747 |
GLERR |
GLERR; |
748 |
|
|
749 |
delete [] vertices; |
delete [] vertices; |
750 |
delete [] indices; |
delete [] indices; |
760 |
|
|
761 |
|
|
762 |
|
|
763 |
|
/** A vob that's useful for demoing papers. |
764 |
|
* Not for real use. |
765 |
|
* Doesn't set up paper properly. |
766 |
|
* Should probably be done mostly in .py code. |
767 |
|
*/ |
768 |
class BasisPaperQuad { |
class BasisPaperQuad { |
769 |
public: |
public: |
770 |
enum { NTrans = 2 }; |
enum { NTrans = 2 }; |