Hi, At this point, I would recommend to use a debugger and enter into the OSG code with it. It may not be a bug in the OSG code, but maybe by looking at what OSG is doing you can find how to fix your own code.
As a hint on where to look. The dirty() call should be forcing a new compileBuffer() call in the next draw stage, and this should mean a glBufferSubData call uploading the new vertex data to the GPU. If this is OK, then I would look at the geometry draw() call, to see if it is using the VBO path or another one. Maybe Robert can help you a bit more with this when he is back next week. Regards. Rubén El vie, 08-02-2008 a las 11:17 +0100, lucas Grijander escribió: > Hi! > > I add the vbo->dirty() but it doesn't change anything. I had a look to > the vbo data and it's fine, it changes, but the render is not > updated.... any idea?? > > regards, > > Crisalix. > > > > > > ______________________________________________________________________ > > From: [EMAIL PROTECTED] > > To: osg-users@lists.openscenegraph.org > > Date: Thu, 7 Feb 2008 23:38:00 +0100 > > Subject: Re: [osg-users] How to modify the array of vertex from a > Geometry object > > > > Hi, > > > > I think that the only thing missing is a vbo->dirty() > > > > Regards > > > > El jue, 07-02-2008 a las 19:31 +0100, lucas Grijander escribió: > > > Thanks Rubén, > > > > > > I'm trying to use VBO, but I think something is missing... I added > > > this to the creation of my geometry: > > > > > > myGeom->setSupportsDisplayList(false); > > > myGeom->setUseDisplayList(false); > > > myVertexBuffer = myGeom->getOrCreateVertexBufferObject(); > > > myVertexBuffer->setArray(0,&v); > > > myVertexBuffer->setUsage(GL_STREAM_DRAW_ARB); > > > myGeom->setUseVertexBufferObjects(true); > > > > > > and then inside the callback I'm try to modify the vertex data: > > > > > > osg::Vec3Array *test = dynamic_cast<osg::Vec3Array > > > *>(testNx->myVertexBuffer->getArray(0)); > > > > > > for(int i = 0; i < numVertex; i++) > > > { > > > NxMat34 pose = listShapes.at(i)->shape->getGlobalPose(); > > > osg::Vec3f trans = osg::Vec3(pose.t.x,pose.t.y,pose.t.z); > > > > > > test->at(i) = trans; > > > } > > > > > > but nothing changes in the render.... the object does not move. > Does > > > anybody know what is missing?? > > > > > > thanks in advance > > > > > > Crisalix. > > > > > > > > > > > > > ______________________________________________________________________ > > > > From: [EMAIL PROTECTED] > > > > To: osg-users@lists.openscenegraph.org > > > > Date: Wed, 6 Feb 2008 21:33:51 +0100 > > > > Subject: Re: [osg-users] How to modify the array of vertex from > a > > > Geometry object > > > > > > > > Hi, > > > > > > > > Some hints: > > > > > > > > 1. Be sure that test->size() is equal to numVertex > > > > > > > > 2. I don't know what the "at" method is, I couldn't find it > either > > > on > > > > the TemplateArray class or the std::vector class. Try with the > > > vector [] > > > > operator, ie: (*test)[i] = trans > > > > > > > > 3. If you are updating the vertex data once per frame, don't use > > > display > > > > lists, it is the worst thing that you can ever do! It is cheaper > > > even to > > > > use direct mode. Use vertex buffer objects and configure the VBO > > > > (getOrCreateVertexBufferObject) in streaming mode > (GL_STREAM_DRAW). > > > > > > > > Hope this helps. > > > > > > > > Regards. > > > > > > > > Rubén > > > > > > > > El mié, 06-02-2008 a las 14:08 +0100, lucas Grijander escribió: > > > > > Dear all, > > > > > > > > > > I have to create a 3D surface, and then such surface will be > > > modified during the application with several deformations. I've > tried > > > to create a Geometry object, then I set the VertexArray, and > finally > > > inside the render callback I update such vertex with the new ones. > I > > > got some errors during the rendering: > > > > > > > > > > Warning: detected OpenGL error "value not valid" after > > > RenderBin::draw(,) > > > > > > > > > > Does anyone has an idea of such error? In addition, I'm sure > the > > > way I am accessing the vertex is not the right one, anybody knows > the > > > best way? > > > > > > > > > > here is the code: > > > > > > > > > > > > > > > //Create the 3D geometry > > > > > > > > > ------------------------------------------------------------------------- > > > > > osg::Vec3Array(m*n)); > > > > > osg::Vec2Array& t = *(new osg::Vec2Array(m*n)); > > > > > osg::Vec4Array& col = *(new osg::Vec4Array(1)); > > > > > > > > > > col[0][0] = col[0][1] = col[0][2] = col[0][3] = 1.0f; > > > > > > > > > > int index = 0; > > > > > for( i = 0; i < m; i++ ) > > > > > { > > > > > for(j = 0; j < n; j++) > > > > > { > > > > > v[index][0] = i; > > > > > v[index][1] = 0; > > > > > v[index][2] = j; > > > > > > > > > > t[index][0] = (float)i/(m-1); > > > > > t[index][1] = (float)j/(n-1); > > > > > > > > > > index++; > > > > > } > > > > > } > > > > > > > > > > myGeom = new osg::Geometry; > > > > > > > > > > myGeom->setVertexArray( &v ); > > > > > myGeom->setTexCoordArray( 0, &t ); > > > > > > > > > > myGeom->setColorArray( &col ); > > > > > myGeom->setColorBinding( osg::Geometry::BIND_OVERALL ); > > > > > > > > > > for( i = 0; i < m-1; i++ ) > > > > > { > > > > > osg::DrawElementsUShort* elements = new > > > osg::DrawElementsUShort(osg::PrimitiveSet::TRIANGLE_STRIP); > > > > > elements->reserve(m*2); > > > > > for( j = 0; j < n; j++ ) > > > > > { > > > > > elements->push_back((i+0)*n+j); > > > > > elements->push_back((i+1)*n+j); > > > > > } > > > > > myGeom->addPrimitiveSet(elements); > > > > > } > > > > > > > > > > > > > > > osg::Texture2D *tex = new osg::Texture2D; > > > > > > > > > > tex->setImage(osgDB::readImageFile("Images/breast.png")); > > > > > > > > > > osg::StateSet *dstate = new osg::StateSet; > > > > > dstate->setMode( GL_LIGHTING, osg::StateAttribute::OFF ); > > > > > dstate->setTextureAttributeAndModes(0, tex, > > > osg::StateAttribute::ON ); > > > > > dstate->setTextureAttribute(0, new osg::TexEnv ); > > > > > > > > > > myGeom->setStateSet( dstate ); > > > > > > > > > > osg::Geode *geode = new osg::Geode; > > > > > geode->addDrawable( myGeom ); > > > > > > > > > > ------------------------------------------------------- > > > > > > > > > > //Accessing the elements > > > > > ------------------------------------------- > > > > > > > > > > osg::Vec3Array *test = > dynamic_cast(myGeom->getVertexArray()); > > > > > > > > > > for(int i = 0; i < numVertex; i++) > > > > > { > > > > > NxMat34 pose = listShapes.at(i)->shape->getGlobalPose(); > > > > > osg::Vec3f trans = osg::Vec3(pose.t.x,pose.t.y,pose.t.z); > > > > > > > > > > test->at(i) = trans; > > > > > > > > > > > > > > > > > > > > } > > > > > myGeom->dirtyDisplayList(); > > > > > myGeom->dirtyBound(); > > > > > -------------------------------------------- > > > > > > > > > > thank you very much for your help!!! > > > > > > > > > > Crisalix. > > > > > > > > > > > > > > > > _________________________________________________________________ > > > > > Express yourself instantly with MSN Messenger! Download today > it's > > > FREE! > > > > > > http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ > > > > > _______________________________________________ > > > > > osg-users mailing list > > > > > osg-users@lists.openscenegraph.org > > > > > > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > > > > > > > > > > _______________________________________________ > > > > osg-users mailing list > > > > osg-users@lists.openscenegraph.org > > > > > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > > > > > > > ______________________________________________________________________ > > > Express yourself instantly with MSN Messenger! MSN Messenger > > > _______________________________________________ > > > osg-users mailing list > > > osg-users@lists.openscenegraph.org > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > _______________________________________________ > > osg-users mailing list > > osg-users@lists.openscenegraph.org > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > ______________________________________________________________________ > Express yourself instantly with MSN Messenger! MSN Messenger > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org