   Implementation of frustum culling on VBOs
  hey,I'm try to figure out how to do this correctly but I can't.An example scenario: I'm going to frustum cull the faces of a mesh for example a heightmap terrain. I fill an octree on CPU controlled memory which holds the faces of the terrain. finally create a VBO and upload my visible faces from octree (cpu controlled memory) to VBO (gpu).My problem begins in this point:now I have to update this octree everytime the camera moves or maybe for some reason every frame. let's say our terrain has 128 x 128 vertices which makes around 32k faces. regenerating the octree for 32k faces and uploading visible faces VBO for every frame seems a bit insane to me. is there a better implementation for this?   
  You don't need to cull individual faces - instead cull tiles (say, 8x8 vertex chunks). This way all visible tiles can be kept in GPU memory, and rendered very quickly with one draw call per tile.   ;  thanks for the swift reply.Quote:Original post by swiftcoderYou don't need to cull individual faces - instead cull tiles (say, 8x8 vertex chunks). This way all visible tiles can be kept in GPU memory, and rendered very quickly with one draw call per tile.you mean keeping every 8x8 in seperate VBOs and the octree will be a tree of these vbos?if what I understand is right, there will be 256 draw calls for a 128x128 terrain instead of 1 and I assume there will also be some overhead for switching between 256 VBOs in gpu. does this make a significant loss for just a single terrain where there will also be a lot of different object in a scene?[Edited by - troxtril on June 29, 2009 11:00:09 AM];  Keep it in one buffer, but use different parts of it (glDrawElements with different "start" and "size" parameters)   ;  ah.. this makes sense. thanks for the answers.   ;Quote:Original post by zorbadKeep it in one buffer, but use different parts of it (glDrawElements with different "start" and "size" parameters)Ja, you basically implement a simple memory pool over a single VBO, which allocates 8x8 tiles. Then you use glDrawRangeElements() to draw individual tiles, having bound the VBO once.   