# Modern OpenGL Tutorials

For those that don't know, OpenGL is graphics API used for realtime 3D graphics especially in game development. I've been learning it on and off for a few years, but have been making some big strides lately. A big problem for newbies like myself learning this API that most of the information on the web is completely outdated. There are tons of tutorials out there based on functionality that has been deprecated for years. The modern techniques used to program with OpenGL are also far faster and take advantage of today's powerful video cards to a far greater degree. As I said, I am certainly newbie, but I'll be sharing what I've learned so far on this page in the form of tutorials. The newest tutorials will be toward the bottom of the page.

### Setting Up

One of the biggest pains is getting your development environment working with OpenGL and various other libraries that are useful or necessary. When you finally get everything all set up and get that spinning triangle showing up on the screen; there is a sigh of relief. You no longer have to deal with silly stuff like linking, header files, and context creation; and you'll be able to get down to doing awesome 3D graphics and hopefully games. In this article, I've attempted to walk you through the process of installing the Code::Blocks IDE (with MinGW), GLFW, and GLEW. Then, we configure everything to work together and finally run the test code to verify it all works. If you are a beginner at this stuff, this is the place to start.

### Vertex Buffer Objects

VBOs are chunks of GPU memory used to store data that is to be rendered. On this page we'll walk through an example that builds a spinning triangle and learn how to feed data like coordinates to the video card for rendering. The page also touches on the fixed-function pipeline, double buffering, shaders, and the main game loop.

### Matrices

Transformation matrices are used to transform vertex coordinates from one space to another. They used to position objects in 3d space and also to transform 3d coordinates into 2d points for display. This page provides a brief overview of the various matrices that you will likely use when writing OpenGL applications. We'll also touch on some basic linear algebra. The relationships between these matrices and the ways that they are used are not easy to learn and fully understand. The sooner you begin and the more you read about them from different sources, the faster it will all *click*.