Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Page 1 of 4 123 ... LastLast
Results 1 to 10 of 34

Thread: VBO Performance Test

  1. #1
    Super Moderator Regular Contributor
    Join Date
    Jul 2001
    Posts
    405

    VBO Performance Test

    Hi !

    I have made a app that uses VBO and on my HW i get very low FPS. I have a GForce 4 Ti 4600 with drivers 44.03.

    I would be happy if you would like to test it on Raden HW with VBO support and newer NVidia drivers with HW >= GForce4..

    Here is the URL..
    http://www.tooltech-software.com/dow...VBO%20Test.zip

    Thanx ahead !!!

    BTW. You can see som of my IBR stuff in it..

  2. #2
    Advanced Member Frequent Contributor
    Join Date
    Jun 2001
    Location
    Denmark
    Posts
    607

    Re: VBO Performance Test

    Tested this on Radeon 9700 Cat 3.5. The VBO version runs very slow( 0fps when I press the 'f' key ), the non-VBO is quite fast ( 35fps ). The output seems messed up in both versions. Parts of the teapot is missing.

  3. #3
    Super Moderator Regular Contributor
    Join Date
    Jul 2001
    Posts
    405

    Re: VBO Performance Test

    The Teapot is just rendered from one image + depth map. Therefor it is missing a lot of "non visible" patches..

    However. you get the same result as I do. The VBO version is SO SLOW !! Strange...

  4. #4
    Advanced Member Frequent Contributor
    Join Date
    Oct 2001
    Posts
    596

    Re: VBO Performance Test

    I havent tried that program yet, but im using vbo:s in my own programs on a radeon card ( and its been tested on gf4 and gffx aswell) and there we get a pretty nice preformance boost, so i wouldnt blame the drivers just yet.

  5. #5

    Re: VBO Performance Test

    "This application has failed to start because MSVCP60D.dll was not found."
    No, I don't use Visual Studio 6, I use Visual Studio .NET.
    ^Fishman

  6. #6
    Super Moderator Regular Contributor
    Join Date
    Jul 2001
    Posts
    405

    Re: VBO Performance Test

    You can find the missing files here ...
    http://www.tooltech-software.com/dow...32_runtime.zip

    I get 3 FPS using VBO and 30 FPS using the non VBO version.

  7. #7
    Advanced Member Frequent Contributor
    Join Date
    Jun 2001
    Location
    Denmark
    Posts
    607

    Re: VBO Performance Test

    It isn't a driver issue as ToolTechs test app runs slow on both NV and ATI hardware in VBO mode.

    One thing that generally gives me bad performance is when I mess up and get gl errors per frame, but you probably already checked that.

  8. #8
    Intern Contributor
    Join Date
    Apr 2002
    Location
    Prestwick, Ayrshire, Scotland
    Posts
    97

    Re: VBO Performance Test

    Originally posted by ToolTech:
    Hi !

    I have made a app that uses VBO and on my HW i get very low FPS. I have a GForce 4 Ti 4600 with drivers 44.03.
    Hi Anders,

    I implemented a VBO path in the OSG a couple of weeks back and found up to 50% peformance boost on coarse grained high polygon models.

    However, on models that were composed of then of thosands of small peices of geometry the peformance of VBO is slower than using display lists. I think this is largely down to OpenGL calling overhead swamping the gains from VBO. The use of extensions and having to querry for them at runttime makes doing lots of extension calls expensive :-|

    The drivers that I am using are Nvidia's 43.63 release under Linux. Results will obviously vary on different drivers/OS's/graphics hardware, but in general my findings have been positive, save crashes reported on Geforce2Gp laptops.

    Robert.

  9. #9
    Super Moderator Regular Contributor
    Join Date
    Jul 2001
    Posts
    405

    Re: VBO Performance Test

    Hi Robert.

    I get the scary feeling that my usage of shorts for vertex coordinates and mixing VertexAttrib with normal VertexPointer slows it down. In my other apps I also do get a gain but in this case it runs really messy. 10X slower !! How could I detect that using VBO is 10X slower on a HW ?? I mean.. VBO should be faster in ANY case right ?

  10. #10
    Super Moderator Regular Contributor
    Join Date
    Jul 2001
    Posts
    405

    Re: VBO Performance Test

    Here is the code used to render

    Code :
     
    gzVoid gzIBRGeometry: [img]http://www.opengl.org/discussion_boards/ubb/tongue.gif[/img]reTraverseAction( gzTraverseAction *actionclass , gzContext *context)
    {
    	if(actionclass->isExactType(gzRenderAction::getClassType()))	// Exact a graphic action
    	{
    		if(!gzGraphicsEngine::has_vertex_program())
    			return;
     
    		//gzDepthFunc(GZ_LESS);
     
    		gzPushMatrix();
     
    		gzMultMatrixr(&m_transform.v11);
     
    		if(gzGraphicsEngine::has_vertex_buffer_object())
    		{
    			gzULong offsetToDepth=m_width*m_height*sizeof(gzShort)*2;
     
    			if(m_rebindIndex)
    			{
    				m_rebindDepth=TRUE;
     
    				if(m_bufIndexID)
    				{
    					gzDeleteBuffers(1,&m_bufIndexID);
    					m_bufIndexID=0;
    				}
     
    				gzGenBuffers(1,&m_bufIndexID);
     
    				gzBindBuffer(GZ_ELEMENT_ARRAY_BUFFER,m_bufIndexID);
     
    				gzBufferData(GZ_ELEMENT_ARRAY_BUFFER,2*m_width*sizeof(gzULong),m_indexSet->getIndexAddress(),GZ_STATIC_DRAW);
     
    				if(m_bufID)
    				{
    					gzDeleteBuffers(1,&m_bufID);
    					m_bufID=0;
    				}
     
    				gzGenBuffers(1,&m_bufID);
     
    				gzBindBuffer(GZ_ARRAY_BUFFER,m_bufID);
     
    				gzBufferData(GZ_ARRAY_BUFFER,m_width*m_height*(sizeof(gzShort)*2+sizeof(gzFloat)),0,GZ_STATIC_DRAW);
     
    				gzBufferSubData(GZ_ARRAY_BUFFER,0,offsetToDepth,m_indexSet->getXYAddress());
     
    				m_rebindIndex=FALSE;
    			}
    			else
    			{
    				gzBindBuffer(GZ_ELEMENT_ARRAY_BUFFER,m_bufIndexID);
     
    				gzBindBuffer(GZ_ARRAY_BUFFER,m_bufID);
    			}
     
    			if(m_rebindDepth)
    			{
    				gzBufferSubData(GZ_ARRAY_BUFFER,offsetToDepth,m_width*m_height*sizeof(gzFloat),m_depthMap->getArray().getAddress());
    				m_rebindDepth=FALSE;
    			}
     
    			gzEnableClientState(GZ_VERTEX_ARRAY);
     
    			gzEnableVertexAttribArray(1);
     
    			for(gzULong i=0;i<(m_height-1);i++)
    			{
    				gzVertexAttribPointer(1,1,GZ_FLOAT,FALSE,0,(const gzVoid *)(i*m_width*sizeof(gzFloat)+offsetToDepth));
     
    				gzVertexPointer(2,GZ_SHORT,0,(const gzVoid *)(i*m_width*sizeof(gzShort)*2));
     
    				gzDrawRangeElements(GZ_TRIANGLE_STRIP,0,2*m_width-1,2*m_width,GZ_UNSIGNED_INT,0);		
    			}
     
    			gzDisableVertexAttribArray(1);
     
    			gzBindBuffer(GZ_ELEMENT_ARRAY_BUFFER,0);
    			gzBindBuffer(GZ_ARRAY_BUFFER,0);
     
    		}
    		else
    		{
     
    			gzEnableClientState(GZ_VERTEX_ARRAY);
     
    			gzEnableVertexAttribArray(1);
     
    			for(gzULong i=0;i<(m_height-1);i++)
    			{
    				gzVertexAttribPointer(1,1,GZ_FLOAT,FALSE,0,((gzFloat *)m_depthMap->getArray().getAddress())+i*m_width);
     
    				gzVertexPointer(2,GZ_SHORT,0,m_indexSet->getXYAddress()+i*m_width);
     
    				gzDrawRangeElements(GZ_TRIANGLE_STRIP,0,2*m_width-1,2*m_width,GZ_UNSIGNED_INT,m_indexSet->getIndexAddress());		
    			}
     
    			gzDisableVertexAttribArray(1);
    		}
     
    		gzPopMatrix();
     
    		//gzDepthFunc(context->depthFunc);
    	}
     
    }

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •