Using modern opengl or not?

Started by TheBoneJarmer, November 16, 2014, 00:17:32

Previous topic - Next topic

TheBoneJarmer

Hey guys

Lately I've been wondering. Every time I search up for tutorials on OpenGL I am confronted with "learn modern OpenGL, don't waste time with legacy" etc etc. Well, I really have been wondering about whether I should do it or not. I am a absolute amateur when it comes to OpenGL, but I have decent experience with game development in general.

My problem is, that my graphics card supports OpenGL 2.1. And I have updated my drivers. Is it true that I cannot use OpenGL 3? If not, it is obvious that I cannot test OpenGL 3+ projects so should I bother learning it? I'm really getting along with the legacy OpenGL but modern OpenGL just looks so complicated!

Please don't take this question as another "legacy vs modern OpenGL" topic because I was unable to find an answer that suits my situation on the web although I really learned a lot by just reading answers on stackoverflow and such.

Cornix

It really depends on your needs.
If all you want to do is program simple applications then legacy is completely fine. Just keep in mind that the performance is rather bad and you can not use it for mobile devices.

Furthermore, if your graphics card does not support modern openGL then you have not much of a choice.

TheBoneJarmer

Thanks for the reply! Well, than I'll stick with legacy for now because of my hardware. There is one more thing though I'm interested in for the future. It has to do with what I said before. I think modern opengl is too complicated for me to understand right now. Would you suggest to get along with legacy opengl first so I have less troubles learning modern opengl? Or are they that much different?

Afaik, the rendering pipeline is different in many ways. Things like glBegin, glVertex is not used anymore and instead arrays of vertices or something like that.

Cornix

They are completely different.
Some of the basics are still the same, learning these is needed no matter what, but the way you use them is completely different.

In legacy openGL you have the fixed functionality pipeline, in modern openGL you write your own custom shaders and define what kinds of inputs you want to sent to the graphics card.

TheBoneJarmer

Ah okay. I suppose it is not a complete waste of time to learn legacy then. However, since my hardware limits me to legacy opengl, how can I get the best performance out of opengl 2? I started first with plain glBegin..glEnd commands. For a pyramid it works fine but when I tried to draw 1000 spheres my fps rate got cut in half while with directx I could draw 10000 spheres without a single fps drop. That is when I learnt how to use display lists. They were much faster and my fps did not drop. However, I saw some answers on stackoverflow saying those were bad as well. I also read a lot of stuff about fbo's, vbo's and such. I'm going to search some tutorials about them soon, but can someone describe in short what they are and what they do?

Cornix

VBO's are the way to go. They are still used with modern OpenGL but they were introduced with version 1.5.