Question about openGL 1.1 and later versions.

Im going to try openGL instead of DirectX =).
Have a question. I have the source of a simple game engine using openGL 1.1 and i am wondering if it is hard to upgrade it with openGL 3.X features?

Thanks for your answer.

If it would be an OpenGL 2.0 engine…it might be relatively easy. There are many extensions which allow to use OpenGL 3.x features in OpenGL 2, so the Engine would probably already use things like Shaders and VertexBufferObjects.
But OpenGL 1.1 is really old. There are a lot of changes, e.g. fixed-function pipeline was remove completely in 3.x. It’s probably better to start from scratch.

However, engines are more than just the graphics part, there is User-Input, Sound, Network, AI and so on. Maybe you just rewrite parts of the engine?

When you try to convert your engine form 1.1 to 3.x you will have to learn both APIs. Learning 1.1 now is learning for trash.

Honestly, I’d go for OpenGL 2.1 with all recent extensions instead. Each time when I had to port code the deprecation/removal of immediate mode was a dead stop for me. It makes GL 3.x very unappealing to me for converting old projects.

With GL 2.1 it’s possible to upgrade the old code without throwing most of it away and still get all the cool new features.

Now, some people might tell you that in the future GL 2.1 support may be reduced and GL 3.x is the only future-proof way.
However, I don’t think this is ever going to happen - at least not in the foreseeable future. There’d be an uproar among users if the old software suddenly stopped working properly and there’s simply too much of it.

The only thing to fear for GL 2.1 would be that future extensions might only be available with GL 3.x … not yet happening.

At least regarding nVidia point of view, it is clear that there is no risk picking OpenGL 2.0 instead of OpenGL 3.0. See statements 4, 5 and 7:

4) Is NVIDIA going to remove functionality from OpenGL in the future?

NVIDIA has no interest in removing any feature from OpenGL that our ISVs rely on. NVIDIA believes in providing maximum functionality with minimal churn to developers. Hence, NVIDIA fully supports the ARB_compatibility extension and Compatibility profile, and is shipping OpenGL 3.2 drivers without any functionality removed, including any functionality that is marked deprecated.
5) Will existing applications still work on current and future shipping hardware?

NVIDIA has no plans for dropping support for OpenGL 2.1, and earlier versions, on our existing and future shipping hardware. As a result, all currently shipping applications will continue to work on NVIDIA’s existing and future hardware.

  1. Will functionality marked as deprecated be slow on NVIDIA hardware?

No. NVIDIA understands that features on the deprecated list are critical to the business of a large part of our customer base. NIVIDIA will provide full performance, and will support, tune, and fix any issues, for any feature on the deprecated list. This means that all the functionality in the ARB_compatibility extension and Compatibility profile will continue to operate at maximum performance.

Does anybody have a reference about such statement from ATI (a technical paper?, a conference presentation?, a web page? )?

ATI has made similar statements but I can’t find a link right now.

Thanks for all the answers =)
Another question lets say i want to learn openGL 3.x.
Any suggestions of good books ?
Iv been looking at the openGL library 5th edition but not sure if its any good for me since i want to use openGL for game’s and not 3d applications.

Thanks again.

To the OP, sure go ahead and convert to GL 3.1. It will be a good learning experience. The problem that you will have might be that you won’t find a lot of tutorials about it but you can read about GL 2.0 and GLSL and use that as a baseline.