Source License

All source code on this site, unless explicitly stated otherwise, is licensed under the "New" BSD License. The license should appear near the top of each source file (if you find any that are missing it, please let me know!) and looks something like this:

Copyright (c) 2007, Brandon Jones
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of copyright holder nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

For those of you not fluent in legalese (like me) what all of that means is this basically:

  •  You may use and modify the code for any purpose, personal or commercial, and are not required to release your modified code.
  • If you do redistribute the code, modified or not, you may not remove the license from the top of it.
  • If you release a binary that uses the code you must include the license with it somewhere (like a readme).
  • You can't claim that I endorse your product simply because some of my code was used. (If you really want my endorsement for any reason, email me about it first.)
  • Finally, though I certainly don't intend my code to be harmful, if your system or any programs are damaged or behave strangely because of my code, I cannot be held liable.

Basically, I want to give you the maximum amount of freedom with the code while making sure I'm covered legally and that people don't try to claim my work as their own. If you want a more in-depth look at the license you can check out the Wikipedia page or just Google "BSD License."

OpenGL 3 delayed

So today the Khronos group announced that the OpenGL 3 spec was *Gasp!* Not done! One would imagine that the fact that we don't have it yet would be indication enough of that, but I suppose it's nice to be all official about it... :)

In all seriousness, though, the announcement was made in this thread on the OpenGL forums and the reasons cited are simply that they don't want to release a flawed product. To quote the thread:

Rest assured we are working as hard as we can on getting the specification done. The ARB meets 5 times a week, and has done so for the last two months, to get this out to you as soon as possible. Getting a solid specification put together will also help us with the follow-ons to OpenGL 3: OpenGL Longs Peak Reloaded and Mount Evans. We don't want to spend time fixing mistakes made in haste.

Hey, sounds good to me. If I have to wait a few extra months now to prevent years of frustration and cursing later I'll gladly do it! But this also raises the question of what's going to happen with this site in the mean time. After all the title IS Toji's OpenGL 3 tutorials, and I probably won't have many of those if I don't have an OpenGL 3 to work with.

Well, I'm certainly not content to sit around and wait so I've decided to backtrack on my original plans a bit. First off, while I still intend to pair the existing to tutorial code with it's OpenGL 3 equivalent when I can I've decided that in the mean time I'm going to flesh out the tutorials I have a little bit more, add some new ones, and actually start to add some tutorial text to go along with it. While the title of the site won't change, until the spec is ready I intend to turn this page into a full-fledged OpenGL 2.1 tutorial site.

Along those lines, I plan on adding at least one more tutorial about image quality settings such as FSAA, Anisotropic Filtering, and Vsync, and adding a non-tutorial code sample for creating an OpenGL Screensaver. Once those are up and I've had a chance to add some tutorial text, I'll then actually start promoting the site on various other development sites to start getting feedback from other developers. Hopefully this will mean that by the time the GL3 spec DOES roll out (which will probably be Dec 07/Jan 08) the tutorials that we are converting will be rock-solid!

Wish me luck!

Tutorials

A list of each OpenGL 3 Tutorial by category

Core Concepts

  • Tutorial 01 - OpenGL Window: [2.1]
  • Tutorial 02 - Drawing Geometry: [2.1]
  • Tutorial 03 - Matrices: [2.1]
  • Tutorial 04 - Indexed Geometry: [2.1]
  • Tutorial 05 - Texture Mapping: [2.1]
  • Tutorial 06 - Multitexture: [2.1]
  • Tutorial 07 - Render to Texture: [2.1]

Shader Techniques

  • Coming Soon

3rd Party Libraries & Utilities

  • Coming Soon

Tutorial 07 - Render to Texture [2.1]

Screenshot_07.jpg

[SOURCE, BIN - Win32] 07 - Render to Texture (2.1).zip

Rendering a scene to a texture which can then be bound and rendered itself

(more...)

Tutorial 06 - Multitexture [2.1]

Screenshot_06.jpg

[SOURCE, BIN - Win32] 06 - Multitexture (2.1).zip

Binding multiple textures at a time and blending them together in a shader

(more...)

Tutorial 05 - Texture Mapping [2.1]

Screenshot_05.jpg

[SOURCE, BIN - Win32] 05 - Texture Mapping (2.1).zip

The key to just about every modern graphics technique out there, texture mapping gives flat surfaces, well, texture! Also covered is linear, bilinear, and trilinear filtering.

(more...)

Tutorial 04 - Indexed Geometry [2.1]

Screenshot_04.jpg

[SOURCE, BIN - Win32] 04 - Indexed Geometry (2.1).zip

Using indexed geometry to drastically lower the amount of data that needs to be stored to render a mesh

(more...)

Tutorial 03 - Matrices [2.1]

Screenshot_03.jpg

[SOURCE, BIN - Win32] 03 - Matricies (2.1).zip

Rotating and transforming the viewport to create a simple "camera" system. Also covers basic mouse input.

(more...)

Tutorial 02 - Drawing Geometry [2.1]

Screenshot_02.jpg

[SOURCE, BIN - Win32] 02 - Drawing Geometry (2.1).zip

How to render polygonal geometry using Vertex Buffer Objects

(more...)

Tutorial 01 - OpenGL Window [2.1]

Screenshot_01.jpg

[SOURCE, BIN - Win32] 01 - OpenGL Window (2.1).zip

Covers the basics of creating an OpenGL window and how to use the OpenGL Window class that serves as the basis for future tutorials.

(more...)