Ignore:
Timestamp:
Aug 5, 2012, 11:09:39 PM (12 years ago)
Author:
Torben Dannhauer
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • experimental/distortionNG/DistortionSet.cpp

    r398 r407  
    2727        _matrixDirty = false;
    2828
    29         _distortionMeshRows = 2;
    30         _distortionMeshColumns = 2;
    31         _distortionMesh = new osg::Vec4Array();
     29        setDistortionMeshDimensions(2, 2);
    3230       
    3331        _intensityMap = NULL;
     
    5250}
    5351
    54 void DistortionSet::setDistortionMeshDimensions(int rows, int cols)
     52void DistortionSet::setDistortionMeshDimensions(int rows, int cols, bool enforceMeshRebuild)
    5553{
    5654        _distortionMeshRows = rows;
    5755        _distortionMeshColumns = cols;
    5856
    59         if(_distortionMesh->size() != _distortionMeshRows * _distortionMeshColumns)     // If dimensions differ: discard current mesh and create a new one
     57        if(!_distortionMesh.valid() || enforceMeshRebuild || _distortionMesh->size() != _distortionMeshRows * _distortionMeshColumns)   // If dimensions differ: discard current mesh and create a new one
    6058        {
    6159                _distortionMesh = new osg::Vec4Array(_distortionMeshRows * _distortionMeshColumns);
     
    6462                        for(int col=0;col<_distortionMeshColumns;col++)
    6563                        {
    66                                 float x=col/_distortionMeshColumns;     // Vertex X
    67                                 float y=row/_distortionMeshRows;        // Vertex Y
    68                                 float z=col/_distortionMeshColumns;     // TexCoord X
    69                                 float w=row/_distortionMeshRows;        // TexCoord Y
     64                                float x=col/(float)(_distortionMeshColumns-1);  // Vertex X
     65                                float y=row/(float)(_distortionMeshRows-1);     // Vertex Y
     66                                float z=col/(float)(_distortionMeshColumns-1);  // TexCoord X
     67                                float w=row/(float)(_distortionMeshRows-1);     // TexCoord Y
    7068
    7169                                _distortionMesh->at(row*_distortionMeshColumns+col).set(x,y,z,w);
Note: See TracChangeset for help on using the changeset viewer.