Ignore:
Timestamp:
Sep 4, 2011, 11:24:46 AM (13 years ago)
Author:
Torben Dannhauer
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • experimental/distortionNG/distortionNG.cpp

    r310 r313  
    11#include "distortionNG.h"
    22
    3 #include<osg/Texture2D>
    43#include<osg/Point>
    5 #include<osg/ComputeBoundsVisitor>
     4
    65
    76#include<osgViewer/Viewer>
    8 
    9 #include<osgDB/ReadFile>
    10 
    11 #include <osgUtil/SmoothingVisitor>
    127
    138
     
    2116}
    2217
    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         }
    3518
    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 normals
    68         osgUtil::SmoothingVisitor::smooth( *geom );
    69 
    70         return geom.release();
    71 }
    7219
    7320osg::Geode* distortionHandler::createVertexHighlighter()
Note: See TracChangeset for help on using the changeset viewer.