Show
Ignore:
Timestamp:
04/24/14 19:26:46 (7 hours ago)
Author:
robert
Message:

From Farshid Lashkari, "I've attached a small fix to the Collada loader which prevents a null pointer access in some cases."

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osgsharedarray/osgsharedarray.cpp

    r12941 r13479  
    132132  * per-face colors and normals. 
    133133  */ 
    134 namespace { 
    135 } 
     134 
     135const osg::Vec3 myVertices[] = { osg::Vec3(-1.,-1., 1.), 
     136                                 osg::Vec3( 1.,-1., 1.), 
     137                                 osg::Vec3( 1., 1., 1.), 
     138                                 osg::Vec3(-1., 1., 1.), 
     139 
     140                                 osg::Vec3( 1.,-1., 1.), 
     141                                 osg::Vec3( 1.,-1.,-1.), 
     142                                 osg::Vec3( 1., 1.,-1.), 
     143                                 osg::Vec3( 1., 1., 1.), 
     144 
     145                                 osg::Vec3( 1.,-1.,-1.), 
     146                                 osg::Vec3(-1.,-1.,-1.), 
     147                                 osg::Vec3(-1., 1.,-1.), 
     148                                 osg::Vec3( 1., 1.,-1.), 
     149 
     150                                 osg::Vec3(-1.,-1.,-1.), 
     151                                 osg::Vec3(-1.,-1., 1.), 
     152                                 osg::Vec3(-1., 1., 1.), 
     153                                 osg::Vec3(-1., 1.,-1.), 
     154 
     155                                 osg::Vec3(-1., 1., 1.), 
     156                                 osg::Vec3( 1., 1., 1.), 
     157                                 osg::Vec3( 1., 1.,-1.), 
     158                                 osg::Vec3(-1., 1.,-1.), 
     159 
     160                                 osg::Vec3(-1.,-1.,-1.), 
     161                                 osg::Vec3( 1.,-1.,-1.), 
     162                                 osg::Vec3( 1.,-1., 1.), 
     163                                 osg::Vec3(-1.,-1., 1.), 
     164                               }; 
     165 
     166 
     167const osg::Vec3 myNormals[] = { osg::Vec3( 0., 0., 1.), 
     168                                osg::Vec3( 0., 0., 1.), 
     169                                osg::Vec3( 0., 0., 1.), 
     170                                osg::Vec3( 0., 0., 1.), 
     171 
     172                                osg::Vec3( 1., 0., 0.), 
     173                                osg::Vec3( 1., 0., 0.), 
     174                                osg::Vec3( 1., 0., 0.), 
     175                                osg::Vec3( 1., 0., 0.), 
     176 
     177                                osg::Vec3( 0., 0.,-1.), 
     178                                osg::Vec3( 0., 0.,-1.), 
     179                                osg::Vec3( 0., 0.,-1.), 
     180                                osg::Vec3( 0., 0.,-1.), 
     181 
     182                                osg::Vec3(-1., 0., 0.), 
     183                                osg::Vec3(-1., 0., 0.), 
     184                                osg::Vec3(-1., 0., 0.), 
     185                                osg::Vec3(-1., 0., 0.), 
     186 
     187                                osg::Vec3( 0., 1., 0.), 
     188                                osg::Vec3( 0., 1., 0.), 
     189                                osg::Vec3( 0., 1., 0.), 
     190                                osg::Vec3( 0., 1., 0.), 
     191 
     192                                osg::Vec3( 0.,-1., 0.), 
     193                                osg::Vec3( 0.,-1., 0.), 
     194                                osg::Vec3( 0.,-1., 0.), 
     195                                osg::Vec3( 0.,-1., 0.) 
     196                              }; 
     197 
     198const osg::Vec4 myColors[] = { osg::Vec4( 1., 0., 0., 1.), 
     199                               osg::Vec4( 1., 0., 0., 1.), 
     200                               osg::Vec4( 1., 0., 0., 1.), 
     201                               osg::Vec4( 1., 0., 0., 1.), 
     202 
     203                               osg::Vec4( 0., 1., 0., 1.), 
     204                               osg::Vec4( 0., 1., 0., 1.), 
     205                               osg::Vec4( 0., 1., 0., 1.), 
     206                               osg::Vec4( 0., 1., 0., 1.), 
     207 
     208                               osg::Vec4( 1., 1., 0., 1.), 
     209                               osg::Vec4( 1., 1., 0., 1.), 
     210                               osg::Vec4( 1., 1., 0., 1.), 
     211                               osg::Vec4( 1., 1., 0., 1.), 
     212 
     213                               osg::Vec4( 0., 0., 1., 1.), 
     214                               osg::Vec4( 0., 0., 1., 1.), 
     215                               osg::Vec4( 0., 0., 1., 1.), 
     216                               osg::Vec4( 0., 0., 1., 1.), 
     217 
     218                               osg::Vec4( 1., 0., 1., 1.), 
     219                               osg::Vec4( 1., 0., 1., 1.), 
     220                               osg::Vec4( 1., 0., 1., 1.), 
     221                               osg::Vec4( 1., 0., 1., 1.), 
     222 
     223                               osg::Vec4( 0., 1., 1., 1.), 
     224                               osg::Vec4( 0., 1., 1., 1.), 
     225                               osg::Vec4( 0., 1., 1., 1.), 
     226                               osg::Vec4( 0., 1., 1., 1.) 
     227                             }; 
    136228 
    137229/** Create a Geode that describes a cube using our own  
     
    161253osg::Geode* createGeometry() 
    162254{ 
    163     const osg::Vec3 myVertices[] = { osg::Vec3(-1.,-1.,-1.), 
    164                                      osg::Vec3( 1.,-1.,-1.), 
    165                                      osg::Vec3(-1., 1.,-1.), 
    166                                      osg::Vec3( 1., 1.,-1.), 
    167                                      osg::Vec3(-1.,-1., 1.), 
    168                                      osg::Vec3( 1.,-1., 1.), 
    169                                      osg::Vec3(-1., 1., 1.), 
    170                                      osg::Vec3( 1., 1., 1.) 
    171                                    }; 
    172  
    173     const osg::Vec3 myNormals[] = { osg::Vec3( 0., 0., 1.), 
    174                                     osg::Vec3( 1., 0., 0.), 
    175                                     osg::Vec3( 0., 0.,-1.), 
    176                                     osg::Vec3(-1., 0., 0.), 
    177                                     osg::Vec3( 0., 1., 0.), 
    178                                     osg::Vec3( 0.,-1., 0.) 
    179                                   }; 
    180  
    181     const osg::Vec4 myColors[] = { osg::Vec4( 1., 0., 0., 1.), 
    182                                    osg::Vec4( 0., 1., 0., 1.), 
    183                                    osg::Vec4( 1., 1., 0., 1.), 
    184                                    osg::Vec4( 0., 0., 1., 1.), 
    185                                    osg::Vec4( 1., 0., 1., 1.), 
    186                                    osg::Vec4( 0., 1., 1., 1.) 
    187                                  }; 
    188  
    189     const unsigned short myIndices[] = { 4, 5, 7, 6, 
    190                                         5, 1, 3, 7, 
    191                                         1, 0, 2, 3, 
    192                                         0, 4, 6, 2, 
    193                                         6, 7, 3, 2, 
    194                                         0, 1, 5, 4 
    195                                        }; 
    196  
    197255    osg::Geode* geode = new osg::Geode(); 
    198256 
     
    207265    unsigned int numNormals = sizeof(myNormals)/sizeof(myNormals[0]); 
    208266    geom->setNormalArray(new osg::Vec3Array(numNormals,const_cast<osg::Vec3*>(&myNormals[0]))); 
    209     geom->setNormalBinding(osg::Geometry::BIND_PER_PRIMITIVE); 
     267    geom->setNormalBinding(osg::Geometry::BIND_PER_VERTEX); 
    210268 
    211269    // add colors 
     
    213271    osg::Vec4Array* normal_array = new osg::Vec4Array(numColors,const_cast<osg::Vec4*>(&myColors[0])); 
    214272    geom->setColorArray(normal_array); 
    215     geom->setColorBinding(osg::Geometry::BIND_PER_PRIMITIVE); 
     273    geom->setColorBinding(osg::Geometry::BIND_PER_VERTEX); 
    216274 
    217275    // add PrimitiveSet 
    218     unsigned int numIndices = sizeof(myIndices)/sizeof(myIndices[0]); 
    219     geom->addPrimitiveSet(new osg::DrawElementsUShort(osg::PrimitiveSet::QUADS, 
    220                                                       numIndices, 
    221                                                       const_cast<unsigned short *>(myIndices))); 
     276    geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS, 0, numVertices)); 
    222277 
    223278    // Changing these flags will tickle different cases in