|
|
|
I don't know if you need much more on OpenGL other than NeHe's lessons, but here are some lessons and tutorials i've found on the web.
|
|
ID
|
Title
|
Title/Description
|
|
|
|
|
|
"In this tutorial, I will teach you how to set up, and use OpenGL in a Windows environment. The program you create in this tutorial will display an empty OpenGL window, switch the computer into fullscreen or windowed mode, and wait for you to press ESC or close the Window to exit. It doesn't sound like much, but this program will be the framework for every other tutorial I release in the next while."
|
|
|
|
|
|
|
"In this opengl tutorial you will learn how to attach opengl to a window."
|
|
|
|
|
|
|
"This opengl tutorial teaches you to size the opengl window while keeping the proportions correct."
|
|
|
|
|
|
|
"This opengl tutorial is abbout using full screen mode in GLUT."
|
|
|
3
|
Input
|
Learn how to read input from device's such as keyboard. I
|
|
4
|
Start Drawing!
|
Here you will learn how to start drawing polygons with OpenGL.
|
|
|
|
|
|
"Using the source code from the first tutorial, we will now add code to create a Triangle, and a Square on the screen. I know you're probably thinking to yourself "a triangle and square... oh joy", but it really is a BIG deal. Just about everything you create in OpenGL will be created out of triangles and squares. If you don't understand how to create a simple little triangle in Three Dimensional space, you'll be completely lost down the road. So read through this chapter and learn. "
|
|
|
|
|
|
|
"An opengl tutorial on drawing a square in our opengl window."
|
|
|
5
|
Color
|
Learn how to add color to your scene. I
|
|
|
|
|
|
"Expanding on the second tutorial I will teach you how to create spectacular colors in OpenGL with very little effort. You will learn about both flat coloring and smooth coloring. The triangle on the left uses smooth coloring. The square on the right is using flat coloring. Notice how the colors on the triangle blend together."
|
|
|
|
|
|
|
"This tutorial is about adding one color to our opengl square."
|
|
|
|
|
|
|
"This opengl tutorial is about colouring an object on a per vertex basis."
|
|
|
6
|
Rotation
|
Learn how to rotate objects. I
|
|
|
|
|
|
"Moving right along. In this tutorial I'll teach you how to rotate both the triangle and the quad. The triangle will rotate on the Y axis, and the quad will rotate on the X axis. This tutorial will introduce 2 variables. rtri is used to store the angle of the triangle, and rquad will store the angle of the quad."
|
|
|
|
|
|
|
"An opengl tutorial on rotating an object or shape."
|
|
|
|
|
|
|
"An opengl tutorial using double buffers to draw a scene in time with the refresh rate of the monitor."
|
|
|
|
|
|
|
"Now that we have setup, polygons, quads, colors and rotation figured out, it's time to build 3D objects. We'll build the objects using polygons and quads. This time we'll expand on the last tutorial, and turn the triangle into a colorful pyramid, and turn the square into a solid cube. The pyramid will use blended colors, the cube will have a different color for each face."
|
|
|
|
|
|
|
"This opengl tutorial allows you to draw a cube with GLUT."
|
|
|
8
|
Scaling
|
Learn how to create round objects. I
|
|
|
|
|
|
"This opengl tutorial is about scaling objects, aka stretching."
|
|
|
9
|
Quadrics
|
Learn how to create round objects. I
|
|
|
|
|
|
"This tutorial code was written by GB Schmick the wonderful site op over at TipTup. It will introduce you to the wonderful world of quadrics. With quadrics you can easily create complex objects such as spheres, discs, cylinders and cones. These object can be created with just one line of code. With some fancy math and planning it should be possible to morph these objects from one object into another. Please let GB Schmick know what you think of the tutorial, it's always nice when visitors contribute to the site, it benefits us all. Everyone that has contributed a tutorial or project deserves credit, please let them know their work is appreciated! "
|
|
|
|
|
|
|
"This opengl tutorial will show you how to create circles."
|
|
|
|
|
|
|
"This opengl tutorial is about creating our own sphere with texture coordinates."
|
|
|
10
|
Textures
|
These lessons will show you how to map a texture onto a polygon.
|
|
|
|
|
|
"You asked for it, so here it is... Texture Mapping!!! In this tutorial I will teach you how to map a bitmap image onto the six sides of a cube. We'll use the GL code from lesson one to create this project. It's easier to start with an empty GL window than to modify the last tutorial. "
|
|
|
|
|
|
|
"This tutorial code was written by GB Schmick and is based on his quadrics tutorial (lesson 18). In lesson 15 (texture mapped fonts) I talked a little bit about sphere mapping. I explained how to auto-generate texture coordinates, and how to set up sphere mapping, but because lesson 15 was fairly simple I decided to keep the tutorial simple, leaving out alot of details in regards to sphere mapping. Now that the lessons are a little more advanced it's time to dive into the world of sphere mapping. TipTup did an excellent job on the tutorial, so if you appreciate his work, let him know!"
|
|
|
|
|
|
|
"I wrote this tutorial for all those people that have emailed me asking "How do I load textures from a resource file so that all the textures are stored in the .exe file?" and for those people that have said "I know how to texture map a quad but how in the heck do I texture map a triangle?". The tutorial itself is not all that fancy, and it's definitely not that advanced, but the content is good to know. If nothing else, you will learn how to hide your precious textures. Making it difficult for a novice to steal them :)"
|
|
|
|
|
|
|
"In Lesson 25 I showed you a quick way to load uncompressed 24/32 bit TGA images. Very useful if you need to use an alpha channel and you don't mind the large size of an uncompressed TGA! In this tutorial, you will learn how to load both uncompressed and RLE compressed TGA images. The TGA Loading code and header files are seperate from the main project, and can easily be used in projects of your own! The demo is included only as an example! Don't expect eye popping graphics!"
|
|
|
|
|
|
|
"This tutorial is about basic texturing on a Windows operating system."
|
|
|
|
|
|
|
"This opengl tutorial is about creating texture coordinates automatically."
|
|
|
|
|
|
|
"This tutorial is on achieving simple texture animation using multiple textures."
|
|
|
11
|
Filters
|
The quality of your textures from far and close. I
|
|
|
|
|
|
"This opengl tutorial is about using mipmaps for a better looking image."
|
|
|
12
|
Lighting
|
Here are some tutorials on lighting in OpenGL. I
|
|
|
|
|
|
"Ok, I hope you've been understanding everything up till now, because this is a huge tutorial. I'm going to attempt to teach you 2 new ways to filter your textures, simple lighting, keyboard control, and probably more :) If you don't feel confident with what you've learned up to this lesson, go back and review. Play around with the code in the other lessons. Don't rush. It's better to take your time and learn each lesson well, than to jump in, and only know enough to get things done."
|
|
|
|
|
|
|
"This opengl tutorial is about adding basic lighting."
|
|
|
|
|
|
|
"This opengl tutorial is about adding materials to objects which effect lighting."
|
|
|
|
|
|
|
"This tutorial is about the different types of lighting, ambient, diffuse, specular and emissive."
|
|
|
|
|
|
|
"There was a reason for the wait. A fellow programmer from the totally cool site Hypercosm, had asked if he could write a tutorial on blending. Lesson eight was going to be a blending tutorial anyways. So the timing was perfect! This tutorial expands on lesson seven. Blending is a very cool effect... I hope you all enjoy the tutorial. The author of this tutorial is Tom Stanis. He's put alot of effort into the tutorial, so let him know what you think. Blending is not an easy topic to cover."
|
|
|
|
|
|
|
"Up until now we've been blending our images onto the screen. Although this is effective, and it adds our image to the scene, a transparent object is not always pretty. Lets say you're making a game and you want solid text, or an odd shaped console to pop up. With the blending we have been using up until now, the scene will shine through our objects. By combining some fancy blending with an image mask, your text can be solid. You can also place solid oddly shaped images onto the screen. A tree with solid branches and non transparent leaves or a window, with transparent glass and a solid frame. Lots of possiblities!"
|
|
|
|
|
|
|
"This opengl tutorial teaches the assigning of alpha values for transparency."
|
|
|
|
|
|
|
"This tutorial is about assigning alpha values to an object on a per vertex basis for different blending effects."
|
|
|
14
|
Fog
|
Lessons to teach you how to create fog. I
|
|
|
|
|
|
"This tutorial code was generously donated to the site by Chris Aliotta. It based on the code from lesson 7, that why you're seeing the famous crate again :) It's a pretty short tutorial aimed at teaching you the art of fog. You'll learn how to use 3 different fog filters, how to change the color of the fog, and how to set how far into the screen the fog starts and how far into the screen it ends. Definitely a nice effect to know!"
|
|
|
|
|
|
|
"This tutorial will introduce you to the world of extensions. In this tutorial you will learn how to create Volumetric Fog using the glFogCoordf Extension. You will also learn how the IPicture code works, and how to use it in projects of your own. Because of very limited free time, the demo is not all that complex. The only keys used in this demo are the up and down arrow keys. The only effect displayed in this demo is volumetric fog. Keeping that in mind, the fog effect is extremely cool, and the tutorial is very detailed. After reading through this tutorial you should have no problem adding volumetric fog to demos of your own. It's important to note that this tutorial only runs on video cards that support the EXT_fog_coord extension. If you are not sure if you care supports this extension, download lesson 24 and scroll through the list of supported extensions. Hopefully someone will find this code useful!"
|
|
|
|
|
|
|
"This opengl tutorial is about adding basic fog."
|
|
|
|
|
|
|
"This opengl tutorial is about the different types of fog, linear, exp, exp2."
|
|
|
15
|
Display lists
|
Display lists are used to make rendering quicker. I
|
|
|
|
|
|
"Want to know how to speed up you OpenGL programs? Tired of writing lots of code every time you want to put an object on the screen? If so, this tutorial is definitely for you. Learn how to use OpenGL display lists. Prebuild objects and display them on the screen with just one line of code. Speed up your programs by using precompiled objects in your programs. Stop writing the same code over and over. Let display lists do all the work for you! In this tutorial we'll build the Q-Bert pyramids using just a few lines of code thanks to display lists."
|
|
|
|
|
|
|
"This opengl tutorial is about creating display lists."
|
|
|
16
|
Text
|
Learn how to display text here I
|
|
|
|
|
|
"I think the question I get asked most often in email is "how can I display text on the screen using OpenGL?". You could always texture map text onto your screen. Of course you have very little control over the text, and unless you're good at blending, the text usually ends up mixing with the images on the screen. If you'd like an easy way to write the text you want anywhere you want on the screen in any color you want, using any of your computers built in fonts, then this tutorial is definitely for you. Bitmaps font's are 2D scalable fonts, they can not be rotated. They always face forward."
|
|
|
|
|
|
|
"Bitmap fonts not good enough? Do you need control over where the fonts are on the Z axis? Do you need 3D fonts (fonts with actual depth)? Do you need wireframe fonts? If so, Outline fonts are the perfect solution. You can move them along the Z axis, and they resize. You can spin them around on an axis (something you can't do with bitmap fonts), and because proper normals are generated for each character, they can be lit up with lighting. You can build Outline fonts using any of the fonts installed on your computer. Definitely a nice font to use in games and demos."
|
|
|
|
|
|
|
"Hopefully my last font tutorial {grin}. This time we learn a quick and fairly nice looking way to texture map fonts, and any other 3D object on your screen. By playing around with the code, you can create some pretty cool special effects, Everything from normal texture mapped object to sphere mapped objects. In case you don't know... Sphere mapping creates a metalic looking object that reflects anything from a pattern to a picture."
|
|
|
|
|
|
|
"The original version of this tutorial code was written by Giuseppe D'Agata. In this tutorial you will learn how to write any character or phrase you want to the screen using texture mapped quads. You will learn how to read one of 256 different characters from a 256x256 texture map, and finally I will show you how to place each character on the screen using pixels rather than units. Even if you're not interested in drawing 2D texture mapped characters to the screen, there is lots to learn from this tutorial. Definitely worth reading!"
|
|
|
|
|
|
|
"Recently many of you have written to me asking how to create an anti-aliased font. Bitmap fonts are usually blocky looking when zoomed, and outline fonts eat up too much CPU. Thanks to Sven Olsen, you can now create extremely nice looking fonts using the FreeType library. By using the FreeType library you can create anti-aliased text. The text is easy to rotate and works well with OpenGL's picking functions. The example program is based on lesson 13, and uses the older NeHe basecode. The example is not all that fancy, but after running it, you will see a clear difference between the older WGL Bitmap Font and the new FreeType Font! If you enjoy this tutorial, please email the author and let him know!"
|
|
|
17
|
Models
|
Learn how to display text here I
|
|
|
|
|
|
"Brett Porter is the author of this tutorial. What can I say... Another incredible tutorial! This tutorial will teach you how to load in and display texture mapped Milkshape3D models. This tutorial is quite advanced so make sure you understand the previous lessons before you attempt the code in this tutorial. It sounds as though Brett is planning a future tutorial on Skeletal Animation so if you enjoy this tutorial, show him your support! Email him and let him know you appreciate his work!"
|
|
|
18
|
The Stencil Buffer
|
The stencil buffer is used to create various effects such as shadows or reflections.
|
|
|
|
|
|
"This tutorial was written by Banu Cosmin. It demonstrates how to create extremely realistic reflections using the stencil buffer, clipping, and multi-texturing. This tutorial is more advanced than previous lessons, so please make sure you've read the previous lessons before jumping in. It's also important to note this tutorial will not run on video cards that do not support the stencil buffer (voodoo 1, 2, perhaps more). If you appreciate Banu's work, let him know!"
|
|
|
|
|
|
|
"This is an advanced tutorial. Before you decide to try out shadows, make sure you completely understand the base code, and make sure you are familiar with the stencil buffer. This tutorial was made possible by both Banu Cosmin & Brett Porter. Banu wrote the original code. Brett cleaned the code up, combined it into one file, and wrote the HTML for the tutorial. The effect is amazing! Shadows that actual wrap around objects, and distort on the walls and floor. Thanks to Banu and Brett for their hard work, this is truely a great tutorial!"
|
|
|
|
|
|
|
"This opengl tutorial is about using the stencil buffer for basic shadows."
|
|
|
|
|
|
|
"This opengl tutorial is about using the stencil buffer for basic reflections."
|
|
|
|
|
|
|
"This tutorial covers a few of the topics you guys had requested. You wanted to know how to move the objects you've made around the screen in 3D. You wanted to know how to draw a bitmap to the screen, without the black part of the image covering up what's behind it. You wanted simple animation and more uses for blending. This tutorial will teach you all of that. You'll notice there's no spinning boxes. The previous lessons covered the basics of OpenGL. Each tutorial expanded on the last. This tutorial is a combination of everything that you have learned up till now, along with information on how to move your object in 3D. This tutorial is a little more advanced, so make sure you understand the previous lessons before you jump into this tutorial."
|
|
|
|
|
|
|
"This is my first large tutorial. In this tutorial you will learn about: Lines, Anti-Aliasing, Orthographic Projection, Timing, Basic Sound Effects, and Simple Game Logic. Hopefully there's enough in this tutorial to keep everyone happy :) I spent 2 days coding this tutorial, and about 2 weeks writing this HTML file. If you've ever played Amidar, the game you write in this tutorial may bring back memories. You have to fill in a grid while avoiding nasty enemies. A special item appears from time to time to help make life easier. Learn lots and have fun doing it!"
|
|
|
|
|
|
|
"This tutorial code was written by Jens Schneider. Right off the start I'd like to point out that this is an advanced tutorial. If you're still uncertain about the basics, please go back and read the previous lessons. If you're a new GL programmer, this lesson may be a bit much. In this lesson, you will modify the code from lesson 6 to support hardware multi-texturing on cards that support it, along with a really cool visual effect called bump-mapping. Please let Jens Schneider know what you think of the tutorial, it's always nice when visitors contribute to the site, it benefits us all. Everyone that has contributed a tutorial or project deserves credit, please let them know their work is appreciated!"
|
|
|
|
|
|
|
"In this tutorial I will teach you how to read and parse what OpenGL extensions are supported by your video card. I will also show you how to use scissor testing to create a cool scrolling window effect. And most importantly I will show you how to load and use TGA (targa) image files as textures in projects of your own. TGA files support the alpha channel, allowing you to create some great blending effects, and they are easy to create and work with. Not only that, by using TGA files, we no longer depend on the glAUX library. Something I'm sure alot of you guys will appreciate!"
|
|
|
|
|
|
|
"This tutorial was written by Andreas Löffler. In this tutorial you will learn how to load .RAW image files. You will also learn how to write your own blitter routine to modify textures after they have been loaded. You can copy sections of the first texture into a second texture, you can blend textures together, and you can stretch textures. The same routine can be modified to create realtime plasma and other cool effects! If you enjoy the tutorial let Andreas know!"
|
|
|
|
|
|
|
"This tutorial will teach you how to play AVI files in OpenGL. Play them fullscreen, in a window, on the side of a cube, sphere, cylinder, etc. Create a billboard with full motion video playing on it! The tutorial also shows you how to use sphere mapping to create a cool looking live environment mapping effect. Thanks to Fredster for the AVI animation, Maxwell Sayles for the coding advice, and both Jonathan Nix and John F. McGowan, Ph.D. for their great AVI articles / documents. Have fun with the tutorial, if you find mistakes in the tutorial, please let me know!"
|
|
|
|
|
|
|
"When you need raw polygon-pushing power, you can always utilize the optimizations provided by OpenGL. Vertex Arrays are one good way to do that. For even more boost you can use a recent extension to graphics cards called 'Vertex Buffer Objects'. The extension, ARB_vertex_buffer_object, works just like vertex arrays, except that it loads the data into the graphics card's high-performance memory, significantly lowering rendering time. Because the extension is relatively new, not all cards will support it. This awesome tutorial was written by Paul Frazee. If you enjoy the tutorial please e-mail him and let him know."
|
|
|
|
|
|
|
"Need a tutorial that will make your OpenGL applications look better? A big problem we all run into is aliasing. That is, the square edged "jaggies" that exist on diagonal lines in relation to the square pixels that exist on your screen. In this tutorial you will use Anti-Aliasing to smudge those "jaggies" in order to create a smoother edge for objects. We achieve this through "Multisampling". Fullscreen AntiAliasing is something that non-realtime rendering programs have always had an advantage in. However, with current hardware, we're able to pull off the same effect real time. The ARB_MULTISAMPLE extension allows us to do this. Like any other Extension based tutorial, if your card does not support the extension used, the effect will not work on your machine or the program may fail to run. This tutorial was written by Colt "MainRoach" McAnlis. If you enjoy it, let him know!"
|
|
|
|
|
|
|
"Wouldn’t it be great to rotate your model at will, just by using the mouse? With an ArcBall you can do just that. In this tutorial Terence J. Grant will touch on his implementation and considerations for adding ArcBall rotation to your own projects. His implementation of the ArcBall class is based on Bretton Wade’s, which is based on Ken Shoemake’s from the Graphic Gems series of books. However, his version has some bug fixing and optimizations. The example code was originally based on lesson 5. It has been spruced up a bit, and now includes code to render a torus, complete with normals. If you enjoy this tutorial send Terence an email and let him know!"
|
|
|
|
|
|
|
"This opengl tutorial is about popping and pushing matrices which attaches certain translations and rotations to certain objects."
|
|
|
|
|
|
|
"Have you ever wanted to create an explosion, water fountain, flaming star, or some other cool effect in your OpenGL program, but writing a particle engine was either too hard, or just too complex? If so, this tutorial is for you. You'll learn how to program a simple but nice looking particle engine. I've thrown in a few extras like a rainbow mode, and lots of keyboard interaction. You'll also learn how to create OpenGL triangle strips. I hope you find the code both useful and entertaining."
|
|
|
|
|
|
|
"OpenGL Creating a simple Particle Engine This tutorial is about creating a simple particle engine."
|
|
|
21
|
Effects
|
These lessons will teach you how to make some cool effects with OpenGL.
|
|
|
|
|
|
"This tutorial code brought to you by Bosco. The same guy that created the totally cool mini demo called worthless. He enjoyed everyones reaction to his demo, and decided to go one step further and explain how he does the cool effect at the end of his demo. This tutorial builds on the code from lesson 6. By the end of the tutorial you should be able to bend fold and manipulate textures of your own. It's definitely a nice effect, and alot better than flat non moving textures. If you enjoy the tutorial, please email bosco and let him know."
|
|
|
|
|
|
|
"This tutorial code was written by Piotr Cieslak. Learn how to load simple objects from a text file, and morph smoothly from one object into another. The effect in this tutorial has to be seen to be appreciated. The effect taught in this demo can be used to animated objects similar to the swimming dolphin in my Dolphin demo, or to twist and bend objects into many different shapes. You can also modify the code to use lines or solid polygons. Great effect! Hope you appreciate Piotr's work!"
|
|
|
|
|
|
|
"David Nikdel is the man behind this super cool tutorial. Learn how to create bezier patches. Learn how to alter a surface by modifying control points. The surface being altered is fully texture mapped, the animation is smooth! Left and Right arrow keys rotate the object while the Up and Down arrows raise and lower the resolution. This tutorial also eliminates the fullscreen problems a few of you have been having! Thanks to David for modifying the code! If you appreciate his work, let him know!"
|
|
|
|
|
|
|
"This tutorial was written by Dario Corno, also known as rIO of SpinningKids. The code / html commenting and a rewrite of the tutorial was done by me (NeHe). This tutorial will show you how to create an extremely impressive Radial Blur effect. It should run fast on just about every type of hardware, and does not require the use of extensions. This tutorial will also teach you how to render to a texture using the off-screen buffer. A topic I'm sure many of you are interested in! It's important to note that there is very little explanation of the GL commands. By now you should know what they do! If you find any mistakes in this tutorial let me know!"
|
|
|
|
|
|
|
"This tutorial was written by Sami "MENTAL" Hamlaoui. Orignally this code was published as an article on GameDev.net. After the article was published, Sami was flooded with request from people interested in getting their hands on the source code. Sami hacked together some code using the NeHeGL basecode, wrote up a rough .TXT format tutorial, and emailed me the entire package. Great news for all the NeHe Productions visitors!!! This tutorial will teach you Cel-Shading. A very cool effect that makes images look like cartoons! If you enjoy this tutorial email the author and let him know!"
|
|
|
|
|
|
|
"Learn how to do lens flares by extending a glCamera class. If you look at a lens flare you will notice that they all share one thing in common. They all seem to move through the center of the screen. With this in mind you could actually just throw out the z coordinate and make your flares all 2D. The only problem with this approach is without a z coordinate how do you find out if the camera is looking at the light source or not? In this tutorial we will be making 3D lens flares so get ready for a little bit of math. Occlusion test by Dario Corno a.k.a. rIO of Spinning Kids."
|
|
|
|
|
|
|
"Using vertex and fragment (or pixel) shaders to do some rendering dirty work can have numerous benefits. The most obvious is the movement of some of the graphics related CPU load off the CPU and onto the GPU. Cg provides a (reasonably) simple language for writing very powerful shaders. This tutorial has multiple aims. The first is to present a simple vertex shader that actually does something, without introducing unnecessary lighting etc… The second is to provide the basic mechanism for running the vertex shader with visible results using OpenGL. As such, it is aimed at the beginner interested in Cg who has a little experience in OpenGL. This tutorial was written by Owen Bourne. If you enjoy it, please take the time to email him and let him know!"
|
|
|
22
|
Physics
|
Here are some physics tutorials. I
|
|
|
|
|
|
"This tutorial was written by Erkin Tunca. It demonstrates motion under gravity, a mass with constant velocity, and a mass connected to a spring. An excellent introduction to physical simulation in projects of your own. The code is based on the latest NeHeGL code and the bitmap font code from lesson 14. It features keyboard interaction and heavy commenting. If you enjoy this tutorial email the author and let him know. A second more advanced Physical Simulation tut is already in the works!"
|
|
|
|
|
|
|
"This tutorial was written by Erkin Tunca and is part two of his two part series on physical simulations. Control a rope with keys on your keyboard. Watch as the rope swings and the tail drags across the ground. A very cool effect! The code is based on the latest NeHeGL code and features keyboard interaction and heavy commenting. If you enjoy this tutorial email the author and let him know. He did an amazing job writing both tuts, and released this tut just a few weeks after the first."
|
|
|