Summary Introduction Introduction OpenGL OpenTK Getting a window Setting up the window Using callbacks Going fullscreen Your code Input OpenGL States and Primitives State functions Errors and Hints Handling Primitives Vertex Points Lines Polygons Triangles Quadrilaterals and Polygons Attributes Transformations And Matrices Understanding Coordinate Transformations Transformation Deep Dive OpenGL and Matrices ModelView Translation Rotation Scale View Function Order Solution Matrix Stacks Projections Viewport Mr.Roboto Parent Child CustomMatrices Projection & LookAt Make your own stack Solar System What goes where Colors and Lights Using Colors Shading On Your Own Lighting Light Sources Position and direction Light Color Attenuation Spotlights Moving and Rotating Programming Exercises Directional Light Point Light Spot Light Materials Defining Materials Test Scene Ambient and Diffuse Specular Color Tracking Normals The Lighting Model Lighting Review Blending and Fog Blending Challenge Solution Issues Fog Texture Mapping Overview Enable Texturing Texture Objects Texture Binding Specifying Textures Min & Mag Filters Deleting Textures Texture Coordinates Putting it all together Loading Help Mip Mapping Texture Paramaters Textures for UI On your own Sorting Objects Particles Design Particles Particle Systems Implementation Particle Particle System Snow Example Optimization Vertex Arrays Array Based Data Enabling Vertex Arrays Working With Arrays Pinning and Pointers DrawArrays DrawElements Example Vertex Buffers Generate and Bind Fill data Render Cleanup Review On Your Own Loading Meshes Implementation Test it Resource Management Design Implementation Helper Functions Public API On Your Own Sample Usage Implementing a camera Halfspace Culling Frustum Culling Advanced Topics Multi-Texturing Sub Textures Billboarding Normal Mapping Specular Mapping Ambient Occlusion Outlines Planar Shadows Stencyl Shadows Shadow Mapping Reflections Cube Mapped Reflections Particles Motion Blur Terrains