OpenGL Programming
Welcome to the OpenGL Programming book. OpenGL is an API used for drawing 3D graphics. OpenGL is not a programming language; an OpenGL application is typically written in C or C++. What OpenGL does allow you to do is draw attractive, realistic 3D graphics with minimal effort. The API is typically used to interact with a GPU, to achieve hardware-accelerated rendering.
You are free, and encouraged, to share and contribute to this wikibook: it is written in the spirit of free documentation, that belongs to humanity. Feel free to make copies, teach it in school or professional classes, improve the text, write comments or even new sections.
We're looking for contributors. If you know about OpenGL, feel free to leave comments, expand TODO sections and write new ones!
|
|
Also see the GLSL Programming book. |
Wikipedia has related information at OpenGL |
Contents
|
[edit] Introduction
- About this book
- History and Evolution of OpenGL
[edit] Setting Up OpenGL
- Installation on GNU/Linux
- Installation on Macintosh
- Installation on Windows with Code::Blocks
- Installation for Android NDK development
- with a GLUT-like wrapper to follow the exercises
- Installation for iPhone development
- Installing GLUT
[edit] Modern OpenGL
"Modern" OpenGL is about OpenGL 2.1+, OpenGL ES 2.0+ and WebGL, with a programmable pipeline and shaders.
[edit] The basics arc
01 |
|
Tutorial 01: newcomer's introduction, first dive into shaders | 02 |
|
Tutorial 02: adding more robustness to our code, transparency |
03 |
|
Tutorial 03: passing information to shaders: attributes, varying and uniforms | 04 |
|
Tutorial 04: transformation matrices: positioning and rotating |
05 |
|
Tutorial 05: adding the 3rd dimension: a cube, plus a camera | 06 |
|
Tutorial 06: textures: displaying a wooden cube |
07 |
|
OBJ format: loading Suzanne the monkey from Blender | 08 |
|
Navigation: navigate in 3D space and manipulate objects in our model viewer |
Tutorial_drafts: ideas and notes for upcoming tutorials
[edit] The lighting arc
This series of tutorials is a C++ port of the GLSL wikibook Basic Lighting tutorials.
01 |
|
Diffuse Reflection: about per-vertex diffuse lighting and multiple light sources of different kinds | 02 |
|
Specular Highlights: about per-vertex lighting |
03 |
|
Two-Sided Surfaces (about two-sided per-vertex lighting) | 04 |
|
Smooth Specular Highlights (about per-pixel lighting) |
05 |
|
Two-Sided Smooth Surfaces (about two-sided per-pixel lighting) | 06 |
|
Multiple Lights (about for-loops for handling multiple light sources) |
This series of tutorials is a C++ port of the GLSL wikibook Basic Texturing tutorials.
01 |
|
Textured Spheres: about texturing a sphere | 02 |
|
Lighting Textured Surfaces: about textures for diffuse lighting |
03 |
|
Glossy Textures: about gloss mapping | 04 |
|
Transparent Textures: about using alpha textures for discarding fragments, alpha testing, and blending |
05 |
|
Layers of Textures: about multitexturing |
This series of tutorials is a C++ port of the GLSL wikibook tutorials about Textures in 3D.
01 |
|
Lighting of Bumpy Surfaces: about normal mapping | 02 |
|
Projection of Bumpy Surfaces: about parallax mapping |
03 |
|
Cookies: about projective texture mapping for shaping light | 04 |
|
Light Attenuation: about texture mapping for light attenuation and lookup tables in general |
05 |
|
Projectors: about projective texture mapping for projectors |
There are more tutorials to port at the GLSL wikibook!
[edit] The scientific arc
01 |
|