<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.oni2.net/w/index.php?action=history&amp;feed=atom&amp;title=OpenGL</id>
	<title>OpenGL - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.oni2.net/w/index.php?action=history&amp;feed=atom&amp;title=OpenGL"/>
	<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OpenGL&amp;action=history"/>
	<updated>2026-05-02T04:56:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OpenGL&amp;diff=39314&amp;oldid=prev</id>
		<title>Iritscen: replacing 404 link with archive link</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OpenGL&amp;diff=39314&amp;oldid=prev"/>
		<updated>2023-03-05T14:39:52Z</updated>

		<summary type="html">&lt;p&gt;replacing 404 link with archive link&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:39, 5 March 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Learning OpenGL==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Learning OpenGL==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you are looking for an introduction to modern OpenGL, with shaders and such, then [http://www.opengl-tutorial.org/ opengl-tutorial.org] is a good place to look. [https://www.3dgep.com/introduction-to-opengl-and-glsl/#OpenGL_1x_Fixed-Function_Pipeline THIS] mini-tutorial is also a good place to start, as it fully details the creation of an interactive OpenGL/freeglut app (however, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;the camera class used by the author is no longer available for download).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you are looking for an introduction to modern OpenGL, with shaders and such, then [http://www.opengl-tutorial.org/ opengl-tutorial.org] is a good place to look. [&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http://web.archive.org/web/20221114170719/&lt;/ins&gt;https://www.3dgep.com/introduction-to-opengl-and-glsl/#OpenGL_1x_Fixed-Function_Pipeline THIS] mini-tutorial is also a good place to start, as it fully details the creation of an interactive OpenGL/freeglut app (however, the camera class used by the author is no longer available for download).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you are more specifically interested in normal mapping, then a really neat GLSL snippet can be found [http://www.geeks3d.com/20130122/normal-mapping-without-precomputed-tangent-space-vectors/ HERE] (an implementation of normal mapping that uses no precomputed TBN matrices and does all the tangent space math at shader level).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you are more specifically interested in normal mapping, then a really neat GLSL snippet can be found [http://www.geeks3d.com/20130122/normal-mapping-without-precomputed-tangent-space-vectors/ HERE] (an implementation of normal mapping that uses no precomputed TBN matrices and does all the tangent space math at shader level).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OpenGL&amp;diff=38160&amp;oldid=prev</id>
		<title>Iritscen: using archived page for 404 link</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OpenGL&amp;diff=38160&amp;oldid=prev"/>
		<updated>2022-07-11T02:52:05Z</updated>

		<summary type="html">&lt;p&gt;using archived page for 404 link&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:52, 11 July 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;OpenGL is what Oni uses for rendering in-game components as well as the menu system and splashscreens – basically everything you see, except for those dialogs and window elements that are handled directly by the operating system (e.g., &amp;quot;[[Troubleshooting/Blam|Blam]]&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;OpenGL is what Oni uses for rendering in-game components as well as the menu system and splashscreens – basically everything you see, except for those dialogs and window elements that are handled directly by the operating system (e.g., &amp;quot;[[Troubleshooting/Blam|Blam]]&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Oni&amp;#039;s development in the late &amp;#039;90s corresponds to an era when GFX hardware was booming&amp;lt;ref&amp;gt;Quake (1996) is [https://popculthq.com/2018/02/26/evolution-polygons-3d-video-game-graphics/ widely regarded] as having played a key part in the breakthrough of real-time 3D technology in the late &amp;#039;90s. See [[wp:First-person_shooter|First-person shooter]] (Wikipedia) for a more detailed account citing other noteworthy games such as Half-Life (1998).&amp;lt;/ref&amp;gt;, but the compatibility standards of such frameworks as OpenGL were still emergent. Starting with OpenGL 1.2.1 (October 1998), new OpenGL features were subject to approval by the Architecture Review Board (the &amp;quot;ARB extensions&amp;quot; concept), based on wide enough availability and reliability on the hardware side. Multitexturing (&amp;quot;GL_ARB_multitexture&amp;quot;) was the only extension officially introduced by the OpenGL 1.2.1 spec (section F.2), but other extensions were gradually added on the way to OpenGL 1.3 (August 2001).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Oni&amp;#039;s development in the late &amp;#039;90s corresponds to an era when GFX hardware was booming&amp;lt;ref&amp;gt;Quake (1996) is [&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http://web.archive.org/web/20220515195126/&lt;/ins&gt;https://popculthq.com/2018/02/26/evolution-polygons-3d-video-game-graphics/ widely regarded] as having played a key part in the breakthrough of real-time 3D technology in the late &amp;#039;90s. See [[wp:First-person_shooter|First-person shooter]] (Wikipedia) for a more detailed account citing other noteworthy games such as Half-Life (1998).&amp;lt;/ref&amp;gt;, but the compatibility standards of such frameworks as OpenGL were still emergent. Starting with OpenGL 1.2.1 (October 1998), new OpenGL features were subject to approval by the Architecture Review Board (the &amp;quot;ARB extensions&amp;quot; concept), based on wide enough availability and reliability on the hardware side. Multitexturing (&amp;quot;GL_ARB_multitexture&amp;quot;) was the only extension officially introduced by the OpenGL 1.2.1 spec (section F.2), but other extensions were gradually added on the way to OpenGL 1.3 (August 2001).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==OpenGL in Oni==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==OpenGL in Oni==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OpenGL&amp;diff=36897&amp;oldid=prev</id>
		<title>Iritscen: the section links in the WP &quot;FPS&quot; article keep changing and the desired material has been split into two sections anyway, so let&#039;s not use a section link; removing mention of Descent because it was removed from the WP article :-(</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OpenGL&amp;diff=36897&amp;oldid=prev"/>
		<updated>2022-03-21T20:56:53Z</updated>

		<summary type="html">&lt;p&gt;the section links in the WP &amp;quot;FPS&amp;quot; article keep changing and the desired material has been split into two sections anyway, so let&amp;#039;s not use a section link; removing mention of Descent because it was removed from the WP article :-(&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:56, 21 March 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;OpenGL is what Oni uses for rendering in-game components as well as the menu system and splashscreens – basically everything you see, except for those dialogs and window elements that are handled directly by the operating system (e.g., &amp;quot;[[Troubleshooting/Blam|Blam]]&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;OpenGL is what Oni uses for rendering in-game components as well as the menu system and splashscreens – basically everything you see, except for those dialogs and window elements that are handled directly by the operating system (e.g., &amp;quot;[[Troubleshooting/Blam|Blam]]&amp;quot;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Oni&amp;#039;s development in the late &amp;#039;90s corresponds to an era when GFX hardware was booming&amp;lt;ref&amp;gt;Quake (1996) is &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;widely regarded as having played a key part in the breakthrough of real-time 3D technology in the late &amp;#039;90s &lt;/del&gt;[https://popculthq.com/2018/02/26/evolution-polygons-3d-video-game-graphics/]. See [[wp:First-person_shooter&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#Advances_in_3D_graphics:_1995–1999&lt;/del&gt;|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;HERE&lt;/del&gt;]] (Wikipedia) for a more detailed account citing other &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;remarkable &lt;/del&gt;games&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;such as &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Descent (1995) or &lt;/del&gt;Half-Life (&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1999&lt;/del&gt;).&amp;lt;/ref&amp;gt;, but the compatibility standards of such frameworks as OpenGL were still emergent. Starting with OpenGL 1.2.1 (October 1998), new OpenGL features were subject to approval by the Architecture Review Board (the &amp;quot;ARB extensions&amp;quot; concept), based on wide enough availability and reliability on the hardware side. Multitexturing (&amp;quot;GL_ARB_multitexture&amp;quot;) was the only extension officially introduced by the OpenGL 1.2.1 spec (section F.2), but other extensions were gradually added on the way to OpenGL 1.3 (August 2001).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Oni&amp;#039;s development in the late &amp;#039;90s corresponds to an era when GFX hardware was booming&amp;lt;ref&amp;gt;Quake (1996) is [https://popculthq.com/2018/02/26/evolution-polygons-3d-video-game-graphics/ &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;widely regarded&lt;/ins&gt;] &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;as having played a key part in the breakthrough of real-time 3D technology in the late &amp;#039;90s&lt;/ins&gt;. See [[wp:First-person_shooter|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;First-person shooter&lt;/ins&gt;]] (Wikipedia) for a more detailed account citing other &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;noteworthy &lt;/ins&gt;games such as Half-Life (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1998&lt;/ins&gt;).&amp;lt;/ref&amp;gt;, but the compatibility standards of such frameworks as OpenGL were still emergent. Starting with OpenGL 1.2.1 (October 1998), new OpenGL features were subject to approval by the Architecture Review Board (the &amp;quot;ARB extensions&amp;quot; concept), based on wide enough availability and reliability on the hardware side. Multitexturing (&amp;quot;GL_ARB_multitexture&amp;quot;) was the only extension officially introduced by the OpenGL 1.2.1 spec (section F.2), but other extensions were gradually added on the way to OpenGL 1.3 (August 2001).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==OpenGL in Oni==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==OpenGL in Oni==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OpenGL&amp;diff=34682&amp;oldid=prev</id>
		<title>Iritscen: /* OpenGL in Oni */ linking to our documentation of Oni&#039;s erstwhile lightmapping, and wiki-linking a definition for Gouraud</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OpenGL&amp;diff=34682&amp;oldid=prev"/>
		<updated>2021-11-07T14:29:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;OpenGL in Oni: &lt;/span&gt; linking to our documentation of Oni&amp;#039;s erstwhile lightmapping, and wiki-linking a definition for Gouraud&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:29, 7 November 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Oni&amp;#039;s release predates OpenGL 1.3 only slightly, so most if not all of the new ARB extensions from the OpenGL 1.3 spec were already approved and available at the time of Oni&amp;#039;s development: most notably, compressed textures (&amp;quot;GL_ARB_texture_compression&amp;quot;, March 2000) and multisampling a.k.a. antialiasing (&amp;quot;GL_ARB_multisample&amp;quot;, December 1999), as well as some environment mapping techniques.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Oni&amp;#039;s release predates OpenGL 1.3 only slightly, so most if not all of the new ARB extensions from the OpenGL 1.3 spec were already approved and available at the time of Oni&amp;#039;s development: most notably, compressed textures (&amp;quot;GL_ARB_texture_compression&amp;quot;, March 2000) and multisampling a.k.a. antialiasing (&amp;quot;GL_ARB_multisample&amp;quot;, December 1999), as well as some environment mapping techniques.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Vertex Buffer Objects (i.e., optimized storage of 3D data at GPU level) were not implemented until OpenGL 1.5 (July 2003), and advanced pixel shaders (GLSL scripts) were only added in OpenGL 2.0 (September 2004). Therefore Oni has practically no hardware acceleration and is limited to Gouraud shading.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Vertex Buffer Objects (i.e., optimized storage of 3D data at GPU level) were not implemented until OpenGL 1.5 (July 2003), and advanced pixel shaders (GLSL scripts) were only added in OpenGL 2.0 (September 2004). Therefore Oni has practically no hardware acceleration and is limited to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[wp:Gouraud_shading|&lt;/ins&gt;Gouraud shading&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lightmapping was technically possible since OpenGL 1.2.1 (through multitexturing) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and may have been active in pre-beta versions of Oni&lt;/del&gt;&amp;lt;ref&amp;gt;Proper multitextured lightmaps should not be confused with [[Lightmapping levels|THIS]] hackish emulation of lightmaps, which uses an extra layer of transparent polygons.&amp;lt;/ref&amp;gt;, although it &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is missing &lt;/del&gt;from the final game.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lightmapping was technically possible since OpenGL 1.2.1 (through multitexturing)&amp;lt;ref&amp;gt;Proper multitextured lightmaps should not be confused with [[Lightmapping levels|THIS]] hackish emulation of lightmaps, which uses an extra layer of transparent polygons.&amp;lt;/ref&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and was [[Pre-beta_features#Lightmapping|initially present]] in pre-beta versions of Oni&lt;/ins&gt;, although it &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;was removed &lt;/ins&gt;from the final game &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;due to either performance reasons or last-minute remodeling of the game&amp;#039;s levels&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A basic implementation of environment mapping was used for hair and metal parts, although the reflection math seems incorrect and some NVIDIA cards completely fail to render Oni&amp;#039;s reflectivity.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A basic implementation of environment mapping was used for hair and metal parts, although the reflection math seems incorrect and some NVIDIA cards completely fail to render Oni&amp;#039;s reflectivity.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OpenGL&amp;diff=34679&amp;oldid=prev</id>
		<title>Geyser: throwing together some notes; may link to more tutorials later</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OpenGL&amp;diff=34679&amp;oldid=prev"/>
		<updated>2021-11-06T21:39:01Z</updated>

		<summary type="html">&lt;p&gt;throwing together some notes; may link to more tutorials later&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;OpenGL is what Oni uses for rendering in-game components as well as the menu system and splashscreens – basically everything you see, except for those dialogs and window elements that are handled directly by the operating system (e.g., &amp;quot;[[Troubleshooting/Blam|Blam]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Oni&amp;#039;s development in the late &amp;#039;90s corresponds to an era when GFX hardware was booming&amp;lt;ref&amp;gt;Quake (1996) is widely regarded as having played a key part in the breakthrough of real-time 3D technology in the late &amp;#039;90s [https://popculthq.com/2018/02/26/evolution-polygons-3d-video-game-graphics/]. See [[wp:First-person_shooter#Advances_in_3D_graphics:_1995–1999|HERE]] (Wikipedia) for a more detailed account citing other remarkable games, such as Descent (1995) or Half-Life (1999).&amp;lt;/ref&amp;gt;, but the compatibility standards of such frameworks as OpenGL were still emergent. Starting with OpenGL 1.2.1 (October 1998), new OpenGL features were subject to approval by the Architecture Review Board (the &amp;quot;ARB extensions&amp;quot; concept), based on wide enough availability and reliability on the hardware side. Multitexturing (&amp;quot;GL_ARB_multitexture&amp;quot;) was the only extension officially introduced by the OpenGL 1.2.1 spec (section F.2), but other extensions were gradually added on the way to OpenGL 1.3 (August 2001).&lt;br /&gt;
&lt;br /&gt;
==OpenGL in Oni==&lt;br /&gt;
Oni&amp;#039;s release predates OpenGL 1.3 only slightly, so most if not all of the new ARB extensions from the OpenGL 1.3 spec were already approved and available at the time of Oni&amp;#039;s development: most notably, compressed textures (&amp;quot;GL_ARB_texture_compression&amp;quot;, March 2000) and multisampling a.k.a. antialiasing (&amp;quot;GL_ARB_multisample&amp;quot;, December 1999), as well as some environment mapping techniques.&lt;br /&gt;
&lt;br /&gt;
Vertex Buffer Objects (i.e., optimized storage of 3D data at GPU level) were not implemented until OpenGL 1.5 (July 2003), and advanced pixel shaders (GLSL scripts) were only added in OpenGL 2.0 (September 2004). Therefore Oni has practically no hardware acceleration and is limited to Gouraud shading.&lt;br /&gt;
&lt;br /&gt;
Lightmapping was technically possible since OpenGL 1.2.1 (through multitexturing) and may have been active in pre-beta versions of Oni&amp;lt;ref&amp;gt;Proper multitextured lightmaps should not be confused with [[Lightmapping levels|THIS]] hackish emulation of lightmaps, which uses an extra layer of transparent polygons.&amp;lt;/ref&amp;gt;, although it is missing from the final game.&lt;br /&gt;
&lt;br /&gt;
A basic implementation of environment mapping was used for hair and metal parts, although the reflection math seems incorrect and some NVIDIA cards completely fail to render Oni&amp;#039;s reflectivity.&lt;br /&gt;
&lt;br /&gt;
==Learning OpenGL==&lt;br /&gt;
If you are looking for an introduction to modern OpenGL, with shaders and such, then [http://www.opengl-tutorial.org/ opengl-tutorial.org] is a good place to look. [https://www.3dgep.com/introduction-to-opengl-and-glsl/#OpenGL_1x_Fixed-Function_Pipeline THIS] mini-tutorial is also a good place to start, as it fully details the creation of an interactive OpenGL/freeglut app (however,  the camera class used by the author is no longer available for download).&lt;br /&gt;
&lt;br /&gt;
If you are more specifically interested in normal mapping, then a really neat GLSL snippet can be found [http://www.geeks3d.com/20130122/normal-mapping-without-precomputed-tangent-space-vectors/ HERE] (an implementation of normal mapping that uses no precomputed TBN matrices and does all the tangent space math at shader level).&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Real World]]&lt;/div&gt;</summary>
		<author><name>Geyser</name></author>
	</entry>
</feed>