Hi Dimi,
I have now recreated the issue on my system using your example. I
used the attached CMakeLists.txt to compile, this might help others
recreate the problem as well.
As for the cause of the problem I can't yet say. Unfortunately I've
run out of working day so will need to come back to this tomorow.
Robert.
On Thu, May 19, 2011 at 2:21 PM, dimi christop <[email protected]> wrote:
> Hi Robert,
>
> this is exactly what I did, I called dirty on the vertexArray which is passed
> each frame
> to the geometry using
> geom->setVertexArray(vcoords);
> vcoords->dirty();
>
> The problem was that, it screws up all other attached geometry arrays like
> (colors, normals, texcoords) which do not change....
>
> This behavior does not occur when the geometry is not specified as VBO or in
> 2.8.
> I can try to call dirty on all arrays whether they change or not, but it does
> not seem logical.
>
> I attach a small example which show the problem (along with the makefile). The
> example
> changes vertexArrays of a VBO geometry (a cube) at runtime using 2 different
> vertexArrays.
> You should see a pulsating colored, textured cube if it runs fine.
> Commenting/Uncommenting the dirty calls make, or disabling the VBO makes it
> clear.
>
> Dimi
>
>
>
>
> ----- Original Message ----
> From: Robert Osfield <[email protected]>
> To: OpenSceneGraph Users <[email protected]>
> Sent: Thu, May 19, 2011 3:52:06 PM
> Subject: Re: [osg-users] VBO incosistencies between 2.8 and 2.912
>
> Hi Dimi,
>
> The buffer object support in the OSG has been revamped and in theory
> should be robust and flexible... but like all code there is a chance
> for regressions so wide spread testing it neccessary. Whether in this
> instance there is an actual bug, or just a different behaviour I can't
> say as I haven't tested your code.
>
> As a quick test I would suggest calling dirty on each array your modiy.
>
> Robert.
>
> On Thu, May 19, 2011 at 1:37 PM, dimi christop <[email protected]>
> wrote:
>> Hi,
>>
>> I recently upgraded my code base to 2.912 (Linux, GTX 280) , unfortunately my
>> GPU morphing code stopped working.
>> I use VBO, GLSL and vertex attributes to copy the changing morph shapes and
>> do
>> the interpolation on the GPU.
>>
>> After searching for the problem I found that when I declared a geometry as
>> VBO
>> // Disable Display lists and setup Vertex Buffer Objects
>> geom->setUseDisplayList (false);
>> geom->setUseVertexBufferObjects(true);
>> osg::VertexBufferObject* df = geom->getOrCreateVertexBufferObject();
>> df->setUsage (GL_STREAM_DRAW);
>>
>>
>> the subsequent commands during the update which changed the vertexArray had
>> no
>> effect and produced random triangles on the screen.
>> geom->setVertexArray(vcoords);
>>
>> Because of the many morph shapes, I have many vertex arrays preallocated and
>> pass them to the geometry based on a time. I do not copy assign to the vertex
>> array of the geometry for speed reasons.
>> As I said in the 2.8 version everything worked fine.
>> When change the code to issued a dirty on the vertex arrays
>> vcoords->dirty()
>> the shape morphed correctly but the color, normal, texcoord arrays (which do
>>not
>> morph) did not show up correctly.
>>
>> Has anyone any idea what changed between the 2.8-2.912 versions. I was under
>>the
>> impression that issuing a setVertexArray command
>> calls dirty() at least on the geometry array.
>> Is it therefore mandatory to issue a dirty() call for all arrays (color,
>>normal,
>> texcoords) assigned to the geometry?
>>
>> Please note then when I disable the VBO usage, a single dirty() call on the
>> vertexarray works and the other arrays show up normal.
>>
>> Thank you in advance
>> Dimi
>> _______________________________________________
>> osg-users mailing list
>> [email protected]
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
cmake_minimum_required(VERSION 2.6)
PROJECT(vbotest)
SET(CMAKE_MODULE_PATH "${vbotest_SOURCE_DIR};${CMAKE_MODULE_PATH}")
FIND_PACKAGE(OpenThreads)
FIND_PACKAGE(osg)
FIND_PACKAGE(osgDB)
FIND_PACKAGE(osgViewer)
SET(SOURCES
osggpumorph.cpp
)
INCLUDE_DIRECTORIES(${OPENTHREADS_INCLUDE_DIR} ${OSG_INCLUDE_DIR})
LINK_DIRECTORIES(${OSG_LIB_DIR})
ADD_EXECUTABLE(vbotest ${SOURCES})
TARGET_LINK_LIBRARIES(vbotest ${OSG_LIBRARY} ${OSGVIEWER_LIBRARY}
${OPENTHREADS_LIBRARY})
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org