If you're running AdBlock, please consider whitelisting this site if you'd like to support LearnOpenGL; and no worries, I won't be mad if you don't :)

How to publish


If you'd like to write your own article and have it published on LearnOpenGL for everyone to read you can send over your article to me by e-mail. By having interested readers publish their own articles on LearnOpenGL I hope this website will be more than just an online book, but a more centralized knowledge platform for everything OpenGL.

If you'd like to publish an article you'll want to follow the following guidelines:

  • Article should be OpenGL related. Articles may be technical e.g. How to use glDrawArraysIndirect and compute shaders to efficiently render large scenes, or sementical e.g. How I learned OpenGL in 30 days.
  • Article needs to have a positive impact on LearnOpenGL e.g. be educational, informative, inspirational.
  • Article should be written in a style similar to LearnOpenGL: a more step-by-step approach to writing tutorials.
  • When using shaders and/or a camera, make sure to use LearnOpenGL's shader and camera includes for consistency with all the other articles. Similarly, use GLFW and GLAD.
  • Article should use HTML tags to organize its layout. There is a source page you can find here as an example (replace .txt extension with .html to view as HTML). Additionally, copy this example CSS file in the same folder to test with similar styling/layout.
  • Add target="_blank" to your URLs/links (see example page) so pages open in a new tab by default.
  • When using the < or > symbol it may break the page as these are used for HTML tags. Use &lt; and &gt; instead.
  • Images/videos can be referenced by URL. If you'd like to use locally hosted images/videos, send them alongside your article and reference them as `/img/guest/<year>/<your_article_name>/<image.png>` with `<your_article_name>` in lowercase and seperated by underlines.
  • When displaying code in your article, make sure to use spaces over tabs (4 spaces per tab).
  • If the article is technical, try to keep the code as self-contained (and as few files) as possible. And make the full source code available.
  • It's perfectly fine to have your article be a series of articles e.g. Terrain rendering tutorial part X/5.
  • When referencing original LearnOpenGL chapters, try to link to them and use the word Chapter over article/tutorial to keep that online 'book' feeling.
  • Article should of course be technically and mathematically sound.
  • Preferably keep the article name short so it fits in the sidebar :)
  • Check with me first before you start as someone else may already be working on the same topic or the topic doesn't match well.

As I intend to keep the quality-bar high, I'll be thorough in enforcing these restrictions. This means there's a good chance I'll reject your article, or return it with a significant amount of feedback. Nevertheless, if you followed the guidelines and generally make for an interesting article that adds something on top of the already existing content it's likely your article ends up on LearnOpenGL.

When you submit an article, please mention your full name, and a link to your website/blog if you'd like the additional exposure.

Topic suggestions

If you'd like to contribute but don't know what to write about, the following topics are a selection of highly requested topics:

  • Frustum Culling
  • Casaded Shadow Mapping
  • Depth of Field
  • Motion Blur
  • Temporal AA
  • Compute Shaders
  • OpenGL 4+ features
  • Tesselation Shaders
  • Reflection Probes (and in-between blending)
  • Heightmaps (with dynamic LOD-ing using quadtree or octree, and layers for grass/mud/sand/rock textures)
  • Lens flares
  • Decals
  • GPU particle effects
  • Global Illumination
  • Light Adaptation
  • HBAO+
  • Water Simulation
  • Forward+ Rendering
  • GPU programming, creating optimized shaders
  • Procedural clouds/sky