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!





Introduction [ edit ]

Setting Up OpenGL [ edit ]

Modern OpenGL [ edit ]

"Modern" OpenGL is about OpenGL 2.1+, OpenGL ES 2.0+ and WebGL, with a programmable pipeline and shaders.

The basics arc [ edit ]

Tutorial_drafts: ideas and notes for upcoming tutorials

The lighting arc [ edit ]

This series of tutorials is a C++ port of the GLSL wikibook Basic Lighting tutorials.

This series of tutorials is a C++ port of the GLSL wikibook Basic Texturing tutorials.

This series of tutorials is a C++ port of the GLSL wikibook tutorials about Textures in 3D.

There are more tutorials to port at the GLSL wikibook!

The scientific arc [ edit ]

And more to come.

Selected topics [ edit ]

The post-processing arc [ edit ]

01 Concepts: how to perform full-screen post-processing, first example with a simple animated wave 02 ???: next effect to be decided!

This series shows how to implement a teleportation system similar to Valve's Portal, step-by-step, using OpenGL.

Glescraft [ edit ]

This series shows how to render a voxel based world, similar to Minecraft.

Using the accumulation buffer [ edit ]

Note: not all videocards support accumulation buffer

Cutting-edge OpenGL [ edit ]

If you do not target old mobile devices or the web, you can upgrade to OpenGL (ES) 3.x / 4.x. It notably introduces new kinds of shaders: Geometry, Tessellation Control and Tessellation Evaluation, and Compute.

01 Tutorial 01: modify and create vertices on the fly with geometry shaders 02 Tutorial 02: dynamic mesh quality with tesselation

and lots of other features.

Code quality [ edit ]

01 Debugging: tips to help debug your OpenGL code 02 Performance: measuring and improving your application performance.

Appendices [ edit ]

Legacy OpenGL 1.x [ edit ]

"Legacy" OpenGL is about OpenGL 1.x and OpenGL ES 1.x, with a fixed pipeline and no shaders.

Starting Tutorial [ edit ]

Basics [ edit ]

Intermediate [ edit ]

Advanced [ edit ]

Appendices [ edit ]

Wikibooks [ edit ]

Related WikiBooks:

GLSL Programming : wikibook on the use of the OpenGL Shading Language (GLSL) in Unity 3 and Blender 2.5, with much information on lighting and texturing

Blender 3D: Noob to Pro: comprehensive book on using the Blender 3D modeling environment

an open source, cross-platform IDE's for exploring pixel based graphics on the GPU using GLSL : Fragmentarium Shadertoy



Ports [ edit ]

The following websites provide conversion of the tutorials to other programming languages or platforms:

Freely-licensed documentation and samples [ edit ]

Non-freely-licensed documentation [ edit ]

Websites [ edit ]

Further reading [ edit ]

OpenGL Architecture Review Board, et al: OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2, Fifth Edition, Addison-Wesley, ISBN 0-321-33573-2

OpenGL Architecture Review Board, et al: OpenGL Reference Manual: The Official Reference Document to OpenGL, Version 1.4, Addison-Wesley, ISBN 0-321-17383-X

Wright, Richard S. Jr and Lipchak, Benjamin: OpenGL SuperBible, Third Edition, Sams Publishing, ISBN 0-672-32601-9

< OpenGL Programming



