Changeset 407 for experimental/distortionNG/DistortionSet.cpp
- Timestamp:
- Aug 5, 2012, 11:09:39 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
experimental/distortionNG/DistortionSet.cpp
r398 r407 27 27 _matrixDirty = false; 28 28 29 _distortionMeshRows = 2; 30 _distortionMeshColumns = 2; 31 _distortionMesh = new osg::Vec4Array(); 29 setDistortionMeshDimensions(2, 2); 32 30 33 31 _intensityMap = NULL; … … 52 50 } 53 51 54 void DistortionSet::setDistortionMeshDimensions(int rows, int cols )52 void DistortionSet::setDistortionMeshDimensions(int rows, int cols, bool enforceMeshRebuild) 55 53 { 56 54 _distortionMeshRows = rows; 57 55 _distortionMeshColumns = cols; 58 56 59 if( _distortionMesh->size() != _distortionMeshRows * _distortionMeshColumns) // If dimensions differ: discard current mesh and create a new one57 if(!_distortionMesh.valid() || enforceMeshRebuild || _distortionMesh->size() != _distortionMeshRows * _distortionMeshColumns) // If dimensions differ: discard current mesh and create a new one 60 58 { 61 59 _distortionMesh = new osg::Vec4Array(_distortionMeshRows * _distortionMeshColumns); … … 64 62 for(int col=0;col<_distortionMeshColumns;col++) 65 63 { 66 float x=col/ _distortionMeshColumns; // Vertex X67 float y=row/ _distortionMeshRows; // Vertex Y68 float z=col/ _distortionMeshColumns; // TexCoord X69 float w=row/ _distortionMeshRows; // TexCoord Y64 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 70 68 71 69 _distortionMesh->at(row*_distortionMeshColumns+col).set(x,y,z,w);
Note: See TracChangeset
for help on using the changeset viewer.