Hi,

I'm starting to work my way through the source for Geometry and Drawable, but 
more experienced minds might be able to point me in the right directions sooner.

I'm working on a AR HUD and because a later point in the project might require 
the  loading of complex models to represent avatars or vehicles inside the AR 
space we have chosen to use OSG as a starting point. The current UI is 
currently relatively primitive and basically consist entirely of billboards of 
varying textures with minor text glyphs to indicate various properties. 

I've implemented most of the billboards in a single VBO based Geometry node.  
Because the target hardware is lacking I wanted to play with partial updates to 
the VBO contents based on our current draw performance.  First pass I simply 
created a post function for manually controlling where in the draw thread 
buffer transfers occur, but it has become apparent to me from profiling that 
this might only be marking the VBO as dirty and the actual upload occurring 
during the next draw frame. 



Code:
        void OSGVboMarker::post()
   {
                if (m_frontVBO.isInitialized && m_bDirtyBit)
                {
                        m_swapLock.lock();
                        int count = m_frontVBO.vertices->size();
                        m_pGeometry->setVertexArray( m_frontVBO.vertices );

                        m_pGeometry->setNormalArray(m_frontVBO.normal, 
osg::Array::BIND_OVERALL);
                        m_pGeometry->setColorArray(m_frontVBO.color, 
osg::Array::BIND_OVERALL);
                        
                        m_pGeometry->setTexCoordArray(0,m_frontVBO.texCoords, 
osg::Array::BIND_PER_VERTEX);
                        
                        m_pGeometry->setVertexAttribArray(5, 
m_frontVBO.centers, osg::Array::BIND_PER_VERTEX);
                        m_pGeometry->setVertexAttribArray(6, 
m_frontVBO.scaleValues, osg::Array::BIND_PER_VERTEX);
                        
                        m_pDrawArrays->setCount(count);
                        m_pDrawArrays->set(osg::PrimitiveSet::QUADS, 0, count);




So, I have two questions related to the above. 

1. When do modified VBO nodes push memory to the card.
2. Is it possible to manually control this operation and possibly do sub buffer 
updates. 
... 

Thank you!

Cheers,
Ignitus

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=65456#65456





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to