Changeset 313 for experimental/distortionNG/distortionNG.cpp
- Timestamp:
- Sep 4, 2011, 11:24:46 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
experimental/distortionNG/distortionNG.cpp
r310 r313 1 1 #include "distortionNG.h" 2 2 3 #include<osg/Texture2D>4 3 #include<osg/Point> 5 #include<osg/ComputeBoundsVisitor> 4 6 5 7 6 #include<osgViewer/Viewer> 8 9 #include<osgDB/ReadFile>10 11 #include <osgUtil/SmoothingVisitor>12 7 13 8 … … 21 16 } 22 17 23 osg::Geometry* distortionNG::createMesh( unsigned int column, unsigned int row )24 {25 osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(column * row);26 osg::ref_ptr<osg::Vec2Array> texcoords = new osg::Vec2Array(column * row);27 for ( unsigned int i=0; i<row; ++i )28 {29 for ( unsigned int j=0; j<column; ++j )30 {31 (*vertices)[i*column + j].set( (float)i, (float)j, 0.0f );32 (*texcoords)[i*column + j].set( (float)i/(float)row, (float)j/(float)column );33 }34 }35 18 36 osg::ref_ptr<osg::Geometry> geom = new osg::Geometry;37 geom->setUseDisplayList( false );38 geom->setUseVertexBufferObjects( true );39 geom->setVertexArray( vertices.get() );40 geom->setTexCoordArray( 0, texcoords.get() );41 for ( unsigned int i=0; i<row-1; ++i )42 {43 osg::ref_ptr<osg::DrawElementsUInt> de = new osg::DrawElementsUInt(GL_QUAD_STRIP, column*2);44 for ( unsigned int j=0; j<column; ++j )45 {46 (*de)[j*2 + 0] = i*column + j;47 (*de)[j*2 + 1] = (i+1)*column + j;48 }49 geom->addPrimitiveSet( de.get() );50 }51 52 53 54 osg::ComputeBoundsVisitor cbv;55 cbv.applyDrawable(geom);56 osg::BoundingBox box = cbv.getBoundingBox();57 if (!box.valid())58 std::cout << "Invalid bounding box!";59 geom->setInitialBound(box);60 61 osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D;62 texture->setImage( osgDB::readImageFile("Images/osg256.png") );63 texture->setFilter( osg::Texture2D::MIN_FILTER, osg::Texture2D::LINEAR_MIPMAP_LINEAR );64 texture->setFilter( osg::Texture2D::MAG_FILTER, osg::Texture2D::LINEAR_MIPMAP_LINEAR );65 geom->getOrCreateStateSet()->setTextureAttributeAndModes( 0, texture.get() );66 67 // Create normals68 osgUtil::SmoothingVisitor::smooth( *geom );69 70 return geom.release();71 }72 19 73 20 osg::Geode* distortionHandler::createVertexHighlighter()
Note: See TracChangeset
for help on using the changeset viewer.