[osg-users] Color array always red

Carlos Meira cesmsp at gmail.com
Tue Jan 12 14:12:47 PST 2016

Im trying create a simple white quad but it is always red. 
I took the example osgGeometry like this...

osg::Geode* geode = new osg::Geode();

    // create Geometry object to store all the vertices and lines primitive.
        osg::Geometry* polyGeom = new osg::Geometry();

        osg::ref_ptr<osg::Vec4Array> shared_colors = new osg::Vec4Array;

        osg::ref_ptr<osg::Vec3Array> shared_normals = new osg::Vec3Array;

        float width = 1000.0f;
		float height = 1000.0f;
        // note, anticlockwise ordering.
        osg::Vec3 myCoords[] =
    	            osg::Vec3((width/2)*(-1),(height/2)*(-1),  0.0f),
    	            osg::Vec3(width/2,    (height/2)*(-1),     0.0f),
    	            osg::Vec3(width/2,    height/2 ,      0.0f),
    	            osg::Vec3((width/2)*(-1),  height/2,  0.0f),

            osg::Vec3(0.238942, 0.0f, -0.251302),
            osg::Vec3(0.333696, 0.0f, 0.0329576),
            osg::Vec3(0.164788, 0.0f, -0.0453167),
            osg::Vec3(0.13595,  0.0f, -0.255421)

        int numCoords = sizeof(myCoords)/sizeof(osg::Vec3);

        osg::Vec3Array* vertices = new osg::Vec3Array(numCoords,myCoords);

        // pass the created vertex array to the points geometry object.

        // use the shared color array.
        polyGeom->setColorArray(shared_colors.get(), osg::Array::BIND_OVERALL);

        // use the shared normal array.
        polyGeom->setNormalArray(shared_normals.get(), osg::Array::BIND_OFF);

        // This time we simply use primitive, and hardwire the number of coords to use
        // since we know up front,
        polyGeom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,numCoords));

      //  printTriangles("Quads",*polyGeom);

        // add the points geometry to the geode.

What I m doing wrong ??

Thank you!


Read this topic online here:

More information about the osg-users mailing list