Jump to content
  • Advertisement
Sign in to follow this  
Skeezix

OpenGL getting into graphics programming

This topic is 3759 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

im thinking of getting into graphics programming(specifically 3d) can you suggest a good site or a book to learn 3d from beginner level to advance(so i dont waste money when i buy a wrong book)...im interested with techniques like SSAO and topics on lighting,shaders and the likes,but i know its still a long way before i can do this,i know basic(very basic) of opengl...so im looking for a good site or book to study on graphics programming(3d) thanks

Share this post


Link to post
Share on other sites
Advertisement
Well there is a section called Books on this website and already they have a For Beginners section. Why not look through the list of books there and read through the comments, I cant see where you can go wrong with books with a 5/5 rating.

[Edited by - 4fingers on June 25, 2008 10:59:10 PM]

Share this post


Link to post
Share on other sites
The 2 sample chapters I linked to here give an excellent introduction to vectors and matrices.

If you're using OpenGL, another must-read is chapter 3 from the red book, but that's after you'll finish the two sample chapters.

I can't really recommend any books, but before buying any book, look at the reviews it got on Amazon (and not just this site).

Share this post


Link to post
Share on other sites
Well, forget about SSAO for now. By the time you understand graphics programming, SSAO is an outdated technique used by our grandpa's to fake ambient lighting :) I'm not saying you are a slow learner, but the (Graphic) techniques are developing/changing very rapidly. Depending on your skills, I would say it takes at least 2 or 3 years before you got graphics programming in your fingers (assuming you are really new on this terrain). I suspect there will be a lot of improvement on graphics programming in that period, especially realtime ambient lighting. On the other hand, a lot of techniques like normalMapping will not change or be rejected any soon. The only big switch in graphics programming I worry about is the possibility that raytracing(CPU) will take over the current way of rendering with the GPU. But I don't see this happening in the next 4 years though. Slap me if I'm wrong.

Anyway, what I'm trying to say is to focus on the basics first, not on specific hot shaders nowadays. Basics are:
- (Very) good knowledge of your programming language
- Object Orientated Programming skills
- Using OpenGL and/or DirectX API, the basics (making a viewer, drawing primitives, rotating, scaling, transforming)
- Creating and loading 3D models (mesh files)
- Navigating through your world with a camera
- Somewhat more specific techniques from your rendering API such as filtering, mip-maps, face culling, transparency, blending etc.
- Material system (loading textures, diffuse/specular/emissive/ambient lighting properties)
- Basic (diffuse/specular) lighting with your rendering API
- Matrix/Vector mathematics

I don't know book titles, since I never really used a book. But I'm sure there are plenty. Also don't forget to check out the demo's on internet. What I always did is trying to make a simple project. One of my first programs was a terrain with a grass texture and first person camera. Check out articles and other demo's to see how a terrain can be made with height data, how to make good use of quads/geometry, how to load that grass texture, and how to navigate the camera. Once you have that, add some little tricks such as a transparent cube, the sun as a light, etc. Do it again and again to start feeling comfortable between vertices, polygons, textures, meshes, camera's, transformations, and so on.

Once you get familiar with this, you can proceed with somewhat more advanced techniques such as:
- Sprites, HUD, Text, particles rendering
- Loading more complex mesh files
- Collision detection, octrees, etc.
- Portal culling
- Loading animated mesh (characters)
- OpenGL/DirectX tricks such as reflective water, creating a cubeMap for reflections, or multi-texturing

Yet again, plenty of demo's covering this stuff. Check out www.delphi3d.net, nehe, the old demo's on www.humus.ca, and so on. After that you can start making a shader system:
- Programming shaders and loading them into your program
- Basic shaders such as lighting, normalMapping, blending textures, etc.
- Creating a better material/shader system
- Optimizations
- Somewhat moer advanced shaders, projective textures, (simple) water, velvet
- Rendering framework/engine

If all the stuff above is a piece of cake, you can finally start punishing your video-card
- Advanced shaders
- Rendering special to textures (FBO's / render targets)
- HDR, DoF, SSAO, shadowmapping, water ...
- Advanced Realtime techniques (ambient, reflections)
- Optimized rendering system (don't render what you don't see, sort on shaders/materials, carefull with FBO's, etc.).

And then combine your skills into a serious ass kicking rendering engine.


Probably I forget a lot of other important things, but ussually you will learn that on your way through the books, internet articles and demo's. Really, creating your own little test programs is the key. Don't think about big graphic engines or advanced techniques yet, only dreaming is allowed :) Just plan some small programs such as a terrain renderer, pac-man, tetris, moving a ball through a maze, walking first-person through a scene, etc. Once you get a little bit further, you might want to create your first engine/framework. And probably you'll have to rebuild/rethink that framework/engine a billion times, but that is part of the learning process, so don't worry about that :)

Succes, and more important, have fun!
Rick

Share this post


Link to post
Share on other sites
wow thanks alot spek!!! that was very useful and enlighting!!! well ive got a long way ahead better start now!!!

i look at the links you showed Gage64 and i think im going to get the red book!! thanks!!! (well some of the books in the books section are quite old...there one who've been published since 1995!!!(we need an update on that))

Share this post


Link to post
Share on other sites
I'm not sure getting the red book is a good idea.

First, there is an old edition of it freely available here. Although it's very outdated, a lot of it is still applicable, and I'm not sure if what newer editions add will be useful for a beginner.

Second, the red book is not exactly beginner friendly and some sections can be quite difficult if you don't know the basics of 3D math and computer graphics.

Third, a new version of OpenGL (3.0) should come out in a few months, and it will be very different than the current one, so a lot of the info will no longer be applicable (of course, there's nothing preventing you from using the older version (2.1)).

Share this post


Link to post
Share on other sites
oh is that so...but i hear about that new ogl but its been sooo long and yet it hasn't come out...btw i didn't mentioned that i now basics of 3d math stuff..hehehe sorry...is it really useless to study the old ogl(2 something)???will it really be a different thing with this new ogl that will be released???

Share this post


Link to post
Share on other sites
Not being experienced with OpenGL, I'm not sure, but this question has been asked several times so you should search the forums (I found this link, though it's a bit old. You might find something newer).

Share this post


Link to post
Share on other sites
I'm not aware of a new OpenGL, but I believe everything you read and learn is usefull. You mentioned a book from 1995. Old indeed, but the pure basics are still the same. Navigating camera's, using meshes, and all that kind of stuff is the same for OpenGL, DirectX, raytracers, and so on. You only may need some other function calls, depending on which API (version) you choose. I think the revisions of DirectX and OpenGL will keep the same basics as well (backward compatibility?). It's the new stuff introduced with new video-cards that is ussually added or improved in the API's. But like you said yourself, you are not there yet, so I won't care too much about that for now.

Nevertheless, its not a bad idea to orientate on the available systems. It would be a bummer to find out you specialize in something that won't be used anymore in the future :). Although if you really master a graphics API, a switch to another one will be less difficult. The most difficult decission would probably choosing between OpenGL and DirectX. Both are still alive and kicking, although I feel DirectX is winning terrain. But you can do the same with OpenGL as well, and some find OpenGL somewhat more user-friendly and/or quicker to start with since it has a less gigantic library of objects and functions like DirectX has. I suggest try some demo's of both systems, and see with which API you are most comfortable.

Greetings,
Rick

Share this post


Link to post
Share on other sites
If you want a kick start you could download DirectX API and carry out the tutorials. They cover the most basic stuff and should give you a hint of how to work with computer graphics.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!