<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" version="2.0">
  <channel>
    <title>Tom Dalling</title>
    <link>https://www.tomdalling.com/?utm_source=rss&amp;utm_medium=rss</link>
    <atom:link href="https://www.tomdalling.com/blog/tagged/modern-opengl/feed/" rel="self" type="application/rss+xml"/>
    <description>Web &amp; software developer</description>
    <language>en</language>
    <generator>Tom Dalling's fingertips</generator>
    <sy:updatePeriod>daily</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, &amp; Multiple Lights</title>
      <link>https://www.tomdalling.com/blog/08-even-more-lighting-directional-lights-spotlights-multiple-lights/?utm_source=rss&amp;utm_medium=rss</link>
      <description><![CDATA[<p>In this article, we will be adding directional lights, spotlights, and allowing
for multiple lights instead of just one. This is the final article on lighting
– at least for a while.</p>
]]></description>
      <pubDate>Sat, 01 Nov 2014 00:00:00 -0000</pubDate>
      <category><![CDATA[Modern OpenGL Series]]></category>
      <guid isPermaLink="false">com.tomdalling.modern-opengl-series.08</guid>
    </item>
    <item>
      <title>OpenGL in 2014</title>
      <link>https://www.tomdalling.com/blog/opengl-in-2014/?utm_source=rss&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Valve is investing in OpenGL to hedge themselves against Microsoft. Some
well-known developers have written about the deficiencies in the API. A few
competing, proprietary APIs have popped up. In an effort to remain competitive,
Khronos announces glnext: a ground-up rethinking of the OpenGL and OpenGL ES
APIs. This post will look at developments in the OpenGL ecosystem over the last
couple of years.</p>
]]></description>
      <pubDate>Sun, 21 Sep 2014 00:00:00 -0000</pubDate>
      <category><![CDATA[Modern OpenGL Series]]></category>
      <guid isPermaLink="false">com.tomdalling.blog.opengl-in-2014</guid>
    </item>
    <item>
      <title>Explaining Homogeneous Coordinates &amp; Projective Geometry</title>
      <link>https://www.tomdalling.com/blog/explaining-homogenous-coordinates-and-projective-geometry/?utm_source=rss&amp;utm_medium=rss</link>
      <description><![CDATA[<p>In this article I’m going to explain homogeneous coordinates (a.k.a. 4D
coordinates) as simply as I can. In previous articles, we’ve used 4D vectors
for matrix multiplication, but I’ve never really defined what the fourth
dimension actually is. Now it’s time to take a closer look at projective
geometry.</p>

<p>Also, welcome back! It has been a while since my last post. Hopefully I will
find some time in the next couple of months to finish up the <a href="http://tomdalling.com/blog/category/modern-opengl/">Modern OpenGL
Series</a> of articles. The code for article 08 is done, but writing the article
will take some time.</p>
]]></description>
      <pubDate>Mon, 24 Feb 2014 00:00:00 -0000</pubDate>
      <category><![CDATA[Modern OpenGL Series]]></category>
      <guid isPermaLink="false">1388 http://tomdalling.com/?p=1388</guid>
    </item>
    <item>
      <title>Modern OpenGL 07 – More Lighting: Ambient, Specular, Attenuation, Gamma</title>
      <link>https://www.tomdalling.com/blog/07-more-lighting-ambient-specular-attenuation-gamma/?utm_source=rss&amp;utm_medium=rss</link>
      <description><![CDATA[<p>In this article we will continue to implement lighting. We will implement the
ambient and specular components of the Phong reflection model, attenuation, and
gamma correction.</p>
]]></description>
      <pubDate>Thu, 18 Apr 2013 00:00:00 -0000</pubDate>
      <category><![CDATA[Modern OpenGL Series]]></category>
      <guid isPermaLink="false">1282 http://tomdalling.com/?p=1282</guid>
    </item>
    <item>
      <title>Modern OpenGL 06 – Diffuse Point Lighting</title>
      <link>https://www.tomdalling.com/blog/06-diffuse-point-lighting/?utm_source=rss&amp;utm_medium=rss</link>
      <description><![CDATA[<p>This is the first article covering lighting. We will begin our lighting
adventure by implementing per-pixel, diffuse lighting with a single point
light. In later articles we will implement ambient and specular reflection,
directional lights, spotlights, attenuation, and using multiple lights.</p>
]]></description>
      <pubDate>Sat, 23 Mar 2013 00:00:00 -0000</pubDate>
      <category><![CDATA[Modern OpenGL Series]]></category>
      <guid isPermaLink="false">1139 http://tomdalling.com/?p=1139</guid>
    </item>
    <item>
      <title>Modern OpenGL 05 – Model Assets &amp; Instances</title>
      <link>https://www.tomdalling.com/blog/05-model-assets-and-instances/?utm_source=rss&amp;utm_medium=rss</link>
      <description><![CDATA[<p>In this article, we will be refactoring the code to be more like a 3D
engine/framework. Specifically, we will be replacing some of the globals with
structs that represent “assets” and “instances.” At the end, we will have a
single wooden crate asset, and five instances of that asset arranged to spell
out “Hi” in 3D.</p>
]]></description>
      <pubDate>Fri, 08 Feb 2013 00:00:00 -0000</pubDate>
      <category><![CDATA[Modern OpenGL Series]]></category>
      <guid isPermaLink="false">1104 http://tomdalling.com/?p=1104</guid>
    </item>
    <item>
      <title>Modern OpenGL 04 - Cameras, Vectors &amp; Input</title>
      <link>https://www.tomdalling.com/blog/04-cameras-vectors-and-input/?utm_source=rss&amp;utm_medium=rss</link>
      <description><![CDATA[<p>In this article, we will be consolidating the matrix and camera knowledge from
the previous article into the new <code>tdogl::Camera</code> class, which will be a
first-person shooter type of camera. Then, we will connect the camera to
keyboard and mouse input, so we can move within the 3D scene and look around.
This will involve learning a bit of vector math. We will also learn about
inverting matrices, which was not mentioned in the previous article.</p>
]]></description>
      <pubDate>Mon, 21 Jan 2013 00:00:00 -0000</pubDate>
      <category><![CDATA[Modern OpenGL Series]]></category>
      <guid isPermaLink="false">989 http://tomdalling.com/?p=989</guid>
    </item>
    <item>
      <title>Modern OpenGL 03 - Matrices, Depth Buffering, Animation</title>
      <link>https://www.tomdalling.com/blog/03-matrices-depth-buffering-animation/?utm_source=rss&amp;utm_medium=rss</link>
      <description><![CDATA[<p>In this article, we will replace our immobile 2D triangle with a spinning 3D
cube. The end result will look like this:</p>

<p>
  <figure class="black">
    <img src="/images/posts/modern-opengl-03/rotating-crate.gif">
  </figure>
</p>

<p>Now that we’re finally getting something interesting on the screen, I can
include more pictures! An album of animated gifs is available here:
<a href="http://imgur.com/a/x8q7R">http://imgur.com/a/x8q7R</a></p>

<p>In order to make this spinning cube, we will learn a bit about matrix math, and
how it is used to create perspective projections, rotation, translation, and
the concept of a “camera.” We will also learn about depth buffering, and why it
is necessary. We will also see how a typical 3D application implements changes
over time, such as animation.</p>
]]></description>
      <pubDate>Sun, 16 Dec 2012 00:00:00 -0000</pubDate>
      <category><![CDATA[Modern OpenGL Series]]></category>
      <guid isPermaLink="false">879 http://tomdalling.com/?p=879</guid>
    </item>
    <item>
      <title>Modern OpenGL 02 - Textures</title>
      <link>https://www.tomdalling.com/blog/02-textures/?utm_source=rss&amp;utm_medium=rss</link>
      <description><![CDATA[<p>In this article, we will be adding a texture to the triangle. This will involve
adding new variables to the vertex and fragment shaders, creating and using
texture objects, and learning a bit about texture units and texture
coordinates.</p>

<p>This article introduces two new classes to the <code>tdogl</code> namespace:
<code>tdogl::Bitmap</code> and <code>tdogl::Texture</code>. These will allow us to load an image from
a jpg, png, or bmp file into video memory, for use in the shaders. Also, the
<code>tdogl::Program</code> class has some new methods for setting shader variables.</p>
]]></description>
      <pubDate>Sun, 02 Dec 2012 00:00:00 -0000</pubDate>
      <category><![CDATA[Modern OpenGL Series]]></category>
      <guid isPermaLink="false">821 http://tomdalling.com/?p=821</guid>
    </item>
    <item>
      <title>Modern OpenGL 01 - Getting Started in Xcode, Visual C++, and Linux</title>
      <link>https://www.tomdalling.com/blog/01-getting-started-in-xcode-and-visual-cpp/?utm_source=rss&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Welcome to the first of a series of articles about modern OpenGL.  All the code
will be open source, and downloadable from github:
<a href="https://github.com/tomdalling/opengl-series">https://github.com/tomdalling/opengl-series</a>.</p>

<p>By the end of this article, you will have a working OpenGL 3.2 project in
Visual Studio 2013 on Windows, and Xcode on OSX. The app will have a vertex
shader, a fragment shader, and will display a single triangle using a VAO and a
VBO. The project will use <a href="http://glew.sourceforge.net/">GLEW</a> to access the OpenGL API, <a href="http://www.glfw.org/">GLFW</a> to handle
window creation and input, and <a href="http://glm.g-truc.net/">GLM</a> for matrix/vector math.</p>

<p>Yes, it is a little bit boring, but just getting a project set up correctly can
be difficult, especially for beginners. Once this is out of the way we will get
into the more interesting stuff.</p>
]]></description>
      <pubDate>Sat, 24 Nov 2012 00:00:00 -0000</pubDate>
      <category><![CDATA[Modern OpenGL Series]]></category>
      <guid isPermaLink="false">729 http://tomdalling.com/?p=729</guid>
    </item>
  </channel>
</rss>
