PDA

View Full Version : confused about versions



melomania
11-11-2009, 03:19 PM
Hello

I would like to start learning openGL. I know there is a lot information for beginners that I could read. But I'm really confused about where to start. I understand a lot changed with version 3.0 and 3.2 is out already too. A lot of the beginners information is about 2.1 or even earlier. I do not like to start learning something that has already changed a lot. So when I want to learn openGL 3.2 where should I start? The official book about openGL is also about the old 2.1 version.

I want to use powerfull hardware acceleration like the nVidia grafic cards (GTX295). Should I start learning openGL on a windows system or linux system (I have access to both).

I tried to find this information myself searching on www.opengl.org. (http://www.opengl.org) I'm sorry if a overlooked something.

marshats
11-11-2009, 10:03 PM
All this is my Personal Opinion: Use Linux and start with openGL 2 with either glut (http://freeglut.sourceforge.net/) or SDL (http://www.libsdl.org/). You will find a lot of very good documentation on those. And good news they are openGL 3 capable in their beta versions so you will be primed for the future as openGL 3 becomes more popular (and better documented for beginners and gains basic code examples). Besides glut and SDL are both cross platform so you can go back to windows if you like. So in a way you will be preparing yourself for moving up to openGL 3 when you are comfortable.

The Redbook (http://www.opengl.org/documentation/red_book/) is a great book that I learned the most from when I began openGL programming. OpenGL 2 is very fast and capable (hardware acceleration is not an issue) so don't feel like you are wasting your time with it.

I like Linux because it is well positioned to get libraries ie apt-get, synaptic or the like for libraries like freeglut3-dev or libsdl1.2-dev. In windows this is not so programmer friendly.

This is all my personal opinion so take it as so ;)

Dark Photon
11-12-2009, 06:15 AM
I want to use powerfull hardware acceleration like the nVidia grafic cards (GTX295). Should I start learning openGL on a windows system or linux system (I have access to both).
Here's a second for Linux. OpenSuSE (http://www.opensuse.org) is very developer friendly, and popping the NVidia proprietary drivers on top is a snap. Package management the way MSWindows should have done it. And no need to GetProcAddress everything as on Windows -- all APIs are accessible and ready-to-link. Hard to beat free too, particularly when that choice virtually eliminates your chance of contracting viruses/malware/etc., unlike MSWindows.

Personal pref: go with KDE 3.5, not KDE 4.x for the window manager when you install.

Post to the OpenGL on Linux forum here if you have other questions you need help with.

As far as the card, keep in mind that for most scenarios, you'll likely get better perf (on any OS) out of a GTX285 than a GTX295. A GTX295 appears to be a GX2-style GPU (SLI on a single board), where they've basically glued two GPUs together, split the GPU memory between them, and hidden this behind the API. IIRC, each GPU has its own identical copy of textures, etc., and vertex transforms are duplicated as well.

Given the same clocking, this setup largely just gets you more fill, but as it turns out the GTX295 has the slower clocks of a GTX260, so it'll likely perform slower than a GTX285 for you except when you're fill limited. If it were me, I'd save $130 and go for a GTX285. But regardless, I heartily recommend an NVidia card and the driver stability that comes with it.

Heiko
11-12-2009, 07:00 AM
I think there is not really an advantage with respect to OpenGL on Linux or Windows. A while ago I read an interview with a Linux driver developer from nVidia who stated that about 90% of the code is shared. So there shouldn't be much differences OpenGL wise between Linux and Windows (the same is valid for Ati by the way).

So... Windows or Linux: just choose what you like best as a developer platform yourself. Or make a decision based on the users for your applications. Of course Windows is more wide spread.

Personally I'm mainly using Linux because I really like it as a developer platform. But occasionally I'm working in Windows as well because I try to make my apps cross platform.

I'm afraid not many OpenGL 3.x tutorials are found on the web yet. One thing you could do is learn OpenGL using the OpenGL 2.1 tutorials found on the web. Once you have a basic understanding of a tutorial, have a look in the specifications (can be downloaded from this website) and try to rewrite the application from the tutorial in the new OpenGL 3.x way.

One thing you will learn quickly is that in OpenGL 3 (without deprecated functions) you don't have builtin matrix functionality anymore. So you'll have to do matrix calculations yourself (or find a library for it). Some other things that are not possible anymore are the usage of glBegin(), glEnd(). Instead you have to put vertices/normals/texture coordinates in buffers and thereafter draw that buffer. The default rendering pipeline is also gone. Meaning you have to write your own vertex shaders and fragment shaders. Lots of these things are already possible with OpenGL 2.1 and you will find tutorials for that.

Dark Photon
11-12-2009, 09:58 AM
One thing you will learn quickly is that in OpenGL 3 (without deprecated functions) you don't have builtin matrix functionality anymore. So you'll have to do matrix calculations yourself (or find a library for it). Some other things that are not possible anymore are the usage of glBegin(), glEnd().
This is true, if you use the CORE profile. That's where you want to head for sure, but the OP should be aware that NVidia has said they won't be obsoleting anything deprecated by GL3 soon, so feel free to use the COMPATIBILITY profile to access all the capability in ways better documented in tutorials while you're learning, until you learn the GL3 way. Nothing wrong with that.

melomania
11-14-2009, 01:31 PM
Thanks all for the feedback.
(Sorry for the late reaction, I was out of the country for a few days)

About Linux versus Windows:
Linux would be new to me, but I want to learn that anyway.
On the otherhand I do not want that learning Linux would slow down the learning of OpenGL.
Is there a preferred IDE to be used with OpenGL?

About learning OpenGL 2.1 first:
Somehow I do not like to learn something old first. I'm afraid that I will learn an old way of thinking and that I will have to get that out of my mind when going to 3.2. This will not make my 3.2 programming better.
I would like a document that describes the OpenGL 3.2 way of thinking and start fresh with 3.2 programming. Any idea if something like that exists?

kowal
11-14-2009, 04:26 PM
I started to learn OpenGL few months ago from OpenGL Super Bible. It'a good but quite outdated (1.x-2.0). Now I'm trying to switch to 3.x. Differences between them are big, but the way of thinking stays pretty much the same. I don't know if starting with older version is better, maybe it is, just to learn few basic concepts of 3D. It worked for me.

Immediate mode is not that hard to forget :)

About Platform and IDE:
Linux, and I don't use IDE - tried Code::Blocks and Eclipse, but it goes much faster (at least for me) with gvim and couple of Makefiles, and maybe local cvs (trying to switch to svn) for larger projects.

OpenGL itself isn't bound to any platform, if You design your software carefully, it's not hard to make it work on Windows too.

Good luck in learning OpenGL, and sorry for my poor English.

marshats
11-15-2009, 02:29 PM
If you like to straddle the windows/linux fence ;) You can use the gcc tools on both.

-- on windows that means

1. using mingw/msys (http://www.mingw.org/) for a commandline/makefile approach.
2. Or you can use dev-cpp (http://www.bloodshed.net/devcpp.html) which is a frontend IDE to gcc on windows

--- on linux
1. make sure you install the openGL hardware drivers from NVIDIA or ATI websites -- I have found NVIDIA to be much better in the past but I have been hearing ATI is getting better in Linux.
2. gcc is the tool -- using a text editor gedit or gvim along with commandline is actually quite powerful but for beginners I understand why they like IDEs. Once you learn the commandline it is hard to ever go back to a smothering IDE -- my opinion :)
3. Eclipse is an option fo C/C++
4. For C# a combination of openTK/ Monodevelop (http://www.opentk.com/project/opentk-demo) is quite good for people wanting a good IDE but it is C#.
5. For Java, Netbeans (http://netbeans.org/) with openGL pack is quite powerful too

So what you will find is that you have many options -- I have tried them all and settled on the commandline/makefile/C++ approach but you should get a dual boot system up and running and just try each for yourself and come to your own favorite. It is not that hard and can be a rather fun learning experience.

As far as learning opengl 3.2 first -- the problem still is that there is no good documentation yet. At least not for an openGL beginner or even a moderate skilled openGLer. OG3 is an evolution from OGL2 so I still contend that learning OGL2 first is a very good approach right now until books are written. But if you insist I recommend GLM samples (http://www.g-truc.net/post-0204.html) as a place to start learning openGL 3.

mlfarrell
11-15-2009, 03:59 PM
there aren't enough 3.2-capable machines yet to really dive into 3.2 programming. All you'll end up doing is writing an app that doesn't work on 90+% of computers out there today.

Secondly, just about all 3.2 implementations out there support backwards compatibility, so you're really not wasting your time.

lastly, IMO, learning Opengl 1.x/2.x first and then 3.0 is akin to learning C before C++, it'll benefit you in the long run to take short leaps. 3.0 is alot to take in if you've never done this stuff before.