PDA

View Full Version : OpenGL learning



12-30-2001, 11:20 PM
I am just 15 and I know C . Next year I am getting 3 months holidays which i don't to waste . Well I got some complex things[like MSVC++] from the library running on my system with which I used to try Quake3 coding using some tutorials. I would like to learn OpenGL ,please someone tell me right from the scratch what to learn to get my own games running .

WhatEver
12-31-2001, 12:07 AM
Other than OpenGL you should learn linear algebra.

Bob
12-31-2001, 03:39 AM
Trigonometry is also a requirement.

But trigonometry, linear algebra, and the graphics API is not enough. If you want to code them somewhat efficiently, then design, analysis, algorithms is of even greater importance. And these things is not something you learn by reading books/tutorials, you learn by several years of experience.

endo
12-31-2001, 04:29 AM
Can anyone recommend any good sites to remind me of all the linear algebra I've forgotten since leaving school?

01-01-2002, 06:39 AM
Well you guys are no where near to my answers
I am asking again more explained which are the languages I should learn to move to OpenGL ? Sorry for the wrong question .

Shag
01-01-2002, 07:33 AM
Depending on what kind of game you want to make, you'd most likely want a language that compiles reasonably effeciently. Which realistically gives you two choices - C/C++ or Delphi. Delphi is probably easier to learn from scratch, but C/C++ is ultimately a more powerful language.

Tolga Dalman
01-01-2002, 12:42 PM
well folks,

linear algebra is useful of course, but you'll get it soon enough.
san, if you really want to learn opengl, then you should check out nehe.gamedev.net. you might've seen that it's the most suggested site. good luck ;-)

best regard,
Tolga.

Questions Burner
01-01-2002, 07:09 PM
Originally posted by San:
I am just 15 and I know C . Next year I am getting 3 months holidays which i don't to waste . Well I got some complex things[like MSVC++] from the library running on my system with which I used to try Quake3 coding using some tutorials. I would like to learn OpenGL ,please someone tell me right from the scratch what to learn to get my own games running .


Stick with C/C++ but I recommend C++ since it's superset of C, good luck http://www.opengl.org/discussion_boards/ubb/smile.gif

Nutty
01-02-2002, 06:04 AM
I think everyone should learn assembler before C/C++. The amount of people I've seen who can't get their heads round pointers in C, are usually people who dont know assembler.

It will also give you a very good understanding as to the whole CPU instructions, compilers, object code and everything.

Heck I've even seen university students who dont know what object code is! Cos they didn't learn assembler.

Read Michael Abrash's Zen of Assembly, then learn C, then C++.

IMHO of course. http://www.opengl.org/discussion_boards/ubb/smile.gif

Tolga Dalman
01-02-2002, 03:32 PM
i totally agree to you, nutty, that everyone should know assembly.
nowadays university students even don`t need the "art of programming" at all... i believe, i could get a diploma without knowing, how to code (no, i'm not kidding :-( )

san, if you know c, but no assembly, i too suggest you to learn assembly first, then c++.
so long,
Tolga.

Questions Burner
01-03-2002, 01:04 AM
Everyone have their own way of learning programming. I got to admit knowing assembly is a big advantage but is not compulsory. I never learn assembly, but I have no problems in pointer after coding for while and examine some source code. Just some comment.

dorbie
01-03-2002, 03:54 AM
You don't need to learn assembly, if you have the time it won't hurt. If pointers are a problem then I suggest you learn pointers from a good C book. C++ has call by reference which is handy for avoiding pointers without copying loads of data onto the stack, but you still need pointers. Everyone should know the basics of memory, heap, stack, registers & types, but this does not require knowledge of assembly.

Nutty
01-03-2002, 04:22 AM
How many C or C++ books teach you about memory, heap, stack, registers & types?

Not to mention, instruction caches', data cache's, pipeline locks, memory addressing modes?

If you're gonna learn that, you may as well go the whole hog, and learn assembly language. Syntactically, it's much simpler than C, and C++, and by learning it, you will have a much better understanding of the way your C/C++ code is translated into machine instructions.

Also debugging of your C/C++ programs is eased significantly, if you can look at the disasemmbly of your code, and understand whats happening, at the cpu level.

If you want to go on to further your ability as a good programmer, by being able to write incredibly fast and efficient code, then knowledge of what instructions your compiler is generating, and how long these instructions take to execute, and execute together in the pipeline is crucial.

Sure you don't need to learn assembler to write C or C++ code, but you'll write even better code if you do.

Nutty

endo
01-03-2002, 04:48 AM
Any good websites for teaching me assembler then?

Nutty
01-03-2002, 07:26 AM
Go to your local library, and ask them to get in Michael Abrash's Zen of Assembler. It's a big book, and your library should be able to get it sent in from one of it's departments.

In UK, it only cost a very small fee to get the library to do this.

There might even be an online version somewhere. I think the publishers released some of Michael's books online in PDF form.

Questions Burner
01-03-2002, 07:47 PM
Learn assembler then C then C++?
Good luck! And good time! http://www.opengl.org/discussion_boards/ubb/smile.gif

01-04-2002, 08:13 AM
Ummm. Why are you relating Object-Oriented Coding with assembly language? I can see the small connection between pointers and assembly because you are working with memory adresss and such, but Object Oriented doesn't have anything to do with assembly. My assembly experience is limited to writing a few loops that alter numbers and that's it, yet I understand a large portion of Object-Oriented Programming concepts. Stop scaring the newbies dude, they just want to get their feet wet! http://www.opengl.org/discussion_boards/ubb/smile.gif

Hey, newbs, the nehe tutorials ARE a good place to start. I also reccomend the "Open GL Game Programming" Book from the Game Development Series. It goes over not only Open GL, but some cool Direct X stuff you'll need as well.

Ace Corbain

01-04-2002, 09:41 AM
The Redbook of OpenGL is a good book too. The great thing is that the whole thing is published online! Check out http://fly.cc.fer.hr/~unreal/theredbook/chapter01.html

Nutty
01-04-2002, 10:21 AM
I'm not relating assembler with Object Oriented methods.

I'm saying, if you want to write really good code, it is an immense help to know the really low level stuff. And the best way to learn this stuff is by coding in assembler alot. The best way to learn is practise.

Korval
01-04-2002, 12:53 PM
I think everyone should learn assembler before C/C++. The amount of people I've seen who can't get their heads round pointers in C, are usually people who dont know assembler.

I don't agree. You can do quite fine in C/C++ without knowing assembly language. And you can certainly understand pointers without knowing assembly (I did for 3 years. Learning assembly didn't enhance my understanding of pointers one bit). Newbies shouldn't be trying to understand assembly if they barely have a grasp on C or C++.

You may need assembly (or at least a general understanding of what happens when you press F7 in VC++) in order to code more efficiently. Games may need low-level optimizations, but precious few other types of programs do.


Why are you relating Object-Oriented Coding with assembly language?

Nutty said object code, not object-oriented code. Two very differnt things.

[This message has been edited by Korval (edited 01-04-2002).]

nemesis
01-04-2002, 03:00 PM
Hi!

I think assembly is not necessary, although it helps, of course, as every knowledge does.
I would say:
1- learn C. Practise a lot.
2- read about assembly. Practise a little http://www.opengl.org/discussion_boards/ubb/wink.gif
3- learn C++. Go on coding and coding...
4- learn OpenGL -> Nutty tutorials, for example.
5- read a lot about game developing algorithms.
6- go on learning new things everyday.

I believe everyone can understand pointers without having to be an expert in assembly. And years of programming also help you to code more efficiently.

-nemesis-

Nutty
01-04-2002, 03:07 PM
Fair enuff. Same kinda thing as I was trying to get at.

An analogy.

You dont need to know how a car works in order to drive.

But if you learn all about car handling techniques, where the most power from the engine comes in, and at what revs, how the tires handle on different surfaces, how to spin the back end out, by carefully controlling the handbrake at the right time, then soon you'll be driving like a rally champion!!

1 point tho. "Nutty's examples". I dont do tutorials, can't be arsed. http://www.opengl.org/discussion_boards/ubb/smile.gif

Nutty

01-05-2002, 05:32 PM
I bit off the point off assembler and C++.

I am a C++ programmer and i think a understanding of assembler goes a long way in helping understand how a compiled executable works.

However... i have one question! I have just finished reading the opengl red book... and i am using windows 98. where the hell do u get hold of the opengl 1.2? i am using VC++ 6.0 and it comes with opengl 1.1, but i cant use the latest things such as 'imaging subsets' and multitexturing! grrr.

if any 1 knows where i can obtain the the librarys/headers and dlls for windows then please email me.... djreather@hotmail.com

dorbie
01-05-2002, 06:56 PM
This is like old foggies with their B&W film cameras saying you need to learn how to use a dark room, when everyone is using digital cameras.

You can pick up all you need about cache behaviour from decent programming and optimization books. Memory behaviour varies from OS to OS, but you'll find that OS specific books cover this.

All I'm saying here is there are efficient ways to spend your time, I don't think jumping neck deep into assembler is a good one. Sure it helps, but there may be better things to do.

[This message has been edited by dorbie (edited 01-05-2002).]

01-07-2002, 12:09 AM
I started programming in C++ when I was 14.
Get a GOOD book about C++ and a copy of the OpenGL Programming Guide (The Red Book).
I learned all my C++ and OpenGL stuff this way.

Now, to get your program compiled, you'll have to know more about compiling.

When programming, you'll include header files. And you will use function declared in that header file. But the comiler doesn't know that those functions are actually called from a DLL. So you have to tell the compiler where to find the libraries.

All the rest is just experimenting. You have 3 months, you'll soon see that it's not enough!!!

You don't need any maths to start programming in OpenGL, but you WILL need it as soon as you start more advanced programs!

At last, a good tip: don't start with OpenGL unless you know C++ completely!!! Or you will not know what you are doing.
Everyone can copy code from a tutorial and change things in it!

The best of luck!!!