ARB_vertex_buffer_object issue on GeForce4 4200 Go

Gurus,

I have an application that runs just fine on my desktops GeForce Ti 4600, but seriously misbehaves on my GeForce4 4200 Go.

Simplified summary of the way the app is supposed to work :

Initialization :

  • Call glGenBuffersARB to generate 4 VBOs (assume for this posting that they are 1,2,3,4)

  • Call glBufferDataARB() to load vertex & normal data (for object A) into VBO 1

  • Call glBufferDataARB() to load element index data (for object A) into VBO 2

  • Call glBufferDataARB() to load vertex & normal data (for object B) into VBO 3

  • Call glBufferDataARB() to load element index data (for object B) into VBO 4

On each rendering pass :

  • Bind VBO 1, call glNormalPointer, glVertexPointer

  • Bind VBO 2, call glDrawElements : Object A is displayed

  • Bind VBO 3, call glNormalPointer, glVertexPointer

  • Bind VBO 4, call glDrawElements : Object B is displayed

Like I said, on the 4600 this works fine.

But, on the 4200 Go, it only works fine on the first rendering pass. On each subsequent pass, object B is displayed twice - once in its actual location, and also in place of object A.

This happens even when the “real” object B is not drawn. Even worse, if there are objects C, D, E, etc, they all render fine on the first pass, but then they too become clones of whichever object was the last one drawn on that first rendering pass.

Basically, its as though any data I load via glBufferData is lost once I bind to another VBO. Is it possible that only a single VBO is supported on the GeForce 4200 Go? Even though I get different numbers back from glGenBuffersARB()? Or is this some sort of driver bug? I’m running the “66.93” version downloaded from NVIDIAs site…

I don’t even need this to run particularly well on the laptop… it does need to at least run, however… :frowning:

Thanks,
Chris Bond