Changeset 9969
- Timestamp:
- 03/25/09 12:17:21 (4 years ago)
- Location:
- OpenSceneGraph/trunk
- Files:
-
- 4 modified
-
include/osg/PrimitiveSet (modified) (4 diffs)
-
src/osgPlugins/ffmpeg/FFmpegDecoder.cpp (modified) (1 diff)
-
src/osgTerrain/GeometryTechnique.cpp (modified) (11 diffs)
-
src/osgWrappers/osg/PrimitiveSet.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/include/osg/PrimitiveSet
r9599 r9969 450 450 if (_ebo.valid()) _ebo->releaseGLObjects(state); 451 451 } 452 453 454 virtual void reserveElements(unsigned int numIndices) = 0; 455 virtual void setElement(unsigned int, unsigned int) = 0; 456 virtual unsigned int getElement(unsigned int) = 0; 457 virtual void addElement(unsigned int) = 0; 452 458 453 459 protected: … … 527 533 } 528 534 535 virtual void reserveElements(unsigned int numIndices) { reserve(numIndices); } 536 virtual void setElement(unsigned int i, unsigned int v) { (*this)[i] = v; } 537 virtual unsigned int getElement(unsigned int i) { return (*this)[i]; } 538 virtual void addElement(unsigned int v) { push_back(GLubyte(v)); } 539 529 540 protected: 530 541 … … 602 613 } 603 614 615 virtual void reserveElements(unsigned int numIndices) { reserve(numIndices); } 616 virtual void setElement(unsigned int i, unsigned int v) { (*this)[i] = v; } 617 virtual unsigned int getElement(unsigned int i) { return (*this)[i]; } 618 virtual void addElement(unsigned int v) { push_back(GLushort(v)); } 619 604 620 protected: 605 621 … … 677 693 } 678 694 695 virtual void reserveElements(unsigned int numIndices) { reserve(numIndices); } 696 virtual void setElement(unsigned int i, unsigned int v) { (*this)[i] = v; } 697 virtual unsigned int getElement(unsigned int i) { return (*this)[i]; } 698 virtual void addElement(unsigned int v) { push_back(GLuint(v)); } 699 679 700 protected: 680 701 -
OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/FFmpegDecoder.cpp
r9869 r9969 55 55 formatParams.channel = 0; 56 56 formatParams.standard = 0; 57 #if 1 57 58 formatParams.width = 640; 58 59 formatParams.height = 480; 60 #else 61 formatParams.width = 640; 62 formatParams.height = 480; 63 #endif 59 64 formatParams.time_base.num = 1; 60 formatParams.time_base.den = 50;65 formatParams.time_base.den = 15; 61 66 62 67 iformat = av_find_input_format("video4linux2"); -
OpenSceneGraph/trunk/src/osgTerrain/GeometryTechnique.cpp
r9388 r9969 417 417 // bool optimizeOrientations = elevations!=0; 418 418 bool swapOrientation = !(masterLocator->orientationOpenGL()); 419 420 osg::ref_ptr<osg::DrawElementsUInt> elements = new osg::DrawElementsUInt(GL_TRIANGLES); 421 elements->reserve((numRows-1) * (numColumns-1) * 6); 419 420 bool smallTile = numVertices <= 16384; 421 422 // osg::notify(osg::NOTICE)<<"smallTile = "<<smallTile<<std::endl; 423 424 osg::ref_ptr<osg::DrawElements> elements = smallTile ? 425 static_cast<osg::DrawElements*>(new osg::DrawElementsUShort(GL_TRIANGLES)) : 426 static_cast<osg::DrawElements*>(new osg::DrawElementsUInt(GL_TRIANGLES)); 427 428 elements->reserveElements((numRows-1) * (numColumns-1) * 6); 422 429 423 430 geometry->addPrimitiveSet(elements.get()); … … 464 471 if (fabsf(e00-e11)<fabsf(e01-e10)) 465 472 { 466 elements-> push_back(i01);467 elements-> push_back(i00);468 elements-> push_back(i11);469 470 elements-> push_back(i00);471 elements-> push_back(i10);472 elements-> push_back(i11);473 elements->addElement(i01); 474 elements->addElement(i00); 475 elements->addElement(i11); 476 477 elements->addElement(i00); 478 elements->addElement(i10); 479 elements->addElement(i11); 473 480 } 474 481 else 475 482 { 476 elements-> push_back(i01);477 elements-> push_back(i00);478 elements-> push_back(i10);479 480 elements-> push_back(i01);481 elements-> push_back(i10);482 elements-> push_back(i11);483 elements->addElement(i01); 484 elements->addElement(i00); 485 elements->addElement(i10); 486 487 elements->addElement(i01); 488 elements->addElement(i10); 489 elements->addElement(i11); 483 490 } 484 491 } 485 492 else if (numValid==3) 486 493 { 487 if (i00>=0) elements-> push_back(i00);488 if (i01>=0) elements-> push_back(i01);489 if (i11>=0) elements-> push_back(i11);490 if (i10>=0) elements-> push_back(i10);494 if (i00>=0) elements->addElement(i00); 495 if (i01>=0) elements->addElement(i01); 496 if (i11>=0) elements->addElement(i11); 497 if (i10>=0) elements->addElement(i10); 491 498 } 492 499 … … 507 514 if (createSkirt) 508 515 { 509 osg::ref_ptr<osg::DrawElementsUShort> skirtDrawElements = new osg::DrawElementsUShort(GL_QUAD_STRIP); 516 osg::ref_ptr<osg::DrawElements> skirtDrawElements = smallTile ? 517 static_cast<osg::DrawElements*>(new osg::DrawElementsUShort(GL_QUAD_STRIP)) : 518 static_cast<osg::DrawElements*>(new osg::DrawElementsUInt(GL_QUAD_STRIP)); 510 519 511 520 // create bottom skirt vertices … … 529 538 } 530 539 531 skirtDrawElements-> push_back(orig_i);532 skirtDrawElements-> push_back(new_i);540 skirtDrawElements->addElement(orig_i); 541 skirtDrawElements->addElement(new_i); 533 542 } 534 543 else 535 544 { 536 if ( !skirtDrawElements->empty())545 if (skirtDrawElements->getNumIndices()!=0) 537 546 { 538 547 geometry->addPrimitiveSet(skirtDrawElements.get()); 539 skirtDrawElements = new osg::DrawElementsUShort(GL_QUAD_STRIP); 548 skirtDrawElements = smallTile ? 549 static_cast<osg::DrawElements*>(new osg::DrawElementsUShort(GL_QUAD_STRIP)) : 550 static_cast<osg::DrawElements*>(new osg::DrawElementsUInt(GL_QUAD_STRIP)); 540 551 } 541 552 … … 543 554 } 544 555 545 if ( !skirtDrawElements->empty())556 if (skirtDrawElements->getNumIndices()!=0) 546 557 { 547 558 geometry->addPrimitiveSet(skirtDrawElements.get()); 548 skirtDrawElements = new osg::DrawElementsUShort(GL_QUAD_STRIP); 559 skirtDrawElements = smallTile ? 560 static_cast<osg::DrawElements*>(new osg::DrawElementsUShort(GL_QUAD_STRIP)) : 561 static_cast<osg::DrawElements*>(new osg::DrawElementsUInt(GL_QUAD_STRIP)); 549 562 } 550 563 … … 567 580 } 568 581 569 skirtDrawElements-> push_back(orig_i);570 skirtDrawElements-> push_back(new_i);582 skirtDrawElements->addElement(orig_i); 583 skirtDrawElements->addElement(new_i); 571 584 } 572 585 else 573 586 { 574 if ( !skirtDrawElements->empty())587 if (skirtDrawElements->getNumIndices()!=0) 575 588 { 576 589 geometry->addPrimitiveSet(skirtDrawElements.get()); 577 skirtDrawElements = new osg::DrawElementsUShort(GL_QUAD_STRIP); 590 skirtDrawElements = smallTile ? 591 static_cast<osg::DrawElements*>(new osg::DrawElementsUShort(GL_QUAD_STRIP)) : 592 static_cast<osg::DrawElements*>(new osg::DrawElementsUInt(GL_QUAD_STRIP)); 578 593 } 579 594 … … 581 596 } 582 597 583 if ( !skirtDrawElements->empty())598 if (skirtDrawElements->getNumIndices()!=0) 584 599 { 585 600 geometry->addPrimitiveSet(skirtDrawElements.get()); 586 skirtDrawElements = new osg::DrawElementsUShort(GL_QUAD_STRIP); 601 skirtDrawElements = smallTile ? 602 static_cast<osg::DrawElements*>(new osg::DrawElementsUShort(GL_QUAD_STRIP)) : 603 static_cast<osg::DrawElements*>(new osg::DrawElementsUInt(GL_QUAD_STRIP)); 587 604 } 588 605 … … 605 622 } 606 623 607 skirtDrawElements-> push_back(orig_i);608 skirtDrawElements-> push_back(new_i);624 skirtDrawElements->addElement(orig_i); 625 skirtDrawElements->addElement(new_i); 609 626 } 610 627 else 611 628 { 612 if ( !skirtDrawElements->empty())629 if (skirtDrawElements->getNumIndices()!=0) 613 630 { 614 631 geometry->addPrimitiveSet(skirtDrawElements.get()); 615 skirtDrawElements = new osg::DrawElementsUShort(GL_QUAD_STRIP); 632 skirtDrawElements = smallTile ? 633 static_cast<osg::DrawElements*>(new osg::DrawElementsUShort(GL_QUAD_STRIP)) : 634 static_cast<osg::DrawElements*>(new osg::DrawElementsUInt(GL_QUAD_STRIP)); 616 635 } 617 636 … … 619 638 } 620 639 621 if ( !skirtDrawElements->empty())640 if (skirtDrawElements->getNumIndices()!=0) 622 641 { 623 642 geometry->addPrimitiveSet(skirtDrawElements.get()); 624 skirtDrawElements = new osg::DrawElementsUShort(GL_QUAD_STRIP); 643 skirtDrawElements = smallTile ? 644 static_cast<osg::DrawElements*>(new osg::DrawElementsUShort(GL_QUAD_STRIP)) : 645 static_cast<osg::DrawElements*>(new osg::DrawElementsUInt(GL_QUAD_STRIP)); 625 646 } 626 647 … … 643 664 } 644 665 645 skirtDrawElements-> push_back(orig_i);646 skirtDrawElements-> push_back(new_i);666 skirtDrawElements->addElement(orig_i); 667 skirtDrawElements->addElement(new_i); 647 668 } 648 669 else 649 670 { 650 if ( !skirtDrawElements->empty())671 if (skirtDrawElements->getNumIndices()!=0) 651 672 { 652 673 geometry->addPrimitiveSet(skirtDrawElements.get()); … … 657 678 } 658 679 659 if ( !skirtDrawElements->empty())680 if (skirtDrawElements->getNumIndices()!=0) 660 681 { 661 682 geometry->addPrimitiveSet(skirtDrawElements.get()); 662 skirtDrawElements = new osg::DrawElementsUShort(GL_QUAD_STRIP); 683 smallTile ? 684 static_cast<osg::DrawElements*>(new osg::DrawElementsUShort(GL_QUAD_STRIP)) : 685 static_cast<osg::DrawElements*>(new osg::DrawElementsUInt(GL_QUAD_STRIP)); 663 686 } 664 687 } -
OpenSceneGraph/trunk/src/osgWrappers/osg/PrimitiveSet.cpp
r9775 r9969 198 198 "If State is non-zero, this function releases OpenGL objects for the specified graphics context. ", 199 199 "Otherwise, releases OpenGL objects for all graphics contexts. "); 200 I_Method1(void, reserveElements, IN, unsigned int, numIndices, 201 Properties::PURE_VIRTUAL, 202 __void__reserveElements__unsigned_int, 203 "", 204 ""); 205 I_Method2(void, setElement, IN, unsigned, int, IN, unsigned, int, 206 Properties::PURE_VIRTUAL, 207 __void__setElement__unsigned__unsigned, 208 "", 209 ""); 210 I_Method1(unsigned int, getElement, IN, unsigned, int, 211 Properties::PURE_VIRTUAL, 212 __unsigned_int__getElement__unsigned, 213 "", 214 ""); 215 I_Method1(void, addElement, IN, unsigned, int, 216 Properties::PURE_VIRTUAL, 217 __void__addElement__unsigned, 218 "", 219 ""); 200 220 I_SimpleProperty(osg::DrawElements *, DrawElements, 201 221 __DrawElements_P1__getDrawElements,
