I would like to create a virtual 3D world. I am familiar with SDL and 2d graphics programming. I am experienced with C++ and I know a little Java (I have enough programming experience to learn a language quickly).

I am familiar with the traditional game loop:

Game game;

game.Initialize()  // initialize all variables

while (game.Running())
   game.HandleEvents();  //get input
   game.Update();  //handle movement/time features
   game.Draw();  //redraw screen

game.Close()  //clear surfaces/textures and quit API of choice

Is OpenGL the best option I have for learning 3D programming?

Once I have a small virtual world and a character + camera, I'll worry about networking it, I am more concerned with the actual 3D programming using the API first in a single player environment.

I know there is Direct X, but it is not platform independent.
OpenGL is compatible with many Operating Systems.
I know there is also Java 3D, but I am not sure if that is a dead technology.

Your input is appreciated!

From what I've seen OpenGL is the way to go.


Here is a sample app via openGL. Terrian

1) Press ',' the comma key to get a outline view.
2) Press space bar about 15 times or so, to displace the land.
3) press 'c' to smooth out the land.

Its one of my earlier project.