I'm a little confused as to the proper usage of VBOs in an OpenGL program.
I want to create a terrain paging algorithm, using a map called from a 4096x4096 greyscale heightmap as the "whole" map.
From what I've read, each vertex stored in the VBO will take up 64 bytes.
The problem I have is that most sources state that a single VBO should be between 1-4mb in size, and less VBOs is better. Yet according to my calculations, storing each vertex would take a total of about a gigabyte of data! (4096x4096x64) That's not including that each vertice may need to be stored multiple times for each triangle.
Nor does this accommodate the different vehicles and people that would be on this map once I get the terrain portion of the code worked out.
the other solution I looked at was to page the data from the hard drive while the program is running, but another source says it's a bad idea to create and destroy while the program's running, and that it's also best practice to have as few VBOs as possible.
What I really want to know is, what am I missing? I'm sure I'm making some kind of massive oversight here, because a maximum VBO size of 4mb just seems extremely low, even if I was loading the texture in 64x64 blocks, and the different interactive objects that would populate the map too.
Or are my expectations of what I can achieve just unrealistic? Is there a better method available to me that I'm unaware of? I'm looking at games like Oblivion or Fallout 3, and to some extend Boundless Planet, and seeing massive terrains, and wondering how on earth that can be possible.
I understand how to code, this isn't my first delve into OpenGL, but is my first time attempting to understand and utilize VBOs.
If anyone can shed some light into where my understanding of VBOs is going wrong, it would be much appreciated. Thanks!