<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.planetchili.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chili</id>
		<title>Chilipedia - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.planetchili.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chili"/>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php/Special:Contributions/Chili"/>
		<updated>2026-05-10T15:35:42Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_7&amp;diff=3334</id>
		<title>Beginner C++ Game Programming Tutorial 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_7&amp;diff=3334"/>
				<updated>2022-05-05T04:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mr. DeBugger is a real sir.&lt;br /&gt;
&lt;br /&gt;
== Concepts Taught ==&lt;br /&gt;
* Using the Visual Studio debugger&lt;br /&gt;
&lt;br /&gt;
== Chili's Dank Meta Nugs ==&lt;br /&gt;
* Don't binge watch the tutorials--space that shit out&lt;br /&gt;
* Practice and experiment with C++ on your own initiative&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* Intro [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=0m0s 0:00]&lt;br /&gt;
* Introducing the Debugger [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=0m31s 0:31]&lt;br /&gt;
* Setting up the debugger [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=1m41s 1:41]&lt;br /&gt;
* Running in debug mode [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=2m25s 2:25]&lt;br /&gt;
* The call stack [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=2m45s 2:45]&lt;br /&gt;
* Finding debug windows [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=3m17s 3:17]&lt;br /&gt;
* Release vs Debug mode: assertions [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=3m50s 3:50]&lt;br /&gt;
* Autos [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=4m56s 4:56]&lt;br /&gt;
* Debugging second solution: setting your own breakpoints, stepping over and stepping into [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=6m38s 6:38]&lt;br /&gt;
* Locals [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=9m30s 9:30]&lt;br /&gt;
* Step out [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=10m39s 10:39]&lt;br /&gt;
* Continue [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=11m33s 11:33]&lt;br /&gt;
* Advice from Chili [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=12m10s 12:10]&lt;br /&gt;
* Chili's Dank Meta Nugs [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=12m45s 12:45]&lt;br /&gt;
* Homework [https://www.youtube.com/watch?v=h2l2D0ud7DY&amp;amp;t=16m35s 16:35]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
There are three problems to solve in three separate solutions. The solutions are all based on the code used in the tutorial video (the code from the Tutorial 6 homework) Download the zip of the solutions below in the Downloads section.&lt;br /&gt;
# Assertion fails! Find the bug! Also, there's another bug hiding if you solve the first one. Try making the boxes collide and see what happens (or what doesn't happen...). Note that I don't talk about this second bug in the solution video. Check out the Solution Errata below for the answer.&lt;br /&gt;
# Assertion fails! Find the bug!&lt;br /&gt;
# Moving the cursor to the bottom of the screen is bad news bears...&lt;br /&gt;
&lt;br /&gt;
The solution is given in [https://www.youtube.com/watch?v=reTJUqZspYs this video].&lt;br /&gt;
&lt;br /&gt;
=== Solution Errata ===&lt;br /&gt;
Read the below (click Expand) only after attempting the problem yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsed mw-collapsible&amp;quot; style=&amp;quot;width:700px&amp;quot;&amp;gt;&lt;br /&gt;
In the solution video, we see that the bug in the second homework problem is actually the same bug as in the tutorial video. The reason for this is that Chili fucked up and put the bug he intended to go in the second problem into the first problem. So the first problem has two bugs, and the second problem only has the bug from the tutorial.&lt;br /&gt;
&lt;br /&gt;
Now the bug in the second problem is something that Chili has mentioned before. It is a mix-up between the &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; operators. Specifically, it is as follows (error on line 64 of Game.cpp):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line start=&amp;quot;64&amp;quot;&amp;gt;&lt;br /&gt;
	colliding == &lt;br /&gt;
		OverlapTest( x_fixed0,y_fixed0,x_mobile,y_mobile ) ||&lt;br /&gt;
		OverlapTest( x_fixed1,y_fixed1,x_mobile,y_mobile ) ||&lt;br /&gt;
		OverlapTest( x_fixed2,y_fixed2,x_mobile,y_mobile ) ||&lt;br /&gt;
		OverlapTest( x_fixed3,y_fixed3,x_mobile,y_mobile );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.planetchili.net/downloads/T7-TutCode.zip Tutorial 7 Code]&lt;br /&gt;
* [https://www.planetchili.net/downloads/T7-Homework.zip Tutorial 7 Homework Solution Code]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 8|Next in series (Tutorial 8)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_12&amp;diff=3335</id>
		<title>Intermediate C++ Game Programming Tutorial 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_12&amp;diff=3335"/>
				<updated>2022-05-05T04:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this tutorial Chili shows us an example of how to create a class for an animated sprite, and how to use a collection of these animated sprites to create a walking character class.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Animated sprite class design&lt;br /&gt;
* Walking character class design&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
The technique we use of storing a reference to &amp;lt;code&amp;gt;Surface&amp;lt;/code&amp;gt; in each &amp;lt;code&amp;gt;Animation&amp;lt;/code&amp;gt; object will work for now, but it will cause us a pain in the dick in the future when we start using our characters in containers like &amp;lt;code&amp;gt;std::vector&amp;lt;/code&amp;gt;. The reason for this is because you cannot assign a reference to refer something else after it has been bound, and so the compiler cannot generate copy assign for us by default. We will fix this problem when it becomes an issue for us (in the Action RPG Project).&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
[https://youtu.be/KXn7-5zg3J4 Tutorial 12]&lt;br /&gt;
* Introducing the &amp;lt;code&amp;gt;Character&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Animation&amp;lt;/code&amp;gt; classes [https://youtu.be/KXn7-5zg3J4?t=0m20s 0:20]&lt;br /&gt;
* Creating header file for the &amp;lt;code&amp;gt;Animation&amp;lt;/code&amp;gt; class [https://youtu.be/KXn7-5zg3J4?t=0m49s 0:49]&lt;br /&gt;
* Implementing the &amp;lt;code&amp;gt;Animation&amp;lt;/code&amp;gt; class [https://youtu.be/KXn7-5zg3J4?t=3m30s 3:30], constructor implementation at [https://youtu.be/KXn7-5zg3J4?t=5m15s 5:15]&lt;br /&gt;
* Copy the FrameTimer class used in earlier tutorials [https://youtu.be/KXn7-5zg3J4?t=7m35s 7:35]&lt;br /&gt;
* Give it a test run: have an animated sprite follow the cursor [https://youtu.be/KXn7-5zg3J4?t=8m00s 8:00]&lt;br /&gt;
* Creating header file for the &amp;lt;code&amp;gt;Character&amp;lt;/code&amp;gt; class [https://youtu.be/KXn7-5zg3J4?t=11m05s 11:05]&lt;br /&gt;
* Using an &amp;lt;code&amp;gt;enum class&amp;lt;/code&amp;gt;, namecode the different animation sequences [https://youtu.be/KXn7-5zg3J4?t=11m49s 11:49]&lt;br /&gt;
* Implementing the &amp;lt;code&amp;gt;Character&amp;lt;/code&amp;gt; class [https://youtu.be/KXn7-5zg3J4?t=13m08s 13:08]&lt;br /&gt;
* Add an operator in the &amp;lt;code&amp;gt;Vec2&amp;lt;/code&amp;gt; class that applies explicit conversion (cast) of a float position pair into an int position pair [https://youtu.be/KXn7-5zg3J4?t=17m20s 17:20]&lt;br /&gt;
* Create the &amp;lt;code&amp;gt;SetDirection&amp;lt;/code&amp;gt; function that sets the direction of motion and the animation sequence [https://youtu.be/KXn7-5zg3J4?t=18m24s 18:24]&lt;br /&gt;
* Test the &amp;lt;code&amp;gt;Character&amp;lt;/code&amp;gt; class by applying it in the &amp;lt;code&amp;gt;Game&amp;lt;/code&amp;gt; class [https://youtu.be/KXn7-5zg3J4?t=20m48s 20:48]&lt;br /&gt;
* Disclaimer for the approach presented in this tutorial [https://youtu.be/KXn7-5zg3J4?t=23m42s 23:42]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
[https://github.com/planetchili/sprite Sprite Repo]&lt;br /&gt;
&lt;br /&gt;
== Download Materials ==&lt;br /&gt;
* [https://www.planetchili.net/downloads/I12-Images.zip Tutorial Images]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
None!&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Intermediate C++ Game Programming Tutorial 13|Next in series (Tutorial 13)]]&lt;br /&gt;
* [[Intermediate C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_8&amp;diff=3336</id>
		<title>Beginner C++ Game Programming Tutorial 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_8&amp;diff=3336"/>
				<updated>2022-05-05T04:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We make our first game. So goddamn sweet. Not shitty at all.&lt;br /&gt;
&lt;br /&gt;
== Concepts Taught ==&lt;br /&gt;
* &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;-=&amp;lt;/code&amp;gt; operators&lt;br /&gt;
* Writing code in a constructor&lt;br /&gt;
* &amp;lt;code&amp;gt;#include &amp;lt;header&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Using &amp;lt;code&amp;gt;std::mt19973&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;std::uniform_int_distribution&amp;lt;int&amp;gt;&amp;lt;/code&amp;gt; to generate random numbers&lt;br /&gt;
&lt;br /&gt;
== Errata ==&lt;br /&gt;
At [https://youtu.be/7yqV2hyv9Cc?list=PLqCJpWy5FohcehaXlCIt8sVBHBFFRVWsx&amp;amp;t=650 10:50] in the video, there is a note saying that &amp;lt;code&amp;gt;isEaten = IsColliding( ... );&amp;lt;/code&amp;gt; would have also been a valid approach, but this is incorrect. With direct assignment, once the condition becomes false, the &amp;lt;code&amp;gt;isEaten&amp;lt;/code&amp;gt; flag gets reset (which is not the desired behavior). With the &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; statement, once the flag is set it remains &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; regardless of what &amp;lt;code&amp;gt;IsColliding( ... )&amp;lt;/code&amp;gt; returns on subsequent frames.&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* Intro [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=0m0s 0:00]&lt;br /&gt;
* Basic game plan [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=0m30s 0:30]&lt;br /&gt;
* Setting up member variables for entities: dude and poo [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=0m50s 0:50]&lt;br /&gt;
* Dude and poo graphics [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=2m20s 2:20]&lt;br /&gt;
* Creating Draw functions for Dude and Poo [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=4m8s 4:08]&lt;br /&gt;
* Quick note on sprite coordinate origins [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=5m20s 5:20]&lt;br /&gt;
* Screen clamping functions [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=6m20s 6:20]&lt;br /&gt;
* Movement code for Dude [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=8m9s 8:09]&lt;br /&gt;
* Collision test code [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=9m3s 9:03]&lt;br /&gt;
* Win condition and Gameover screen [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=11m54s 11:54]&lt;br /&gt;
* Title Screen [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=13m20s 13:20]&lt;br /&gt;
* Randomizing poo positions [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=15m7s 15:07]&lt;br /&gt;
* A little bit on constructors [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=16m11s 16:11]&lt;br /&gt;
* Creating random number generator object [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=16m50s 16:50]&lt;br /&gt;
* Specifying a range for random numbers [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=18m23s 18:23]&lt;br /&gt;
* Random device: The importance of a seed [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=20m55s 20:55]&lt;br /&gt;
* Why we don't use random device as a random number generator [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=22m9s 22:09]&lt;br /&gt;
* Summing up what we have learned [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=23m4s 23:04]&lt;br /&gt;
* An important message from the power rangers [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=23m50s 23:50]&lt;br /&gt;
* Homework [https://www.youtube.com/watch?v=7yqV2hyv9Cc&amp;amp;t=26m33s 26:33]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
Make the poos move around the screen and rebound when they hit the edges.&lt;br /&gt;
&lt;br /&gt;
The solution is given in [https://youtu.be/KIw8MX7HfqU this video].&lt;br /&gt;
&lt;br /&gt;
== Image to PutPixel Tools ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.planetchili.net/forum/viewtopic.php?f=3&amp;amp;t=925#p1011 fukbmp] - a barebones tool by Chili&lt;br /&gt;
* [https://www.planetchili.net/forum/viewtopic.php?f=3&amp;amp;t=991 Custom Sprites 1.5] - a nicer tool by LuX&lt;br /&gt;
* [http://forum.planetchili.net/viewtopic.php?f=3&amp;amp;t=3612 Tristan's PutPixel Puker] - another sexy tool by Tristan&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.planetchili.net/downloads/Chili%20DirectX%20Framework.zip Framework Download]&lt;br /&gt;
* [https://www.planetchili.net/downloads/T8-Goodies.zip PutPixel Sprites]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/8/Beginner%20Tutorial%208%20Code.zip Tutorial 8 Code]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/8/Beginner%20Tutorial%208%20HW%20Code.zip Tutorial 8 Homework Solution Code]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 9|Next in series (Tutorial 9)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_10&amp;diff=3337</id>
		<title>Intermediate C++ Game Programming Tutorial 10</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_10&amp;diff=3337"/>
				<updated>2022-05-05T04:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The promised day has come. We're finally going to be loading images from bitmap files into memory and drawing them as sprites on the screen. This is where all that stuff we've been learning--data types, pointers, memory management, file access, etc.--is going to pay off bigtime. Also, get fukt massive PutPixel sprite functions; die in a garbage fire.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* &amp;lt;code&amp;gt;Surface&amp;lt;/code&amp;gt; class for storing image data in memory&lt;br /&gt;
* Parsing Windows bitmap file headers and loading pixel data&lt;br /&gt;
* Calculating padding&lt;br /&gt;
* Drawing sprites (pixel blocks) from a &amp;lt;code&amp;gt;Surface&amp;lt;/code&amp;gt; to the screen&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
=== Channel Byte Order ===&lt;br /&gt;
There is a rather large issue with the order in which the color channels are loaded from the bitmap file, but due to a freak of coincidence, the code works regardless. Still, we must address this buttfuckery.&lt;br /&gt;
&lt;br /&gt;
The way the channels are laid out in the file is (in order of low offset to high offset) |B| |G| |R|. Now the line of code that simultaneously reads the 3 bytes of the 3 color channels, constructs a Color object, and writes it into the Surface is: &amp;lt;code&amp;gt;PutPixel( x,y,Color( file.get(),file.get(),file.get() ) );&amp;lt;/code&amp;gt;. The function prototype of the Color constructor is &amp;lt;code&amp;gt;Color( unsigned char r,unsigned char g,unsigned char b )&amp;lt;/code&amp;gt;, so the order here is RGB, and we would expect that our code would be messed up (the R and B channels would be swapped). But this is not the case. What gives?&lt;br /&gt;
&lt;br /&gt;
Well you might (understandably) assume that our function call to the ctor evaluates the &amp;lt;code&amp;gt;get()&amp;lt;/code&amp;gt; parameter expressions in the following order &amp;lt;code&amp;gt;Color( file.get()&amp;lt;sub&amp;gt;first(B)&amp;lt;/sub&amp;gt;,file.get()&amp;lt;sub&amp;gt;second(G)&amp;lt;/sub&amp;gt;,file.get()&amp;lt;sub&amp;gt;third(R)&amp;lt;/sub&amp;gt; )&amp;lt;/code&amp;gt;, that is to say, the list of parameter expressions being evaluated in left-to-right order. In actuality, the compiler evaluates them in right-to-left order, i.e. &amp;lt;code&amp;gt;Color( file.get()&amp;lt;sub&amp;gt;third(R)&amp;lt;/sub&amp;gt;,file.get()&amp;lt;sub&amp;gt;second(G)&amp;lt;/sub&amp;gt;,file.get()&amp;lt;sub&amp;gt;first(B)&amp;lt;/sub&amp;gt; )&amp;lt;/code&amp;gt;, and this is why our code happens to work!&lt;br /&gt;
&lt;br /&gt;
Even stranger is the fact that &amp;lt;big&amp;gt;'''the C++ standard does not specify the order in which the parameter expressions are evaluated!'''&amp;lt;/big&amp;gt; So it is possible that a different compiler could generate code that gives a different permutation of the color channels. In actuality, we can expect most compilers to do it right-to-left because of the way parameters will be pushed onto the stack (which ''is'' mandated), but still, it is terrible practice to rely on this unspecified behavior to always be the way we wish it to be.&lt;br /&gt;
&lt;br /&gt;
The following code fixes this problem. It will be applied (in later downstream commits) to the Sprite repo and the Twin repo on GitHub.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line start=&amp;quot;54&amp;quot; &amp;gt;&lt;br /&gt;
const unsigned char b = file.get();&lt;br /&gt;
const unsigned char g = file.get();&lt;br /&gt;
const unsigned char r = file.get();&lt;br /&gt;
PutPixel( x,y,{ r,g,b } );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Self Assignment ===&lt;br /&gt;
We definitely should be checking for self assignment (&amp;lt;code&amp;gt;mySurf = mySurf;&amp;lt;/code&amp;gt;) in the assignment operator for &amp;lt;code&amp;gt;Surface&amp;lt;/code&amp;gt;. See [[Intermediate C++ Game Programming Tutorial 6#Errata|the Errata of Intermediate 6]] for more details.&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
[https://youtu.be/0z3uCzitO7Y Tutorial 10]&lt;br /&gt;
* Creating a datatype (&amp;lt;code&amp;gt;Surface&amp;lt;/code&amp;gt; class) to hold image data [https://youtu.be/0z3uCzitO7Y?t=0m13s 0:13]&lt;br /&gt;
* Add member function &amp;lt;code&amp;gt;DrawSprite&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Graphics&amp;lt;/code&amp;gt; class to draw a &amp;lt;code&amp;gt;Surface&amp;lt;/code&amp;gt; object to the screen [https://youtu.be/0z3uCzitO7Y?t=5m03s 5:03]&lt;br /&gt;
* Test the code with a funky sprite design [https://youtu.be/0z3uCzitO7Y?t=7m43s 7:43]&lt;br /&gt;
* Load sprites in a &amp;lt;code&amp;gt;Surface&amp;lt;/code&amp;gt; object from a Bitmap file [https://youtu.be/0z3uCzitO7Y?t=9m09s 9:09]&lt;br /&gt;
* Exploring the Bitmap Filetype [https://youtu.be/0z3uCzitO7Y?t=9m18s 9:18]&lt;br /&gt;
* Load the Bitmap file header &amp;lt;code&amp;gt;BITMAPFILEHEADER&amp;lt;/code&amp;gt; [https://youtu.be/0z3uCzitO7Y?t=10m54s 10:54]&lt;br /&gt;
* Load the DIB Header &amp;lt;code&amp;gt;BITMAPINFOHEADER&amp;lt;/code&amp;gt; [https://youtu.be/0z3uCzitO7Y?t=15m08s 15:08]&lt;br /&gt;
* Load 8-bit RBG values of the Bitmap File into pixel array of a &amp;lt;code&amp;gt;Surface&amp;lt;/code&amp;gt; object [https://youtu.be/0z3uCzitO7Y?t=17m00s 17:00]&lt;br /&gt;
* Calculate padding at the end of a bitmap row [https://youtu.be/0z3uCzitO7Y?t=18m40s 18:40]&lt;br /&gt;
* Do a test run, loading a Bitmap file and drawing it to the screen [https://youtu.be/0z3uCzitO7Y?t=22m32s 22:32]&lt;br /&gt;
* Test the order of the color channels [https://youtu.be/0z3uCzitO7Y?t=24m46s 24:46]&lt;br /&gt;
* Using &amp;lt;code&amp;gt;assert&amp;lt;/code&amp;gt;, add a test to see if file loading succeeded [https://youtu.be/0z3uCzitO7Y?t=25m21s 25:21]&lt;br /&gt;
* Homework assignment [https://youtu.be/0z3uCzitO7Y?t=27m21s 27:21]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
[https://github.com/planetchili/sprite Sprite Repo]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download Materials ==&lt;br /&gt;
* [https://www.planetchili.net/downloads/I10-Images.zip Tutorial and Homework Bitmaps]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
The homework is to improve the bitmap loading routine to support 32-bit RGB format and to support bitmaps with reverse row order.&lt;br /&gt;
*[https://youtu.be/84C5RYLyWLc Homework solution video]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Intermediate C++ Game Programming Tutorial 11|Next in series (Tutorial 11)]]&lt;br /&gt;
* [[Intermediate C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_11&amp;diff=3338</id>
		<title>Beginner C++ Game Programming Tutorial 11</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_11&amp;diff=3338"/>
				<updated>2022-05-05T04:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;References are sweet because they let us control our shit from far away. Remember the days when we had to actually get up to change the channel on the TV? Remember TV? Fuck that shit! Also, const correctness is for big dick gangstas that don't give any fucks.&lt;br /&gt;
&lt;br /&gt;
== Concepts Taught ==&lt;br /&gt;
* References&lt;br /&gt;
* Passing by reference&lt;br /&gt;
* &amp;lt;code&amp;gt;[[const]]&amp;lt;/code&amp;gt; correctness (redux)&lt;br /&gt;
&lt;br /&gt;
== Const Correctness ==&lt;br /&gt;
The use of &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; as a means of communication by code and as method to prevent you and other people from shooting you (your code / themselves) in the dick is something that Chili finds cromulent. For some info on how &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; makes your code less shitty, check [https://isocpp.org/wiki/faq/const-correctness#const-and-type-safety this]. If you're still not sold (I happen to like being a human dumpster fire, thank you very much Chili), here is a video showing how using &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; can make your code a fuck of a lot faster: [https://www.youtube.com/watch?v=zBkNBP00wJE&amp;amp;feature=youtu.be&amp;amp;t=1455 cool beans].&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* Intro [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=0m0s 0:00]&lt;br /&gt;
* Drawing rect function [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=0m41s 0:41]&lt;br /&gt;
* Creating a Color object [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=4m32s 4:32]&lt;br /&gt;
* Controlling the rectangle with the mouse [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=6m46s 6:46]&lt;br /&gt;
* Extending DrawRect function to account for the &amp;quot;flip over&amp;quot; on the x and y, when x1 or y1 &amp;lt; x0 or y0 [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=8m23s 8:23]&lt;br /&gt;
* Test and swap x0,y0 and x1,y1 [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=10m19s 10:19]&lt;br /&gt;
* Shit don't work, references to the rescue! [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=10m19s 12:16]&lt;br /&gt;
* Making Test and swap work! [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=17m45s 17:45]&lt;br /&gt;
* Refactoring DrawRect [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=20m36s 20:36]&lt;br /&gt;
* Poo game: Moving poo drawing code from Game class into Poo class [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=21m35s 21:35]&lt;br /&gt;
* Process Consumption refactoring (args): passing Dude object by reference [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=25m48s 25:48]&lt;br /&gt;
* Const correctness: passing by const reference [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=28m25s 28:25]&lt;br /&gt;
* Const correctness: Making member functions const [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=30m40s 30:40] &lt;br /&gt;
* Recap [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=32m1s 32:01] &lt;br /&gt;
* Homework [https://www.youtube.com/watch?v=VzXco2FqpT8&amp;amp;t=34m5s 34:05]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
# Move the drawing code for &amp;lt;code&amp;gt;Dude&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;Game&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;Dude&amp;lt;/code&amp;gt; class.&lt;br /&gt;
# Make a second &amp;lt;code&amp;gt;DrawRect&amp;lt;/code&amp;gt; function that takes a single point (top left corner) and the dimensions as parameters.&lt;br /&gt;
&lt;br /&gt;
The solution is given in [https://youtu.be/MOhF8Z2jW0k this] video.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.planetchili.net/downloads/T11-Poo.zip Poo Starting Code]&lt;br /&gt;
* [https://www.planetchili.net/downloads/T11-Rect.zip Rect Starting Code]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/11/Beginner%20Tutorial%2011%20Poo%20Code.zip Beginner Tutorial 11 Poo Code]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/11/Beginner%20Tutorial%2011%20Rect%20Code.zip Beginner Tutorial 11 Rect Code]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/11/Beginner%20Tutorial%2011%20Poo%20HW%20Code.zip Beginner Tutorial 11 Poo HW Code]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/11/Beginner%20Tutorial%2011%20Rect%20HW%20Code.zip Beginner Tutorial 11 Rect HW Code]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 12|Next in series (Tutorial 12)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Chili_Sound_Pack&amp;diff=3339</id>
		<title>Chili Sound Pack</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Chili_Sound_Pack&amp;diff=3339"/>
				<updated>2022-05-05T04:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Chili Sound Pack is an optional pack of code and .dlls you can add to [[Chili Framework]] projects to enable the use of sound effects.&lt;br /&gt;
&lt;br /&gt;
== Tutorial ==&lt;br /&gt;
Here is a [https://youtu.be/lxBpKjAaUOI link to a video] explaining how to integrate the sound module into a framework solution and how to use the &amp;lt;code&amp;gt;Sound&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SoundEffect&amp;lt;/code&amp;gt; classes. Check the [[#Downloads|downloads]] section below for the necessary stuff to follow along. (Note that newer versions of the framework already have the sound stuff included by default.)&lt;br /&gt;
&lt;br /&gt;
==== Extra Notes / Errata ====&lt;br /&gt;
&lt;br /&gt;
* In the tutorial video, the constructor for &amp;lt;code&amp;gt;SoundEffect&amp;lt;/code&amp;gt; is not fully explained. There are 3 parameters. The first parameter is, as shown in the video, a list of &amp;lt;code&amp;gt;std::wstring&amp;lt;/code&amp;gt;s which are the names of .wav files to be loaded. The second parameter is a &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt;, and if passed in as true, it allows the loading of .wav files to soft-fail (failure to load the file will cause a silent &amp;lt;code&amp;gt;Sound&amp;lt;/code&amp;gt; object to be used instead). The third parameter is a &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; which is the standard deviation used to generate the pitch shift for each playback. Larger values create more dramatic swings in pitch.&lt;br /&gt;
&lt;br /&gt;
* In the portion where I demonstrate soft-fail loading of a &amp;lt;code&amp;gt;Sound&amp;lt;/code&amp;gt; with a &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; ... &amp;lt;code&amp;gt;catch&amp;lt;/code&amp;gt; block, in the body of the &amp;lt;code&amp;gt;catch&amp;lt;/code&amp;gt; I assign a default-constructed &amp;lt;code&amp;gt;Sound&amp;lt;/code&amp;gt; object, but this is unnecessary (if the constructor &amp;lt;code&amp;gt;throw&amp;lt;/code&amp;gt;s, the object will be put into a default-constructed, i.e. empty sound, state).&lt;br /&gt;
&lt;br /&gt;
* Never '''''EVER''''' create a &amp;lt;code&amp;gt;Sound&amp;lt;/code&amp;gt; (or a &amp;lt;code&amp;gt;SoundEffect&amp;lt;/code&amp;gt;) object in the global scope. If you do so, the &amp;lt;code&amp;gt;SoundSystem&amp;lt;/code&amp;gt; object will end up getting destroyed before the Sound object, and then you're FUCKED. I warned you.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
Here is the [https://www.planetchili.net/downloads/Chili-Sound-Pack.zip sound module zip file] with the code and .dll files for the sound module.&lt;br /&gt;
&lt;br /&gt;
To follow the tutorial on the sound module, you will need the following zip files as well:&lt;br /&gt;
* The test [https://www.planetchili.net/downloads/Sound-Tutorial-Poo.zip solution zip]&lt;br /&gt;
* The test [https://www.planetchili.net/downloads/Test-Sounds.zip sound files zip]&lt;br /&gt;
&lt;br /&gt;
== Inner Workings of the Module ==&lt;br /&gt;
&lt;br /&gt;
The inner workings of the XAudio2 code are explained in the H.U.G.S. series. The code discussed there is somewhat different than the code in the sound pack, but the fundamentals are the same. If you want the details, see the video links below. Note that these tutorials assume a relatively strong command of the C++ language.&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=T51Eqbbald4 HUGS - Tutorial 11]&lt;br /&gt;
* [https://www.youtube.com/watch?v=ck2XpEZYLYs HUGS - Tutorial 12]&lt;br /&gt;
* [https://www.youtube.com/watch?v=hTEL49jCruw HUGS - Tutorial 17]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_16&amp;diff=3340</id>
		<title>Intermediate C++ Game Programming Tutorial 16</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_16&amp;diff=3340"/>
				<updated>2022-05-05T04:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the video we take a look at a couple of bangers from &amp;lt;code&amp;gt;&amp;lt;algorithm&amp;gt;&amp;lt;/code&amp;gt;, and we learn what lambda functions are and how to use them.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Algorithms &amp;lt;code&amp;gt;std::sort&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;std::remove_if&amp;lt;/code&amp;gt;&lt;br /&gt;
* Concepts (as in, type concepts like Comparable)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;functional&amp;gt;&amp;lt;/code&amp;gt; functors as predicates&lt;br /&gt;
* Lambda functions&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Errata&amp;lt;/span&amp;gt; ==&lt;br /&gt;
In the video Chili states that std::remove does not preserve the relative order of elements in the container, but this is fake news! Relative order is preserved: [https://en.cppreference.com/w/cpp/algorithm/remove]&lt;br /&gt;
&lt;br /&gt;
In the homework solution there is a part where Chili uses an iterator into a &amp;lt;code&amp;gt;stringstream&amp;lt;/code&amp;gt; [https://youtu.be/_1-iES-Eytc?t=626]. This code no longer works due to changes (improvements) to the Visual Studio compiler. Basically, you cannot pass a temporary stream into the iterator constructor. See this: [https://stackoverflow.com/questions/23714445/passing-temporary-istringstream-object-to-istream-iteratorstring]&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
[https://youtu.be/3J1Pz30IE4Q Tutorial 16]&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
* Generic Algorithms: how Templates and Iterators make Algorithms independent of Data Types and Containers [https://youtu.be/3J1Pz30IE4Q?t=17s 0:17]&lt;br /&gt;
* The &amp;lt;code&amp;gt;std::sort&amp;lt;/code&amp;gt; algorithm and its requirements [https://youtu.be/3J1Pz30IE4Q?t=43s 0:43]&lt;br /&gt;
* Sorting a (forward) list &amp;lt;code&amp;gt;std::list&amp;lt;/code&amp;gt;, using its member function &amp;lt;code&amp;gt;std::list::sort()&amp;lt;/code&amp;gt; [https://youtu.be/3J1Pz30IE4Q?t=2m16s 2:16]&lt;br /&gt;
* Introducing Concepts / named requirements of types (e.g., the &amp;lt;code&amp;gt;Compare&amp;lt;/code&amp;gt; requirement of &amp;lt;code&amp;gt;std::sort&amp;lt;/code&amp;gt;) [https://youtu.be/3J1Pz30IE4Q?t=2m54s 2:54]&lt;br /&gt;
* Modyfing sorting order by passing a comparison function object (functor) as a predicate, like so:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;std::sort(vec.begin(),vec.end(),std::greater&amp;lt;int&amp;gt;{});&amp;lt;/code&amp;gt; [https://youtu.be/3J1Pz30IE4Q?t=3m17s 3:17]&amp;lt;br /&amp;gt;Note: vec is a std::vector of integers&lt;br /&gt;
* Sort custom types, example code for sorting a custom class object by creating a functor, called like so: &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;std::sort(vecObj.begin(),vecObj.end(),Obj::YLess{});&amp;lt;/code&amp;gt; [https://youtu.be/3J1Pz30IE4Q?t=4m07s 4:07]&lt;br /&gt;
* Removing items from a container, &amp;lt;code&amp;gt;std::remove&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;std::remove_if&amp;lt;/code&amp;gt; [https://youtu.be/3J1Pz30IE4Q?t=6m11s 6:11]&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
** Create a functor as a unary predicate for the &amp;lt;code&amp;gt;std::remove&amp;lt;/code&amp;gt; function to remove elements using a threshold variable [https://youtu.be/3J1Pz30IE4Q?t=8m28s 8:28]&lt;br /&gt;
** Use container member function &amp;lt;code&amp;gt;erase()&amp;lt;/code&amp;gt; to correct the endpoint of the container after the remove operation [https://youtu.be/3J1Pz30IE4Q?t=9m51s 9:51]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* Introducing Lambda functions to replace custom functors [https://youtu.be/3J1Pz30IE4Q?t=11m51s 11:51]&lt;br /&gt;
* Using the Lambda capture to bring in variables into the Lambda function [https://youtu.be/3J1Pz30IE4Q?t=13m34s 13:34]&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
** Capture syntax explained: &amp;lt;code&amp;gt;[var]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[&amp;amp;var]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[=]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[&amp;amp;]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[newvar=var+10]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[this]&amp;lt;/code&amp;gt;, capture multiple variables, mix&amp;amp;match capture modes&lt;br /&gt;
** Stateful Lambdas; changing captured lambda variables using the &amp;lt;code&amp;gt;mutable&amp;lt;/code&amp;gt; flag [https://youtu.be/3J1Pz30IE4Q?t=15m59s 15:59]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* Some anxiety-reducing consolation by Chili [https://youtu.be/3J1Pz30IE4Q?t=16m40s 16:40]&lt;br /&gt;
* Syntax for a callable Lambda function [https://youtu.be/3J1Pz30IE4Q?t=17m03s 17:03]&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
** Make it callable once: &amp;lt;code&amp;gt;[...](...){...}(vec.front());&amp;lt;/code&amp;gt;, functor is destroyed immediately&lt;br /&gt;
** Keep the functor using &amp;lt;code&amp;gt;auto mylamb = [...](...){...};&amp;lt;/code&amp;gt;, which can be called by &amp;lt;code&amp;gt;bool result = mylamb(vec.front());&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;std::remove_if(...,...,mylamb);&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* The power of C++ is in its flexibility. Example code for converting a string to lowercase:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;std::transform(str.begin(),str.end(),str.begin(),::tolower);&amp;lt;/code&amp;gt;[https://youtu.be/3J1Pz30IE4Q?t=17m49s 17:49]&lt;br /&gt;
* Homework assignment [https://youtu.be/3J1Pz30IE4Q?t=18m39s 18:39]&lt;br /&gt;
* Introducing the Algorithm [[STD Gems]] series that takes a deep dive into its functionality [https://youtu.be/3J1Pz30IE4Q?t=19m20s 19:20]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
Solve the problems in Source.cpp attached below using the &amp;lt;algorithm&amp;gt; library and other parts of the standard library as extensively as possible. As a bonus problem, implement the sprite drawing effect shown at the end of the video using a lambda function.&lt;br /&gt;
&lt;br /&gt;
* [https://www.planetchili.net/downloads/I16-HW.zip Source.cpp (homework file)]&lt;br /&gt;
* [https://github.com/planetchili/sprite Sprite Repo (for bonus problem)]&lt;br /&gt;
&lt;br /&gt;
The homework solution video can be found [https://youtu.be/_1-iES-Eytc here]&lt;br /&gt;
&lt;br /&gt;
== Related Series ==&lt;br /&gt;
For an in-depth look into the &amp;lt;algorithm&amp;gt; library and beyond, check out [[STD Gems]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://en.cppreference.com/w/cpp/algorithm Algorithms Library]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Intermediate C++ Game Programming Tutorial 17|Next in series (Tutorial 17)]]&lt;br /&gt;
* [[Intermediate C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_9&amp;diff=3341</id>
		<title>Beginner C++ Game Programming Tutorial 9</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_9&amp;diff=3341"/>
				<updated>2022-05-05T04:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this video we make our first class and Chili teaches us about the birds and the bees and the static constexpr.&lt;br /&gt;
&lt;br /&gt;
== Concepts Taught ==&lt;br /&gt;
* Creating a &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public&amp;lt;/code&amp;gt; vs. &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; access&lt;br /&gt;
* &amp;lt;code&amp;gt;static&amp;lt;/code&amp;gt; member variables&lt;br /&gt;
* &amp;lt;code&amp;gt;constexpr&amp;lt;/code&amp;gt; variables&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* Intro [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=0m0s 0:00]&lt;br /&gt;
* ClampScreen code recap [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=0m18s 0:18]&lt;br /&gt;
* The issue of the current Game data organization: [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=1m38s 1:38]&lt;br /&gt;
* Classes: OOP to the rescue [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=1m38s 2:25]&lt;br /&gt;
* Creating our own class [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=3m21s 3:21]&lt;br /&gt;
* Header guard: &amp;lt;code&amp;gt;#pragma once&amp;lt;/code&amp;gt; [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=3m40s 3:40]&lt;br /&gt;
* Letting other files know about our class: including headers [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=5m52s 5:52]&lt;br /&gt;
* Refactoring game code related to poo [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=6m56s 6:56]&lt;br /&gt;
* A little trick: Advanced find + replace with regex enabled [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=7m8s 7:08]&lt;br /&gt;
* Adding an implementation file (.cpp) for Poo class [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=9m5s 9:05]&lt;br /&gt;
* Advantages of the new poo object oriented code [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=12m7s 12:07]&lt;br /&gt;
* Initializing poos' velocities [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=14m12s 14:12]&lt;br /&gt;
* Factoring out common attributes from class objects: &amp;lt;code&amp;gt;static&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;constexpr&amp;lt;/code&amp;gt; [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=14m41s 14:41]&lt;br /&gt;
* Difference between &amp;lt;code&amp;gt;constexpr&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=16m8s 16:08]&lt;br /&gt;
* Accessing static class members [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=16m40s 16:40]&lt;br /&gt;
* Class member access restrictions: &amp;lt;code&amp;gt;public&amp;lt;/code&amp;gt; vs &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=17m20s 17:20]&lt;br /&gt;
* Summing up what we have learned and a couple of tips [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=19m12s 19:12]&lt;br /&gt;
* Homework [https://www.youtube.com/watch?v=Wwgyw69MiEU&amp;amp;t=20m3s 20:03]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
Make the Dude entity into a &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; as well. It's up to you to decide what member functions you should give it. Might want to add another function to &amp;lt;code&amp;gt;Poo&amp;lt;/code&amp;gt; as well (hint hint hint!).&lt;br /&gt;
&lt;br /&gt;
The solution is given in [https://youtu.be/b4FjV2R9jy0 this video].&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.planetchili.net/downloads/T9-Starting-Code.zip T9 Starting Code]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/9/Beginner%20Tutorial%209%20Code.zip Tutorial 9 Code]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/9/Beginner%20Tutorial%209%20HW%20Code.zip Tutorial 9 Homework Solution Code]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 10|Next in series (Tutorial 10)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_13&amp;diff=3333</id>
		<title>Intermediate C++ Game Programming Tutorial 13</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_13&amp;diff=3333"/>
				<updated>2022-05-05T04:26:29Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this tutorial we learn how to draw text to the screen. Now we can make anime sex games.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Bitmap font sheet&lt;br /&gt;
* Text rendering&lt;br /&gt;
* Color replacement sprite effect&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
[https://youtu.be/kpp7mxFUwSg Tutorial 13]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
[https://github.com/planetchili/sprite Sprite Repo]&lt;br /&gt;
&lt;br /&gt;
== Download Materials ==&lt;br /&gt;
* [https://www.planetchili.net/downloads/I13-Font-Sheets.zip Font Sheets]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
Modify the &amp;lt;code&amp;gt;Animation&amp;lt;/code&amp;gt; class so that it draws the sprite frames with a translucent &amp;quot;ghost&amp;quot; effect.&lt;br /&gt;
* [https://youtu.be/KkJ3MU402ek Homework Solution]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Intermediate C++ Game Programming Tutorial 14|Next in series (Tutorial 14)]]&lt;br /&gt;
* [[Intermediate C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_11&amp;diff=3329</id>
		<title>Intermediate C++ Game Programming Tutorial 11</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_11&amp;diff=3329"/>
				<updated>2022-05-05T04:26:29Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this tutorial we learn how to draw parts (subregions) of images, we learn how to clip our shit so that it don't go off the screen (or off of any arbitrary rectangle we define in fact), and we learn to draw sprites with transparent pixels.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Drawing image subregions&lt;br /&gt;
* Clipping sprites&lt;br /&gt;
* Drawing sprites with chroma keying (transparent pixels)&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
[https://youtu.be/uHZmTmTRdkA Tutorial 11]&lt;br /&gt;
* Drawing subregions of a sprite sheet [https://youtu.be/uHZmTmTRdkA?t=57s 0:57]&lt;br /&gt;
* Using a &amp;lt;code&amp;gt;RectI clip&amp;lt;/code&amp;gt; object, clip a (subregion of a) sprite [https://youtu.be/uHZmTmTRdkA?t=6m45s 6:45]&lt;br /&gt;
* Chili's Dank Meta Nugs - teacher's advice [https://youtu.be/uHZmTmTRdkA?t=13m16s 13:16]&lt;br /&gt;
* Code clean up. Have different overloaded definitions of &amp;lt;code&amp;gt;DrawSprite()&amp;lt;/code&amp;gt; call the most advanced version with clipping [https://youtu.be/uHZmTmTRdkA?t=13m57s 13:57]&lt;br /&gt;
* Implement &amp;lt;code&amp;gt;DrawSprite&amp;lt;/code&amp;gt; functions that apply chroma keying (transparent pixels) [https://youtu.be/uHZmTmTRdkA?t=15m03s 15:03]&lt;br /&gt;
* Adding &amp;lt;code&amp;gt;operator==&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;operator!=&amp;lt;/code&amp;gt; member functions (comparison operators) to the &amp;lt;code&amp;gt;Color&amp;lt;/code&amp;gt; class [https://youtu.be/uHZmTmTRdkA?t=17m37s 17:37]&lt;br /&gt;
* Homework assignment [https://youtu.be/uHZmTmTRdkA?t=19m00s 19:00]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
[https://github.com/planetchili/sprite Sprite Repo]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/planetchili/poo_game Poo Game Repo]&lt;br /&gt;
&lt;br /&gt;
== Download Materials ==&lt;br /&gt;
* [https://www.planetchili.net/downloads/I11-Images.zip Tutorial and Homework Images]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
The homework is to use the images provided in the above zip file to upgrade the Poo Game to no longer use compiled sprites.&lt;br /&gt;
* [https://youtu.be/BPExmXz0Luk Homework solution video ]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Intermediate C++ Game Programming Tutorial 12|Next in series (Tutorial 12)]]&lt;br /&gt;
* [[Intermediate C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Chili_Framework&amp;diff=3330</id>
		<title>Chili Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Chili_Framework&amp;diff=3330"/>
				<updated>2022-05-05T04:26:29Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Chili Framework is designed as a vehicle to make it fun and easy to learn C++ in a graphical context. It lightly wraps a bunch of pain-in-the-ass WinAPI and Direct3D bullshit giving us direct access to the framebuffer for manipulating screen pixels. This allows us to explore basic graphical concepts at the same time that we are learning the fundamentals of the C++ language. Our research shows that this results in a 69% lower incidence of learners shitting themselves to death out of sheer boredom.&lt;br /&gt;
&lt;br /&gt;
== Core Classes ==&lt;br /&gt;
&lt;br /&gt;
=== Game ===&lt;br /&gt;
:''Main article: [[Game (Chili Framework)]]''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#lsth:Game (Chili Framework)}}&lt;br /&gt;
&lt;br /&gt;
=== Graphics ===&lt;br /&gt;
:''Main article: [[Graphics (Chili Framework)]]''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#lsth:Graphics (Chili Framework)}}&lt;br /&gt;
&lt;br /&gt;
=== MainWindow ===&lt;br /&gt;
:''Main article: [[MainWindow (Chili Framework)]]''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#lsth:MainWindow (Chili Framework)}}&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
:''Main article: [[Keyboard (Chili Framework)]]''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#lsth:Keyboard (Chili Framework)}}&lt;br /&gt;
&lt;br /&gt;
=== Mouse ===&lt;br /&gt;
:''Main article: [[Mouse (Chili Framework)]]''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#lsth:Mouse (Chili Framework)}}&lt;br /&gt;
&lt;br /&gt;
=== Color ===&lt;br /&gt;
&amp;lt;code&amp;gt;Color&amp;lt;/code&amp;gt; represents a 32-bit RGBA color value (or a single pixel if you like), and gives you member functions to access the (fudge) packed channels. There is also a &amp;lt;code&amp;gt;Colors&amp;lt;/code&amp;gt; namespace with predefined colors, like &amp;lt;code&amp;gt;Colors::Aqua&amp;lt;/code&amp;gt; (not to be confused with Aqua, the majestic Danish eurodance group).&lt;br /&gt;
&lt;br /&gt;
== Other Bullshit Components ==&lt;br /&gt;
&lt;br /&gt;
=== Main ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Main.cpp&amp;lt;/code&amp;gt; file contains the function &amp;lt;code&amp;gt;wWinMain()&amp;lt;/code&amp;gt;, which is the entry point for the program (where the whole shebang starts). It creates the &amp;lt;code&amp;gt;MainWindow&amp;lt;/code&amp;gt; object, creates the &amp;lt;code&amp;gt;Game&amp;lt;/code&amp;gt; object, and repeatedly performs the steps a) process all pending windows messages and b) process a game frame, until it is time for the big sleep. There is also a bunch of exception catching code to catch any stray exceptions and display their error information via a message box.&lt;br /&gt;
&lt;br /&gt;
=== ChiliException ===&lt;br /&gt;
The class &amp;lt;code&amp;gt;ChiliException&amp;lt;/code&amp;gt; forms the basis for all exceptions that will be generated by the framework or the game code. &amp;lt;code&amp;gt;Graphics::Exception&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MainWindow::Exception&amp;lt;/code&amp;gt; are specific types that inherit from &amp;lt;code&amp;gt;ChiliException&amp;lt;/code&amp;gt;. If you want to &amp;lt;code&amp;gt;throw&amp;lt;/code&amp;gt; your own exceptions, you should inherit from &amp;lt;code&amp;gt;ChiliException&amp;lt;/code&amp;gt;, but that's kind of an advanced topic, so don't sweat it Broseph.&lt;br /&gt;
&lt;br /&gt;
=== ChiliWin ===&lt;br /&gt;
This file should be included in lieu of &amp;lt;code&amp;gt;&amp;lt;Windows.h&amp;gt;&amp;lt;/code&amp;gt;. It includes &amp;lt;code&amp;gt;&amp;lt;Windows.h&amp;gt;&amp;lt;/code&amp;gt;, but before doing so it defines some preprocessor switches which set the target minimum version of Windows (Vista) and cut some unused bullshit from the included Windows code, saving on compilation time. If you somehow end up using weird WinAPI bullshit, you might need to modify this file to re-enable that code.&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer Shaders ===&lt;br /&gt;
Since D3D11 is a little bitch and won't let us touch its goodies (i.e. the backbuffer), we have to copy our composed frame over to a texture and then draw that texture to the backbuffer. Therefore, we need pixel and vertex shaders. Note that the solution is set up to first compile the shader sources to C++ header files (extension &amp;lt;code&amp;gt;*.shh&amp;lt;/code&amp;gt;, which I just pulled out of my ass by the way) and then compile the C++ source files. &amp;lt;code&amp;gt;Graphics.cpp&amp;lt;/code&amp;gt; includes the &amp;lt;code&amp;gt;*.shh&amp;lt;/code&amp;gt; files, so when browsing the code of a fresh/cleaned solution you may notice errors in &amp;lt;code&amp;gt;Graphics.cpp&amp;lt;/code&amp;gt;, but that's probably just because the &amp;lt;code&amp;gt;*.shh&amp;lt;/code&amp;gt; files don't exist yet. Build once and those errors should disappear.&lt;br /&gt;
&lt;br /&gt;
=== Resource ===&lt;br /&gt;
&amp;lt;code&amp;gt;ChiliFramework.rc&amp;lt;/code&amp;gt; is the resource script for baking the icon &amp;lt;code&amp;gt;Chili.ico&amp;lt;/code&amp;gt; into the executable, and &amp;lt;code&amp;gt;Resource.h&amp;lt;/code&amp;gt; contains the ID number used to load the icon from the executable at runtime.&lt;br /&gt;
&lt;br /&gt;
=== DXErr ===&lt;br /&gt;
Some code written by a guy at Microsoft that translates DirectX error codes into something with a little more ''je ne sais quoi''. Used to be part of the SDK, but whatever I guess. Licensing status not really clear.&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
=== Criticisms ===&lt;br /&gt;
Some people resent a custom framework being used in the tutorials, because they feel that following the tutorials will &amp;quot;lock them into&amp;quot; someone else's proprietary framework, or because they want to start from an empty project. If you're one of these people, just chill out my dawg. The framework is pretty tiny and lightweight in the grand scheme of things, so you're not even going to invest enough time learning it to feel &amp;quot;locked in&amp;quot;. This series is about learning C++, graphics, and games, not about learning a framework.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The framework is just an accelerator that allows us to manipulate pixels directly, giving us intimate, carnal knowledge of how graphics works. The end goal is to work with Direct3D directly, so SDL, SFML, Unity, etc. are all overkill and would distract us from our main goal. The training wheels will come off when the time is right, and until then, the framework will allow us to focus on the most important topics first without a lot of bullshit that would just slow us down and maybe cause you to lose interest.&lt;br /&gt;
&lt;br /&gt;
== How to Get the Framework ==&lt;br /&gt;
The the zipped Framework solution folder can be downloaded directly from [https://www.planetchili.net/downloads/Chili%20DirectX%20Framework.zip here]. You can also clone the [https://github.com/planetchili/chili_framework repository on GitHub]. Bone ape tit.&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_10&amp;diff=3331</id>
		<title>Beginner C++ Game Programming Tutorial 10</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_10&amp;diff=3331"/>
				<updated>2022-05-05T04:26:29Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this video we learn how to loop our shit. Fuckoff copy and paste. Die in a gasoline fire (just kidding, don't leave me baby!)&lt;br /&gt;
&lt;br /&gt;
== Concepts Taught ==&lt;br /&gt;
* &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; loop&lt;br /&gt;
* &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop&lt;br /&gt;
* &amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt; ... &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; loop&lt;br /&gt;
* Preincrement &amp;lt;code&amp;gt;++x&amp;lt;/code&amp;gt; and postincrement &amp;lt;code&amp;gt;x++&amp;lt;/code&amp;gt; operators&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* Intro [https://www.youtube.com/watch?v=rwJ0sOmBK6E&amp;amp;t=0m0s 0:00]&lt;br /&gt;
* The roadmap [https://www.youtube.com/watch?v=rwJ0sOmBK6E&amp;amp;t=0m20s 0:20]&lt;br /&gt;
* Loops: &amp;lt;code&amp;gt;while() {...}&amp;lt;/code&amp;gt; [https://www.youtube.com/watch?v=rwJ0sOmBK6E&amp;amp;t=1m39s 1:39]&lt;br /&gt;
* Loops: &amp;lt;code&amp;gt;for() {...}&amp;lt;/code&amp;gt; [https://www.youtube.com/watch?v=rwJ0sOmBK6E&amp;amp;t=8m20s 8:20]&lt;br /&gt;
* Increment/decrement unary operator [https://www.youtube.com/watch?v=rwJ0sOmBK6E&amp;amp;t=10m51s 10:51]&lt;br /&gt;
* Fun Chili fact for the day: the origins of the &amp;quot;C++&amp;quot; language name [https://www.youtube.com/watch?v=rwJ0sOmBK6E&amp;amp;t=11m51s 11:51]&lt;br /&gt;
* Loops: &amp;lt;code&amp;gt;do {...} while ()&amp;lt;/code&amp;gt; [https://www.youtube.com/watch?v=rwJ0sOmBK6E&amp;amp;t=12m36s 12:36]&lt;br /&gt;
* Loop differences, when to use &amp;lt;code&amp;gt;for(){}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while(){}&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;do{} while()&amp;lt;/code&amp;gt; (if you are kinda weird) [https://www.youtube.com/watch?v=rwJ0sOmBK6E&amp;amp;t=13m15s 13:15]&lt;br /&gt;
* Chili's Dank Meta Nugs [https://www.youtube.com/watch?v=rwJ0sOmBK6E&amp;amp;t=15m6s 15:06]&lt;br /&gt;
* Homework [https://www.youtube.com/watch?v=rwJ0sOmBK6E&amp;amp;t=18m23s 18:23]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
# Write a routine to draw a rectangle on the screen.&lt;br /&gt;
# Make it so that you can control the position of the rectangle with the arrow keys and the size of the rectangle with the WASD keys. For info on querying keyboard input for alphanumeric keys, see the section &amp;quot;Virtual Key Codes&amp;quot; on [[Keyboard (Chili Framework)#Virtual_Key_Codes|this page]].&lt;br /&gt;
&lt;br /&gt;
The solution is given in a [https://youtu.be/lWTwNXfU-Nc this] video.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.planetchili.net/downloads/Chili%20DirectX%20Framework.zip Framework Download]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/10/Beginner%20Tutorial%2010%20Code.zip Tutorial 10 Code]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/10/Beginner%20Tutorial%2010%20HW%20Code.zip Tutorial 10 Homework Solution Code]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 11|Next in series (Tutorial 11)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_13&amp;diff=3332</id>
		<title>Beginner C++ Game Programming Tutorial 13</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_13&amp;diff=3332"/>
				<updated>2022-05-05T04:26:29Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this lesson we learn about the bomb-ass data structure known as the array, the granddaddy of them all. We also learn about boring shit like the automatically-generated default constructor (BOOOOORIIIIING! NEEEEEERRRD!).&lt;br /&gt;
&lt;br /&gt;
== Concepts Taught ==&lt;br /&gt;
* Arrays&lt;br /&gt;
* Default Constructor&lt;br /&gt;
* Using &amp;lt;code&amp;gt;assert&amp;lt;/code&amp;gt;s&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* Intro [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=0m0s 0:00]&lt;br /&gt;
* Mean average code example: local variables analysis in debugger [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=0m54s 0:54]&lt;br /&gt;
* Arrays visualization in memory, arrays anatomy [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=2m37s 2:37]&lt;br /&gt;
* Declaring an array in C++ [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=5m19s 5:19]&lt;br /&gt;
* Array size must be known at compile time [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=7m20s 7:20]&lt;br /&gt;
* What's so good about arrays: Using arrays in loops [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=8m23s 8:23]&lt;br /&gt;
* Array size limit [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=11m22s 11:22]&lt;br /&gt;
* Refactoring Poo Game: Using arrays [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=13m20s 13:20]&lt;br /&gt;
* Useful logic pattern for determining if all elements &amp;quot;return true&amp;quot; [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=15m25s 15:25]&lt;br /&gt;
* Constructing array of objects: default constructor [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=18m30s 18:30]&lt;br /&gt;
* Note: There are special member functions in C++ [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=19m54s 19:54]&lt;br /&gt;
* Initializing poos [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=21m39s 21:39]&lt;br /&gt;
* Disadvantage of initializing poos this way (&amp;lt;code&amp;gt;Init()&amp;lt;/code&amp;gt; funciton): breaks encapsulation [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=23m53s 23:53]&lt;br /&gt;
* Making it a little better: [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=25m7s 25:07]&lt;br /&gt;
* Another, bigger disadvantage of initializing poos using &amp;lt;code&amp;gt;Init()&amp;lt;/code&amp;gt; funciton: &amp;lt;code&amp;gt;Init()&amp;lt;/code&amp;gt; is separate from object construction, and thus could be easily desynchronized. [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=28m18s 28:18]&lt;br /&gt;
* Solving above issue [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=29m7s 29:07]&lt;br /&gt;
* Safety checks: Is it worth it? [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=30m28s 30:28]&lt;br /&gt;
* In the future we will learn about vectors, a better solution for above problems [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=31m5s 31:05]&lt;br /&gt;
* Homework [https://www.youtube.com/watch?v=U4IdBkegBuY&amp;amp;t=31m41s 31:41]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
# Make it so that touching the poo is game over and the goal is to reach a square.&lt;br /&gt;
# Make the square's color pulsate and make a meter that keeps track of how many times the goal was reached.&lt;br /&gt;
&lt;br /&gt;
The solution is given in [https://www.youtube.com/watch?v=g4Xwf8XK2Ew this] video.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* The starting code for Tutorial 13 is [https://www.planetchili.net/downloads/T13-Poo.zip here].&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/13/Beginner%20Tutorial%2013%20Code.zip Tutorial 13 Code]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/13/Beginner%20Tutorial%2013%20HW%20Code.zip Tutorial 13 Homework Solution Code]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 14|Next in series (Tutorial 14)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_14&amp;diff=3328</id>
		<title>Beginner C++ Game Programming Tutorial 14</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_14&amp;diff=3328"/>
				<updated>2022-05-05T04:23:29Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a two-part tutorial in which we tackle a game with a little more substance--the Snake Game. Grids and arrays galore. Majestic.&lt;br /&gt;
&lt;br /&gt;
== Super Important NOTE(S) ==&lt;br /&gt;
The Snek game is a little more complicated than the Poo game. Don't get butthurt and give up if you can't make it work. Just make sure you understand the Main Concepts Taught listed below. &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;You can always move on to the next tutorials and come back to the Snek game later when you've got a little more experience under your belt.&amp;lt;/span&amp;gt; And as usual, if you're lost or just have some lingering questions, the forum is a great place to go for help. Here is a forum discussion about the Snek game code: [https://www.planetchili.net/forum/viewtopic.php?f=3&amp;amp;t=3838 Snek Talk]. Feel free to chime in and add info or ask questions! You can also @mention me on the [https://www.planetchili.net/discord Discord] and maybe we can talk in real time (timezone diffs might make this hard thoough).&lt;br /&gt;
&lt;br /&gt;
If you are going to attempt to finish the game off by yourself at the end of T14a (good on you mate), there is something you should be aware of. The function &amp;lt;code&amp;gt;Snake::Grow()&amp;lt;/code&amp;gt; does not set the position of the &amp;quot;new&amp;quot; segment when it grows the snake. So you '''absolutely must''' call &amp;lt;code&amp;gt;Snake::MoveBy(...)&amp;lt;/code&amp;gt; '''''before''''' you draw the snake. If you attempt to draw the snake after growing, but without moving first, the last segment will have an invalid &amp;lt;code&amp;gt;loc&amp;lt;/code&amp;gt;, and trying to draw it in that state will most likely crash the program.&lt;br /&gt;
&lt;br /&gt;
Also, there is a bug in the &amp;lt;code&amp;gt;Snake::Grow()&amp;lt;/code&amp;gt; function at the end of 14a. See if you can figure out what it is, and how to fix it... :)&lt;br /&gt;
&lt;br /&gt;
== Main Concepts Taught ==&lt;br /&gt;
* Managing used/unused sections of an array&lt;br /&gt;
* &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt; vs &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* Inner (nested) &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;es&lt;br /&gt;
* &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; overloading&lt;br /&gt;
* Special functions: copy constructor and copy assignment (briefly)&lt;br /&gt;
* The &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt; (modulus) operator (in the solution video)&lt;br /&gt;
* The &amp;lt;code&amp;gt;std::max()&amp;lt;/code&amp;gt; function (in the solution video)&lt;br /&gt;
&lt;br /&gt;
== Other New(ish) Things ==&lt;br /&gt;
&lt;br /&gt;
There was a bunch of other newish bullshit that Chili used, some of which he didn't go into much depth on. For those of you who give a shit, here is some extra info.&lt;br /&gt;
&lt;br /&gt;
==== Aggregate Initialization &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; ====&lt;br /&gt;
With the &amp;lt;code&amp;gt;struct Location&amp;lt;/code&amp;gt; (and later, &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;), we didn't define any constructors, so all we had was the default do-nothing constructor that is generated by the compiler. In order to initialize a &amp;lt;code&amp;gt;Location&amp;lt;/code&amp;gt; at one point in the video, Chili used something like &amp;lt;code&amp;gt;Location loc = {69,69};&amp;lt;/code&amp;gt;. This is allowed, but the data type being initialized must satisfy certain conditions. Namely, it must have only &amp;lt;code&amp;gt;public&amp;lt;/code&amp;gt; data members and it must have no constructors defined. For the full details on the requirements, see [http://en.cppreference.com/w/cpp/language/aggregate_initialization this page]. The brace &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; initialization can be used for &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;es etc. that have constructors as well, but then the parameters have to conform to the constructor(s) and it will just call the applicable constructor.&lt;br /&gt;
&lt;br /&gt;
==== Compiler-Generated Copy Constructor and Copy Assignment &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; ====&lt;br /&gt;
In the tutorial, we assign &amp;lt;code&amp;gt;Location&amp;lt;/code&amp;gt; objects to one another, and we construct a &amp;lt;code&amp;gt;Location&amp;lt;/code&amp;gt; by copying an existing one. These operations actually call member functions that are defined for the &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt;), and if you do not supply these member functions, the compiler will generate them by default (as is the case in this tutorial).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ClassName::ClassName( const ClassName&amp;amp; )&amp;lt;/code&amp;gt;&lt;br /&gt;
This is the default copy constructor, and its behavior is to, in turn, copy construct each of the members of the object under construction using the corresponding member in the object being passed in.&lt;br /&gt;
* &amp;lt;code&amp;gt;ClassName&amp;amp; ClassName::operator=( const ClassName&amp;amp; )&amp;lt;/code&amp;gt;&lt;br /&gt;
This is the  default copy assignment operator, and its behavior is to, in turn, copy assign each of the members of the object under assignment using the corresponding member in the object being passed in. It also returns a reference to the object under assignment.&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
[https://youtu.be/KTyemy82Zqk Tutorial 14a]&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/DoO_NEksf3c Tutorial 14b]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
The homework is to add some polish to the Snek Game. The following features are suggested and will be covered in the solution video.&lt;br /&gt;
* Adjustable board position&lt;br /&gt;
* Border drawn around board&lt;br /&gt;
* Padding between board tiles&lt;br /&gt;
* Display title screen&lt;br /&gt;
* Give the Snek a pattern of colors for its segments&lt;br /&gt;
* Make it so the Snek speeds up over time&lt;br /&gt;
&lt;br /&gt;
In addition, it is suggested that you extend the Snek game by adding some new mechanics to spice things up. One suggestion is making randomly spawning obstacles that accrue on the game board. Note that this extra challenge will not be covered in the solution video. If you are attempting it (or some other feature) and need some help, you can seek help on the [[Planet_Chili_Forums|forum]] or the [http://www.planetchili.net Discord].&lt;br /&gt;
&lt;br /&gt;
The solution video is [https://www.youtube.com/watch?v=aE9fGMRRe6U here].&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.planetchili.net/downloads/T14-Snek-Start.zip Snek Starting Solution]&lt;br /&gt;
* [https://github.com/planetchili/snek GitHub Repo Containing Finished Snek Game]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 15|Next in series (Tutorial 15)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Planet_Chili_Forums&amp;diff=3327</id>
		<title>Planet Chili Forums</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Planet_Chili_Forums&amp;diff=3327"/>
				<updated>2022-05-05T04:23:20Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://forum.planetchili.net Forum] is the heart of the PlanetChili.net community. This is the best place to ask for help with the tutorials, connect with like-minded programmers and bounce ideas, or just generally shitpost. If you want to talk to and receive a reply from the Chili himself, your best bet is on the Forums.&lt;br /&gt;
&lt;br /&gt;
==  &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;How to Ask for Coding Help&amp;lt;/span&amp;gt; ==&lt;br /&gt;
Coding and troubleshooting help is given via the Forum or on Discord.&lt;br /&gt;
&lt;br /&gt;
Whenever possible, '''always''' attach your complete Visual Studio solution with any request for help. Asking someone to debug your code without giving them the code so that they can run the debugger on it is simply not the done thing. The solution folder should be '''cleaned''' and zipped before posting it. Alternatively, consider submitting solutions via GitHub.&lt;br /&gt;
=== Cleaning a Solution ===&lt;br /&gt;
Visual Studio maintains a bunch of cached data in the solution folder that pushes the total size to 50 MB or more, and that shit is gonna be too big to share. What you need to do is delete those files before you zip the folder. A properly cleaned solution (without any large files like audio) should definitely be less than 500 kb in size (maybe up to a couple of MB if you got a ton of huge putpixel functions).&lt;br /&gt;
The following files and folders should be deleted if they exist (some of them will be hidden, so you need to change your windows settings to show hidden files and folders):&lt;br /&gt;
* engine\debug\&lt;br /&gt;
* engine\release\&lt;br /&gt;
* engine\x64\&lt;br /&gt;
* engine\*.shh&lt;br /&gt;
* engine\resource.aps&lt;br /&gt;
* .git\ &amp;lt;small&amp;gt;''(this one will be hidden)''&amp;lt;/small&amp;gt;&lt;br /&gt;
* .vs\ &amp;lt;small&amp;gt;''(this one will be hidden)''&amp;lt;/small&amp;gt;&lt;br /&gt;
* debug\&lt;br /&gt;
* release\&lt;br /&gt;
* x64\&lt;br /&gt;
* .gitattributes&lt;br /&gt;
* .gitignore&lt;br /&gt;
* chili framework 2016.vc.db&lt;br /&gt;
If you are using source control (git), make sure you make a copy of the solution folder before deleting these files, as you will lose your git repo if you do not operate on a copy.&lt;br /&gt;
&amp;lt;!--If this all seems like a major pain in the ass, there is an easier solution. Just copy your solution folder, run [https://www.planetchili.net/downloads/chili_clean.zip this batch file] inside the copied folder, and then zip it up. Easy peezy.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Register an Account ==&lt;br /&gt;
To combat the evil spamlords, I put in a weird captcha thing to separate the men from the bots. There are two categories, one on the top and one on the bottom. Shit that sounds good, and shit that sounds terrible (want and do not want). Just drag the list items down (or up) and organize the list into good shit and bad shit. It's that easy. If you're still having trouble, check out [https://youtu.be/XalB8Wcf4Bk?t=4m43s this video].&lt;br /&gt;
&lt;br /&gt;
== Link to the Forum ==&lt;br /&gt;
* [http://forum.planetchili.net Planet Chili Forum]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_12&amp;diff=3326</id>
		<title>Beginner C++ Game Programming Tutorial 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_12&amp;diff=3326"/>
				<updated>2022-05-05T04:20:34Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Text replacement - &amp;quot;http://www.planetchili.net/&amp;quot; to &amp;quot;https://www.planetchili.net/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here we learn about the concept of encapsulation (ask your mom where she keeps the Vicodin!), which is the main principle behind object oriented programming (so listen the fuck up eh?). We also learn how to construct shit, and how to make our shit private.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;Important Note&amp;lt;/span&amp;gt; ==&lt;br /&gt;
Visual Studio has a &amp;lt;cool feature&amp;gt; wherein when you use &amp;quot;quick actions... -&amp;gt; move definition location&amp;quot; on a constructor, it adds a goddamn &amp;lt;code&amp;gt;inline&amp;lt;/code&amp;gt; keyword which fucks the whole goddamn works up! D:&amp;lt; This is fixed in the homework solution, but if you are attempting the homework before peeking (as you should be), then this could fuck you up royally. Keep it in mind.&lt;br /&gt;
&lt;br /&gt;
== Concepts Taught ==&lt;br /&gt;
* Encapsulation and data hiding&lt;br /&gt;
* How to create a constructor&lt;br /&gt;
* How do initialize embedded objects (class initializer list)&lt;br /&gt;
* How to control member access (&amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; keyword)&lt;br /&gt;
&lt;br /&gt;
== Encapsulation ==&lt;br /&gt;
[http://stackoverflow.com/questions/18300953/why-encapsulation-is-an-important-feature-of-oop-languages/18301027#18301027 This page] has some interesting discussion on why we bother with all this encapsulation bullshit.&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* Intro [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=0m0s 0:00]&lt;br /&gt;
* Encapsulation: Difference between &amp;lt;code&amp;gt;public&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; data members [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=0m55s 0:55]&lt;br /&gt;
* Poo class: Making member data private [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=2m43s 2:43]&lt;br /&gt;
* Important note on &amp;quot;Getters&amp;quot; and &amp;quot;Setters&amp;quot; [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=5m0s 5:00]&lt;br /&gt;
* Advantages of &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; member data with a getter and setter, as opposed to just &amp;lt;code&amp;gt;public&amp;lt;/code&amp;gt; member data [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=7m7s 7:07]&lt;br /&gt;
* Constructors: setting values during object initialization [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=9m30s 9:30]&lt;br /&gt;
* Class initializer list: Initializing embedded objects (Poo objects inside a Game object) [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=12m34s 12:34]&lt;br /&gt;
* Class initializer list order must correspond to the order of data member declaraion [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=17m10s 17:10]&lt;br /&gt;
* Visual Studio tricks: Quick actions -&amp;gt; Move definition location, but with a little brainfucky surprize you will learn about very soon [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=19m59s 19:59]&lt;br /&gt;
* Reasons to properly encapsulate class member data [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=20m52s 20:52]&lt;br /&gt;
* Homework [https://www.youtube.com/watch?v=QUBiAUKfVhM&amp;amp;t=30m10s 30:10]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
# Encapsulate the fuck out of the &amp;lt;code&amp;gt;Dude&amp;lt;/code&amp;gt; class.&lt;br /&gt;
# Increase the number of &amp;lt;code&amp;gt;Poo&amp;lt;/code&amp;gt; objects from 3 to 9.&lt;br /&gt;
&lt;br /&gt;
The solution is given in [https://youtu.be/8Lb-E4g0lpc this video].&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* The starting code for Tutorial 12 is [https://www.planetchili.net/downloads/T12-Poo.zip here].&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/12/Beginner%20Tutorial%2012%20Code.zip Tutorial 12 Code]&lt;br /&gt;
* [https://planetchili.net/downloads/apworks/12/Beginner%20Tutorial%2012%20HW%20Code.zip Tutorial 12 Homework Solution Code]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 13|Next in series (Tutorial 13)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=ASM_and_Chill_with_Chili_1&amp;diff=3325</id>
		<title>ASM and Chill with Chili 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=ASM_and_Chill_with_Chili_1&amp;diff=3325"/>
				<updated>2022-04-12T01:54:41Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this video Chili reacquaints himself with TASM and x86 assembly, going over the basics of setting up a .asm source file, and calling some system services (BIOS int 10h, int 16h, DOS int 21h). We then mess with some looping and counting, defining some global data and getting pointers (offsets), and then we go all the way in and do some real calculations, fucking shit up real good along the way. But debug.exe has got our back, and we squash the bugs while also showing you guys the machine code being executed instruction by instruction by the CPU, and how it affects the state of the registers and RAM.&lt;br /&gt;
&lt;br /&gt;
== Stuff ==&lt;br /&gt;
&lt;br /&gt;
Knowledge bombs will go here if there is demand for them / I have the time to jam it in (gurl).&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
Here is the zip file containing DOSBox and TASM all set up for ya [https://www.planetchili.net/downloads/DOSBox-Chili.zip Tool Download].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* The list of ASM and Chill vids: [[Patreon Exclusive Content#ASM and Chill with Chili|the swag list]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Main_Page&amp;diff=3324</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Main_Page&amp;diff=3324"/>
				<updated>2021-04-25T01:56:32Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Cplogo-big.png|right|caption]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;color:#BFB;font-size:180%;font-weight:bold;&amp;quot;&amp;gt;Welcome to Chilipedia!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This is Chilipedia. You can do anything at Chilipedia, anything at all. The only limit is yourself. The infinite is possible at Chilipedia. The unattainable is unknown at Chilipedia. Welcome to Chilipedia.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If this is your first time at Chilipedia, might I recommend the [[Beginner C++ Game Programming Series]] page, it is ''especially'' derpy and unprofessional today. If you're looking for something a little spicier, check out the [[Intermediate C++ Game Programming Series]] and the [[Advanced C++ Programming Series]], or for something with a little more depth, check out the [[3D Fundamentals Series]] and its sequel, the [[Hardware 3D Series (C++ DirectX Graphics)]]. Also [[STD Gems]] is a thing. Or you can always order à la carte from among our [[Special:AllPages|extensive selection of pure garbage]] (&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;PSST! try out the search feature (top right of this page)!&amp;lt;/span&amp;gt;). A list of [[Tools &amp;amp; Resources]] that were found helpful by the Chili community.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;For all other things that are Chili-related, check out the [http://www.planetchili.net Planet Chili Nexus].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Also if you are a patreon, I have some stuff for you on the [http://wiki.planetchili.net/index.php?title=Patreon_Exclusive_Content Patreon Exclusive Content] page.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_14&amp;diff=3323</id>
		<title>Beginner C++ Game Programming Tutorial 14</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_14&amp;diff=3323"/>
				<updated>2021-04-02T12:12:38Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a two-part tutorial in which we tackle a game with a little more substance--the Snake Game. Grids and arrays galore. Majestic.&lt;br /&gt;
&lt;br /&gt;
== Super Important NOTE(S) ==&lt;br /&gt;
The Snek game is a little more complicated than the Poo game. Don't get butthurt and give up if you can't make it work. Just make sure you understand the Main Concepts Taught listed below. &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;You can always move on to the next tutorials and come back to the Snek game later when you've got a little more experience under your belt.&amp;lt;/span&amp;gt; And as usual, if you're lost or just have some lingering questions, the forum is a great place to go for help. Here is a forum discussion about the Snek game code: [http://www.planetchili.net/forum/viewtopic.php?f=3&amp;amp;t=3838 Snek Talk]. Feel free to chime in and add info or ask questions! You can also @mention me on the [http://www.planetchili.net/discord Discord] and maybe we can talk in real time (timezone diffs might make this hard thoough).&lt;br /&gt;
&lt;br /&gt;
If you are going to attempt to finish the game off by yourself at the end of T14a (good on you mate), there is something you should be aware of. The function &amp;lt;code&amp;gt;Snake::Grow()&amp;lt;/code&amp;gt; does not set the position of the &amp;quot;new&amp;quot; segment when it grows the snake. So you '''absolutely must''' call &amp;lt;code&amp;gt;Snake::MoveBy(...)&amp;lt;/code&amp;gt; '''''before''''' you draw the snake. If you attempt to draw the snake after growing, but without moving first, the last segment will have an invalid &amp;lt;code&amp;gt;loc&amp;lt;/code&amp;gt;, and trying to draw it in that state will most likely crash the program.&lt;br /&gt;
&lt;br /&gt;
Also, there is a bug in the &amp;lt;code&amp;gt;Snake::Grow()&amp;lt;/code&amp;gt; function at the end of 14a. See if you can figure out what it is, and how to fix it... :)&lt;br /&gt;
&lt;br /&gt;
== Main Concepts Taught ==&lt;br /&gt;
* Managing used/unused sections of an array&lt;br /&gt;
* &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt; vs &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* Inner (nested) &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;es&lt;br /&gt;
* &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; overloading&lt;br /&gt;
* Special functions: copy constructor and copy assignment (briefly)&lt;br /&gt;
* The &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt; (modulus) operator (in the solution video)&lt;br /&gt;
* The &amp;lt;code&amp;gt;std::max()&amp;lt;/code&amp;gt; function (in the solution video)&lt;br /&gt;
&lt;br /&gt;
== Other New(ish) Things ==&lt;br /&gt;
&lt;br /&gt;
There was a bunch of other newish bullshit that Chili used, some of which he didn't go into much depth on. For those of you who give a shit, here is some extra info.&lt;br /&gt;
&lt;br /&gt;
==== Aggregate Initialization &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; ====&lt;br /&gt;
With the &amp;lt;code&amp;gt;struct Location&amp;lt;/code&amp;gt; (and later, &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;), we didn't define any constructors, so all we had was the default do-nothing constructor that is generated by the compiler. In order to initialize a &amp;lt;code&amp;gt;Location&amp;lt;/code&amp;gt; at one point in the video, Chili used something like &amp;lt;code&amp;gt;Location loc = {69,69};&amp;lt;/code&amp;gt;. This is allowed, but the data type being initialized must satisfy certain conditions. Namely, it must have only &amp;lt;code&amp;gt;public&amp;lt;/code&amp;gt; data members and it must have no constructors defined. For the full details on the requirements, see [http://en.cppreference.com/w/cpp/language/aggregate_initialization this page]. The brace &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; initialization can be used for &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;es etc. that have constructors as well, but then the parameters have to conform to the constructor(s) and it will just call the applicable constructor.&lt;br /&gt;
&lt;br /&gt;
==== Compiler-Generated Copy Constructor and Copy Assignment &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; ====&lt;br /&gt;
In the tutorial, we assign &amp;lt;code&amp;gt;Location&amp;lt;/code&amp;gt; objects to one another, and we construct a &amp;lt;code&amp;gt;Location&amp;lt;/code&amp;gt; by copying an existing one. These operations actually call member functions that are defined for the &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt;), and if you do not supply these member functions, the compiler will generate them by default (as is the case in this tutorial).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ClassName::ClassName( const ClassName&amp;amp; )&amp;lt;/code&amp;gt;&lt;br /&gt;
This is the default copy constructor, and its behavior is to, in turn, copy construct each of the members of the object under construction using the corresponding member in the object being passed in.&lt;br /&gt;
* &amp;lt;code&amp;gt;ClassName&amp;amp; ClassName::operator=( const ClassName&amp;amp; )&amp;lt;/code&amp;gt;&lt;br /&gt;
This is the  default copy assignment operator, and its behavior is to, in turn, copy assign each of the members of the object under assignment using the corresponding member in the object being passed in. It also returns a reference to the object under assignment.&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
[https://youtu.be/KTyemy82Zqk Tutorial 14a]&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/DoO_NEksf3c Tutorial 14b]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
The homework is to add some polish to the Snek Game. The following features are suggested and will be covered in the solution video.&lt;br /&gt;
* Adjustable board position&lt;br /&gt;
* Border drawn around board&lt;br /&gt;
* Padding between board tiles&lt;br /&gt;
* Display title screen&lt;br /&gt;
* Give the Snek a pattern of colors for its segments&lt;br /&gt;
* Make it so the Snek speeds up over time&lt;br /&gt;
&lt;br /&gt;
In addition, it is suggested that you extend the Snek game by adding some new mechanics to spice things up. One suggestion is making randomly spawning obstacles that accrue on the game board. Note that this extra challenge will not be covered in the solution video. If you are attempting it (or some other feature) and need some help, you can seek help on the [[Planet_Chili_Forums|forum]] or the [http://www.planetchili.net Discord].&lt;br /&gt;
&lt;br /&gt;
The solution video is [https://www.youtube.com/watch?v=aE9fGMRRe6U here].&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.planetchili.net/downloads/T14-Snek-Start.zip Snek Starting Solution]&lt;br /&gt;
* [https://github.com/planetchili/snek GitHub Repo Containing Finished Snek Game]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 15|Next in series (Tutorial 15)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_0&amp;diff=3322</id>
		<title>Beginner C++ Game Programming Tutorial 0</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Beginner_C%2B%2B_Game_Programming_Tutorial_0&amp;diff=3322"/>
				<updated>2020-12-17T10:24:14Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial introduces the [[Beginner C++ Game Programming Series]] and walks you through the setup required to follow along with Chili. It also explains who the series is intended for, the goals and outline of the series, and tips on how to succeed, but you can skip all that bullshit if you have crippling ADD. For a detailed list of what is covered in Beginner, see [[Beginner C++ Game Programming Series#Topics Covered|this page]].&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;IMPORTANT NOTE!&amp;lt;/span&amp;gt; ==&lt;br /&gt;
Since this video was recorded, Microsoft has released Visual Studio 2017 Community and Visual Studio 2019 Community. You can still download VS2015 and use it for the tutorials, and this might make things a little simpler (&amp;lt;u&amp;gt;2015 is actually a lot better for learning C++ at this point than the newer releases of Visual Studio&amp;lt;/u&amp;gt;), but the new Visual Studio 2017 and Visual Studio 2019 can also be used in the tutorials. However, the installation processes for VS2017 and VS2019 are different, and when you open a [[Chili Framework|Framework]] solution in newer releases of VS for the first time, there is an automatic dialog that you need to handle in order to upgrade the solution to VS2017 or VS2019 (And sometimes, even if you handle the dialog properly, you still get fucked over and have to fix things manually. Thanks Obama!).&lt;br /&gt;
&lt;br /&gt;
Check out [https://youtu.be/39IsItNIoQs &amp;lt;big&amp;gt;THIS VIDEO&amp;lt;/big&amp;gt;] for details on the installation of VS2017 and the process of opening a framework solution in VS2017.&lt;br /&gt;
&lt;br /&gt;
A separate video on getting started with VS2019 is gonna get pooped out soon.&lt;br /&gt;
&lt;br /&gt;
== Concepts Taught ==&lt;br /&gt;
* How to install [[Microsoft Visual Studio|Visual Studio 2015 Community]]&lt;br /&gt;
* How to [[compiler|compile]] and run a solution in Visual Studio&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* Intro [https://youtu.be/PwuIEMUFUnQ 0:00]&lt;br /&gt;
* Why C++ [https://youtu.be/PwuIEMUFUnQ?t=0m55s 0:55]&lt;br /&gt;
* Overview of entire curriculum [https://youtu.be/PwuIEMUFUnQ?t=1m57s 1:57]&lt;br /&gt;
* Required software, hardware, and knowledge [https://youtu.be/PwuIEMUFUnQ?t=2m44s 2:44]&lt;br /&gt;
* Setup of Visual Studio and [[Chili Framework|the Framework]] [https://youtu.be/PwuIEMUFUnQ?t=3m26s 3:26]&lt;br /&gt;
* Don't freak out about the Framework [https://youtu.be/PwuIEMUFUnQ?t=4m22s 6:05]&lt;br /&gt;
* Talk about the solution folder and source files [https://youtu.be/PwuIEMUFUnQ?t=7m52s 7:52]&lt;br /&gt;
* Configuration of the Visual Studio UI [https://youtu.be/PwuIEMUFUnQ?t=8m57s 8:57]&lt;br /&gt;
* First compile and run [https://youtu.be/PwuIEMUFUnQ?t=9m52s 9:52]&lt;br /&gt;
* Yo where the .exe at tho? [https://youtu.be/PwuIEMUFUnQ?t=11m13s 11:13]&lt;br /&gt;
* First line of code and challenge (Homework) [https://youtu.be/PwuIEMUFUnQ?t=12m07s 12:07]&lt;br /&gt;
* How to interact with Chili / get programming help on the [[Planet Chili Forums|Forum]] [https://youtu.be/PwuIEMUFUnQ?t=14m27s 14:27]&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
The homework for this lesson is to experiment with the [[Graphics (Chili Framework)#PutPixel()|&amp;lt;code&amp;gt;PutPixel()&amp;lt;/code&amp;gt;]] function and deduce the meanings of the five function parameters. The solution to this challenge is given at the beginning of the next tutorial.&lt;br /&gt;
&lt;br /&gt;
== Download Links ==&lt;br /&gt;
* [https://visualstudio.microsoft.com/vs/older-downloads/ Visual Studio 2015 Community Download]&lt;br /&gt;
&lt;br /&gt;
* [https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&amp;amp;rel=15 Visual Studio 2017 Community Download]&lt;br /&gt;
&lt;br /&gt;
* [https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&amp;amp;rel=16 Visual Studio 2019 Community Download]&lt;br /&gt;
&lt;br /&gt;
* [https://planetchili.net/downloads/Chili%20DirectX%20Framework.zip Framework Download]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Beginner C++ Game Programming Tutorial 1|Next in series (Tutorial 1)]]&lt;br /&gt;
* [[Beginner C++ Game Programming Series]]&lt;br /&gt;
* [[Planet Chili Forums]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3321</id>
		<title>Hardware 3D Series (C++ DirectX Graphics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3321"/>
				<updated>2020-09-25T05:06:09Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hardware 3D series (HW3D) teaches the Direct3D 11 API and HLSL (High Level Shader Language). This includes basic instruction in the Windows API for the purposes of creating a window and processing input messages. The goal of this seriesis to give the student the skills necessary to create a basic 3D engine in Direct3D in C++ from scratch. This series builds upon the concepts introduced in previous series.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 0|Hardware 3D [Introduction]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 16, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 1|Hardware 3D [WinMain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 2|Hardware 3D [Window Creation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 22, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 3|Hardware 3D [Message Loop / WndProc]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 27, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 4|Hardware 3D [Windows Messages]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 30, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 5|Hardware 3D [WM_CHAR / Mouse]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 5, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 6|Hardware 3D [Window Framework]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 7|Hardware 3D [Error Handling / Custom Icons]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 8|Hardware 3D [Keyboard / WM_SYSKEYDOWN]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 9|Hardware 3D [Mouse / Mouse Capture]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 31, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 10|Hardware 3D [App class / PeekMessage]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 3, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11:47&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 11|Hardware 3D [COM (Component Object Model)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 12|Hardware 3D [D3D Architecture / Swap Chain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 13|Hardware 3D [Device Init / Fill Screen / Present]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 22, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 14|Hardware 3D [Debug Layer Diagnostics]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 2, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 15|Hardware 3D [ComPtr Smart Pointer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 16|Hardware 3D [First Triangle]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 9, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:43+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 17|Hardware 3D [Pipeline Exploration]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 23, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:23&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 18|Hardware 3D [Constant Buffers]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 30, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 19|Hardware 3D [DirectXMath]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:57&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 20|Hardware 3D [3D Cube / Z-Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 21|Hardware 3D [Bindable / Drawable System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 20, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:32+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 22|Hardware 3D [Texture Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 23|Hardware 3D [Test GUI (imgui) / Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:20&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 24|Hardware 3D [Dynamic Lighting / Graphics Debugger]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:56+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 24}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 25|Hardware 3D [Mesh Loading Assimp / Git History Fixing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:12&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 25}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 26|Hardware 3D [Dynamic Vertex / Template Metaprogramming Bullshit]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 26}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 27|Hardware 3D [Scene Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 27}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 28|Hardware 3D [Node Tree / Transform Propagation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 28}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 29|Hardware 3D [Cursor Hide / Cursor Confine]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 29}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 30|Hardware 3D [Raw Mouse Input]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:38&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 30}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 31|Hardware 3D [First Person Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 31}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 32|Hardware 3D [Material Loading]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 32}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 33|Hardware 3D [Bindable Codex]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:53&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 33}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 34|Hardware 3D [Normal Mapping Part 1]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 34}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 35|Hardware 3D [Extreme Goblin Energy]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 35}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 36|Hardware 3D [Renormalization]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 29, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 36}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 37|Hardware 3D [Sponza Test Map]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:26&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 37}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 38|Hardware 3D [Mipmapping / Anisotropic Filtering]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:58&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 38}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 39|Hardware 3D [Alpha Blending / Transparency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 17, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 39}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|40&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 40|Hardware 3D [DirectXTex / JSON Batch]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 1, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 40}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 41|Hardware 3D [Dynamic Constant Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:18:02&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 41}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 42|Hardware 3D [Stencil Buffer Outline Effect]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 42}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 43|Hardware 3D [Render Queue System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 43}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|44&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 44|Hardware 3D [&amp;quot;Visitor&amp;quot; Probe / Static Meta &amp;quot;Bridge&amp;quot;]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 1, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:43&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 44}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|45&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 45|Hardware 3D [Dynamic Technique Composition]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 45}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|46&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 46|Hardware 3D [Fullscreen Filters (Blur)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 29, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 46}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|47&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 47|Hardware 3D [Separated Gaussian Filter]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 47}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 48|Hardware 3D [Render Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 28, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 48}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 49|Hardware 3D [Input Layout Incredulity]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 5, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 49}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 50|Hardware 3D [Multi Camera Wireframe]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 50}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 51|Hardware 3D [Shadow Mapping Theory]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 10, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 51}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|52&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 52|Hardware 3D [Shadow Mapping Code]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 17, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 52}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|53&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 53|Hardware 3D [Shadow Bias / Self Shadowing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 31, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 53}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|54&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 54|Hardware 3D [Peter Panning / Shadow PCF]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 9, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:29&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 54}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|55&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 55|Hardware 3D [Hardware PCF / Slope-scaling]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 55}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|56&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 56|Hardware 3D [Slope-scaled Shadow Sandbox]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 27, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 56}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|57&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 57|Hardware 3D [Cube Map Skybox]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 57}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|58&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 58|Hardware 3D [Cube Map Shadow Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35:36&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 58}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|59&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 59|Hardware 3D [Debugging Shadow Cube]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|Sept 13, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38:22&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 59}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_58&amp;diff=3320</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 58</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_58&amp;diff=3320"/>
				<updated>2020-09-25T05:04:49Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Undo revision 3318 by Chili (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Applying the cubemap technique to shadow mapping of a point light to capture an omni-directional shadow map.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Cubemap shadowmap bindable&lt;br /&gt;
* Camera vector generation etc. in ShadowMappingPass&lt;br /&gt;
* Pythagorean distance as depth for shadowmap&lt;br /&gt;
* Fixing code to dump cubemap texture-based DepthStencil&lt;br /&gt;
* Fixing viewport for shadowmap generation&lt;br /&gt;
* Fixing transformation matrix for shadowmap generation&lt;br /&gt;
* Fixing projection matrix for shadowmap generation&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/pprGpbdmhSI Tutorial 58]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 59|Next in series (Tutorial 59)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_59&amp;diff=3319</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 59</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_59&amp;diff=3319"/>
				<updated>2020-09-25T05:03:51Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Created page with &amp;quot;Diagnosing and fixing the issue with point-to-point distance shadow depth, with a little help from Python.  == Topics Covered == * More shader debugging in Visual Studio Graph...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diagnosing and fixing the issue with point-to-point distance shadow depth, with a little help from Python.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* More shader debugging in Visual Studio Graphics Debugger&lt;br /&gt;
* Dumping textures to Numpy file and analyzing in Python&lt;br /&gt;
* Proper interpolation/calculation of point-to-point distance shadow depth&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/nmtyLdt1Z1M Tutorial 59]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 60|Next in series (Tutorial 60)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_58&amp;diff=3318</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 58</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_58&amp;diff=3318"/>
				<updated>2020-09-25T05:03:23Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diagnosing and fixing the issue with point-to-point distance shadow depth, with a little help from Python.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* More shader debugging in Visual Studio Graphics Debugger&lt;br /&gt;
* Dumping textures to Numpy file and analyzing in Python&lt;br /&gt;
* Proper interpolation/calculation of point-to-point distance shadow depth&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/nmtyLdt1Z1M Tutorial 59]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 60|Next in series (Tutorial 60)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_28&amp;diff=3317</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 28</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_28&amp;diff=3317"/>
				<updated>2020-09-25T00:24:36Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: /* Video Timestamp Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this video we explore the tree structure of the hierarchy of nodes (using ImGui stuff), and we explore how transforms propagate down that tree. We also look into loading model file formats other than .obj (.gtlf), and we upgrade our Assimp dependency to a version that isn't COMPLETELY BROKEN.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* ImGui &amp;lt;code&amp;gt;TreeNode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TreeNodeEx&amp;lt;/code&amp;gt;&lt;br /&gt;
* ImGui window columns&lt;br /&gt;
* Adjustable window size / graphics resolution&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
There is a bug in the Tree widget relating to how the IDs are allocated. It will be addressed in Tutorial 29.&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/K7VqSmCiGiM Tutorial 28]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 29|Next in series (Tutorial 29)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3316</id>
		<title>Hardware 3D Series (C++ DirectX Graphics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3316"/>
				<updated>2020-09-15T05:20:06Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hardware 3D series (HW3D) teaches the Direct3D 11 API and HLSL (High Level Shader Language). This includes basic instruction in the Windows API for the purposes of creating a window and processing input messages. The goal of this seriesis to give the student the skills necessary to create a basic 3D engine in Direct3D in C++ from scratch. This series builds upon the concepts introduced in previous series.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 0|Hardware 3D [Introduction]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 16, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 1|Hardware 3D [WinMain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 2|Hardware 3D [Window Creation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 22, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 3|Hardware 3D [Message Loop / WndProc]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 27, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 4|Hardware 3D [Windows Messages]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 30, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 5|Hardware 3D [WM_CHAR / Mouse]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 5, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 6|Hardware 3D [Window Framework]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 7|Hardware 3D [Error Handling / Custom Icons]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 8|Hardware 3D [Keyboard / WM_SYSKEYDOWN]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 9|Hardware 3D [Mouse / Mouse Capture]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 31, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 10|Hardware 3D [App class / PeekMessage]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 3, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11:47&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 11|Hardware 3D [COM (Component Object Model)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 12|Hardware 3D [D3D Architecture / Swap Chain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 13|Hardware 3D [Device Init / Fill Screen / Present]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 22, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 14|Hardware 3D [Debug Layer Diagnostics]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 2, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 15|Hardware 3D [ComPtr Smart Pointer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 16|Hardware 3D [First Triangle]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 9, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:43+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 17|Hardware 3D [Pipeline Exploration]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 23, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:23&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 18|Hardware 3D [Constant Buffers]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 30, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 19|Hardware 3D [DirectXMath]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:57&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 20|Hardware 3D [3D Cube / Z-Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 21|Hardware 3D [Bindable / Drawable System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 20, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:32+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 22|Hardware 3D [Texture Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 23|Hardware 3D [Test GUI (imgui) / Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:20&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 24|Hardware 3D [Dynamic Lighting / Graphics Debugger]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:56+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 24}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 25|Hardware 3D [Mesh Loading Assimp / Git History Fixing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:12&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 25}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 26|Hardware 3D [Dynamic Vertex / Template Metaprogramming Bullshit]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 26}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 27|Hardware 3D [Scene Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 27}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 28|Hardware 3D [Node Tree / Transform Propagation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 28}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 29|Hardware 3D [Cursor Hide / Cursor Confine]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 29}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 30|Hardware 3D [Raw Mouse Input]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:38&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 30}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 31|Hardware 3D [First Person Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 31}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 32|Hardware 3D [Material Loading]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 32}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 33|Hardware 3D [Bindable Codex]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:53&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 33}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 34|Hardware 3D [Normal Mapping Part 1]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 34}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 35|Hardware 3D [Extreme Goblin Energy]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 35}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 36|Hardware 3D [Renormalization]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 29, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 36}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 37|Hardware 3D [Sponza Test Map]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:26&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 37}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 38|Hardware 3D [Mipmapping / Anisotropic Filtering]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:58&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 38}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 39|Hardware 3D [Alpha Blending / Transparency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 17, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 39}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|40&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 40|Hardware 3D [DirectXTex / JSON Batch]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 1, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 40}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 41|Hardware 3D [Dynamic Constant Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:18:02&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 41}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 42|Hardware 3D [Stencil Buffer Outline Effect]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 42}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 43|Hardware 3D [Render Queue System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 43}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|44&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 44|Hardware 3D [&amp;quot;Visitor&amp;quot; Probe / Static Meta &amp;quot;Bridge&amp;quot;]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 1, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:43&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 44}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|45&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 45|Hardware 3D [Dynamic Technique Composition]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 45}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|46&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 46|Hardware 3D [Fullscreen Filters (Blur)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 29, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 46}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|47&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 47|Hardware 3D [Separated Gaussian Filter]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 47}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 48|Hardware 3D [Render Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 28, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 48}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 49|Hardware 3D [Input Layout Incredulity]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 5, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 49}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 50|Hardware 3D [Multi Camera Wireframe]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 50}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 51|Hardware 3D [Shadow Mapping Theory]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 10, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 51}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|52&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 52|Hardware 3D [Shadow Mapping Code]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 17, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 52}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|53&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 53|Hardware 3D [Shadow Bias / Self Shadowing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 31, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 53}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|54&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 54|Hardware 3D [Peter Panning / Shadow PCF]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 9, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:29&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 54}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|55&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 55|Hardware 3D [Hardware PCF / Slope-scaling]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 55}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|56&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 56|Hardware 3D [Slope-scaled Shadow Sandbox]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 27, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 56}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|57&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 57|Hardware 3D [Cube Map Skybox]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 57}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|58&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 58|Hardware 3D [Cube Map Shadow Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35:36&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 58}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_22&amp;diff=3315</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 22</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_22&amp;diff=3315"/>
				<updated>2020-08-19T04:53:20Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this video we add texture mapping to our arsenal of &amp;lt;code&amp;gt;Bindable&amp;lt;/code&amp;gt; abilities. It takes two (&amp;lt;code&amp;gt;Binable&amp;lt;/code&amp;gt;s) to dance the texturing tango (you need a &amp;lt;code&amp;gt;Texture&amp;lt;/code&amp;gt; (view) and a &amp;lt;code&amp;gt;Sampler&amp;lt;/code&amp;gt;). We also add some code from previous tutorials for the loading of image files.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* &amp;lt;code&amp;gt;Surface&amp;lt;/code&amp;gt; for loading images via GDI+&lt;br /&gt;
* &amp;lt;code&amp;gt;Bindable&amp;lt;/code&amp;gt; for creating texture and texture view&lt;br /&gt;
* &amp;lt;code&amp;gt;Bindable&amp;lt;/code&amp;gt; for creating sampler state&lt;br /&gt;
* Different &amp;lt;code&amp;gt;Sampler&amp;lt;/code&amp;gt; settings (wrap mode and filter)&lt;br /&gt;
* Skinning a cube&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/daKJcSGqrIU Tutorial 22]&lt;br /&gt;
&lt;br /&gt;
== Errata ==&lt;br /&gt;
There is a sporadic error that can occur in this codebase. When we created the SkinnedBox, we neglected to add a static Sampler Bindable there. The reason why this only crashes sometimes is, the Sheet does have a Sampler, so as long as a Sheet is drawn before any SkinnedCube, the Sampler will remain bound for the skinned cube draw as well and all will be OK.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* [https://www.youtube.com/watch?v=X9nLrjUQVQw Project TWIN video on GDI+ image loading for Surface]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 23|Next in series (Tutorial 23)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_58&amp;diff=3314</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 58</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_58&amp;diff=3314"/>
				<updated>2020-08-15T08:31:58Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Created page with &amp;quot;Applying the cubemap technique to shadow mapping of a point light to capture an omni-directional shadow map.  == Topics Covered == * Cubemap shadowmap bindable * Camera vector...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Applying the cubemap technique to shadow mapping of a point light to capture an omni-directional shadow map.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Cubemap shadowmap bindable&lt;br /&gt;
* Camera vector generation etc. in ShadowMappingPass&lt;br /&gt;
* Pythagorean distance as depth for shadowmap&lt;br /&gt;
* Fixing code to dump cubemap texture-based DepthStencil&lt;br /&gt;
* Fixing viewport for shadowmap generation&lt;br /&gt;
* Fixing transformation matrix for shadowmap generation&lt;br /&gt;
* Fixing projection matrix for shadowmap generation&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/pprGpbdmhSI Tutorial 58]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 59|Next in series (Tutorial 59)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_57&amp;diff=3312</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 57</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_57&amp;diff=3312"/>
				<updated>2020-07-05T10:30:24Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: /* Video Timestamp Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learning about the cube map texture resource and how to use it to implement a skybox.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Cube map texture&lt;br /&gt;
* 3D vector sampling&lt;br /&gt;
* Dealing with skybox depth issues&lt;br /&gt;
* Sampling vector generating geometry&lt;br /&gt;
* Mapping 2D textures to the cube map &amp;quot;faces&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/J_s-ID7pc7g Tutorial 57]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 58|Next in series (Tutorial 58)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3311</id>
		<title>Hardware 3D Series (C++ DirectX Graphics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3311"/>
				<updated>2020-07-05T10:25:54Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hardware 3D series (HW3D) teaches the Direct3D 11 API and HLSL (High Level Shader Language). This includes basic instruction in the Windows API for the purposes of creating a window and processing input messages. The goal of this seriesis to give the student the skills necessary to create a basic 3D engine in Direct3D in C++ from scratch. This series builds upon the concepts introduced in previous series.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 0|Hardware 3D [Introduction]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 16, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 1|Hardware 3D [WinMain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 2|Hardware 3D [Window Creation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 22, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 3|Hardware 3D [Message Loop / WndProc]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 27, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 4|Hardware 3D [Windows Messages]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 30, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 5|Hardware 3D [WM_CHAR / Mouse]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 5, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 6|Hardware 3D [Window Framework]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 7|Hardware 3D [Error Handling / Custom Icons]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 8|Hardware 3D [Keyboard / WM_SYSKEYDOWN]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 9|Hardware 3D [Mouse / Mouse Capture]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 31, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 10|Hardware 3D [App class / PeekMessage]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 3, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11:47&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 11|Hardware 3D [COM (Component Object Model)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 12|Hardware 3D [D3D Architecture / Swap Chain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 13|Hardware 3D [Device Init / Fill Screen / Present]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 22, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 14|Hardware 3D [Debug Layer Diagnostics]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 2, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 15|Hardware 3D [ComPtr Smart Pointer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 16|Hardware 3D [First Triangle]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 9, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:43+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 17|Hardware 3D [Pipeline Exploration]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 23, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:23&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 18|Hardware 3D [Constant Buffers]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 30, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 19|Hardware 3D [DirectXMath]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:57&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 20|Hardware 3D [3D Cube / Z-Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 21|Hardware 3D [Bindable / Drawable System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 20, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:32+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 22|Hardware 3D [Texture Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 23|Hardware 3D [Test GUI (imgui) / Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:20&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 24|Hardware 3D [Dynamic Lighting / Graphics Debugger]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:56+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 24}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 25|Hardware 3D [Mesh Loading Assimp / Git History Fixing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:12&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 25}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 26|Hardware 3D [Dynamic Vertex / Template Metaprogramming Bullshit]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 26}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 27|Hardware 3D [Scene Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 27}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 28|Hardware 3D [Node Tree / Transform Propagation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 28}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 29|Hardware 3D [Cursor Hide / Cursor Confine]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 29}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 30|Hardware 3D [Raw Mouse Input]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:38&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 30}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 31|Hardware 3D [First Person Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 31}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 32|Hardware 3D [Material Loading]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 32}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 33|Hardware 3D [Bindable Codex]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:53&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 33}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 34|Hardware 3D [Normal Mapping Part 1]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 34}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 35|Hardware 3D [Extreme Goblin Energy]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 35}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 36|Hardware 3D [Renormalization]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 29, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 36}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 37|Hardware 3D [Sponza Test Map]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:26&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 37}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 38|Hardware 3D [Mipmapping / Anisotropic Filtering]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:58&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 38}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 39|Hardware 3D [Alpha Blending / Transparency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 17, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 39}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|40&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 40|Hardware 3D [DirectXTex / JSON Batch]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 1, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 40}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 41|Hardware 3D [Dynamic Constant Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:18:02&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 41}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 42|Hardware 3D [Stencil Buffer Outline Effect]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 42}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 43|Hardware 3D [Render Queue System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 43}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|44&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 44|Hardware 3D [&amp;quot;Visitor&amp;quot; Probe / Static Meta &amp;quot;Bridge&amp;quot;]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 1, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:43&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 44}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|45&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 45|Hardware 3D [Dynamic Technique Composition]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 45}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|46&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 46|Hardware 3D [Fullscreen Filters (Blur)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 29, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 46}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|47&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 47|Hardware 3D [Separated Gaussian Filter]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 47}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 48|Hardware 3D [Render Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 28, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 48}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 49|Hardware 3D [Input Layout Incredulity]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 5, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 49}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 50|Hardware 3D [Multi Camera Wireframe]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 50}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 51|Hardware 3D [Shadow Mapping Theory]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 10, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 51}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|52&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 52|Hardware 3D [Shadow Mapping Code]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 17, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 52}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|53&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 53|Hardware 3D [Shadow Bias / Self Shadowing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 31, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 53}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|54&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 54|Hardware 3D [Peter Panning / Shadow PCF]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 9, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:29&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 54}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|55&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 55|Hardware 3D [Hardware PCF / Slope-scaling]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 55}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|56&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 56|Hardware 3D [Slope-scaled Shadow Sandbox]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 27, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 56}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|57&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 57|Hardware 3D [Cube Map Skybox]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 57}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_57&amp;diff=3310</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 57</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_57&amp;diff=3310"/>
				<updated>2020-07-05T10:24:52Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Created page with &amp;quot;Learning about the cube map texture resource and how to use it to implement a skybox.  == Topics Covered == * Cube map texture * 3D vector sampling * Dealing with skybox depth...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learning about the cube map texture resource and how to use it to implement a skybox.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Cube map texture&lt;br /&gt;
* 3D vector sampling&lt;br /&gt;
* Dealing with skybox depth issues&lt;br /&gt;
* Sampling vector generating geometry&lt;br /&gt;
* Mapping 2D textures to the cube map &amp;quot;faces&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/pZ1_19-0z5g Tutorial 57]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 58|Next in series (Tutorial 58)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_56&amp;diff=3299</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 56</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_56&amp;diff=3299"/>
				<updated>2020-06-27T07:21:38Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sixth and final part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video implements slope-scaled depth biasing, makes a shadow effect that is fully runtime-configurable, and discusses some additional techniques.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Slope-scaled depth biasing using rasterizer settings&lt;br /&gt;
* Fully configurable shadow effect (use this to explore the impact of different technqiues)&lt;br /&gt;
* Bilinear filtering effect in different sampling modes&lt;br /&gt;
* Trick using loops and branches to dynamically control a compile-time parameter in HLSL&lt;br /&gt;
* Rendering backfaces to prevent self-shadowing without needing large biases&lt;br /&gt;
* Receiver plane depth biasing&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/pZ1_19-0z5g Tutorial 56]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 57|Next in series (Tutorial 57)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_56&amp;diff=3298</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 56</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_56&amp;diff=3298"/>
				<updated>2020-06-27T07:06:10Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sixth and final part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video implements slope-scaled depth biasing, makes a shadow effect that is fully runtime-configurable, and discusses some additional techniques.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Slope-scaled depth biasing using rasterizer settings&lt;br /&gt;
* Fully configurable shadow effect (use this to explore the impact of different technqiues)&lt;br /&gt;
* Bilinear filtering effect in different sampling modes&lt;br /&gt;
* Trick using loops and branches to dynamically control a compile-time parameter in HLSL&lt;br /&gt;
* Rendering backfaces to prevent self-shadowing without needing large biases&lt;br /&gt;
* Receiver plane depth biasing&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/tRsJ-b2 Tutorial 56]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 57|Next in series (Tutorial 57)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3297</id>
		<title>Hardware 3D Series (C++ DirectX Graphics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3297"/>
				<updated>2020-06-27T07:01:01Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hardware 3D series (HW3D) teaches the Direct3D 11 API and HLSL (High Level Shader Language). This includes basic instruction in the Windows API for the purposes of creating a window and processing input messages. The goal of this seriesis to give the student the skills necessary to create a basic 3D engine in Direct3D in C++ from scratch. This series builds upon the concepts introduced in previous series.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 0|Hardware 3D [Introduction]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 16, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 1|Hardware 3D [WinMain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 2|Hardware 3D [Window Creation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 22, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 3|Hardware 3D [Message Loop / WndProc]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 27, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 4|Hardware 3D [Windows Messages]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 30, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 5|Hardware 3D [WM_CHAR / Mouse]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 5, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 6|Hardware 3D [Window Framework]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 7|Hardware 3D [Error Handling / Custom Icons]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 8|Hardware 3D [Keyboard / WM_SYSKEYDOWN]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 9|Hardware 3D [Mouse / Mouse Capture]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 31, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 10|Hardware 3D [App class / PeekMessage]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 3, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11:47&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 11|Hardware 3D [COM (Component Object Model)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 12|Hardware 3D [D3D Architecture / Swap Chain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 13|Hardware 3D [Device Init / Fill Screen / Present]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 22, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 14|Hardware 3D [Debug Layer Diagnostics]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 2, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 15|Hardware 3D [ComPtr Smart Pointer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 16|Hardware 3D [First Triangle]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 9, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:43+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 17|Hardware 3D [Pipeline Exploration]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 23, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:23&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 18|Hardware 3D [Constant Buffers]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 30, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 19|Hardware 3D [DirectXMath]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:57&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 20|Hardware 3D [3D Cube / Z-Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 21|Hardware 3D [Bindable / Drawable System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 20, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:32+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 22|Hardware 3D [Texture Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 23|Hardware 3D [Test GUI (imgui) / Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:20&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 24|Hardware 3D [Dynamic Lighting / Graphics Debugger]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:56+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 24}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 25|Hardware 3D [Mesh Loading Assimp / Git History Fixing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:12&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 25}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 26|Hardware 3D [Dynamic Vertex / Template Metaprogramming Bullshit]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 26}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 27|Hardware 3D [Scene Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 27}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 28|Hardware 3D [Node Tree / Transform Propagation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 28}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 29|Hardware 3D [Cursor Hide / Cursor Confine]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 29}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 30|Hardware 3D [Raw Mouse Input]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:38&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 30}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 31|Hardware 3D [First Person Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 31}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 32|Hardware 3D [Material Loading]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 32}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 33|Hardware 3D [Bindable Codex]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:53&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 33}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 34|Hardware 3D [Normal Mapping Part 1]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 34}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 35|Hardware 3D [Extreme Goblin Energy]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 35}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 36|Hardware 3D [Renormalization]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 29, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 36}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 37|Hardware 3D [Sponza Test Map]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:26&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 37}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 38|Hardware 3D [Mipmapping / Anisotropic Filtering]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:58&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 38}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 39|Hardware 3D [Alpha Blending / Transparency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 17, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 39}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|40&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 40|Hardware 3D [DirectXTex / JSON Batch]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 1, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 40}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 41|Hardware 3D [Dynamic Constant Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:18:02&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 41}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 42|Hardware 3D [Stencil Buffer Outline Effect]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 42}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 43|Hardware 3D [Render Queue System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 43}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|44&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 44|Hardware 3D [&amp;quot;Visitor&amp;quot; Probe / Static Meta &amp;quot;Bridge&amp;quot;]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 1, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:43&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 44}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|45&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 45|Hardware 3D [Dynamic Technique Composition]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 45}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|46&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 46|Hardware 3D [Fullscreen Filters (Blur)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 29, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 46}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|47&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 47|Hardware 3D [Separated Gaussian Filter]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 47}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 48|Hardware 3D [Render Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 28, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 48}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 49|Hardware 3D [Input Layout Incredulity]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 5, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 49}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 50|Hardware 3D [Multi Camera Wireframe]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 50}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 51|Hardware 3D [Shadow Mapping Theory]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 10, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 51}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|52&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 52|Hardware 3D [Shadow Mapping Code]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 17, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 52}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|53&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 53|Hardware 3D [Shadow Bias / Self Shadowing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 31, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 53}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|54&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 54|Hardware 3D [Peter Panning / Shadow PCF]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 9, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:29&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 54}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|55&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 55|Hardware 3D [Hardware PCF / Slope-scaling]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 55}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|56&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 56|Hardware 3D [Slope-scaled Shadow Sandbox]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 27, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 56}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3296</id>
		<title>Hardware 3D Series (C++ DirectX Graphics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3296"/>
				<updated>2020-06-27T04:49:14Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hardware 3D series (HW3D) teaches the Direct3D 11 API and HLSL (High Level Shader Language). This includes basic instruction in the Windows API for the purposes of creating a window and processing input messages. The goal of this seriesis to give the student the skills necessary to create a basic 3D engine in Direct3D in C++ from scratch. This series builds upon the concepts introduced in previous series.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 0|Hardware 3D [Introduction]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 16, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 1|Hardware 3D [WinMain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 2|Hardware 3D [Window Creation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 22, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 3|Hardware 3D [Message Loop / WndProc]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 27, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 4|Hardware 3D [Windows Messages]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 30, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 5|Hardware 3D [WM_CHAR / Mouse]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 5, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 6|Hardware 3D [Window Framework]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 7|Hardware 3D [Error Handling / Custom Icons]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 8|Hardware 3D [Keyboard / WM_SYSKEYDOWN]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 9|Hardware 3D [Mouse / Mouse Capture]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 31, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 10|Hardware 3D [App class / PeekMessage]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 3, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11:47&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 11|Hardware 3D [COM (Component Object Model)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 12|Hardware 3D [D3D Architecture / Swap Chain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 13|Hardware 3D [Device Init / Fill Screen / Present]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 22, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 14|Hardware 3D [Debug Layer Diagnostics]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 2, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 15|Hardware 3D [ComPtr Smart Pointer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 16|Hardware 3D [First Triangle]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 9, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:43+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 17|Hardware 3D [Pipeline Exploration]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 23, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:23&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 18|Hardware 3D [Constant Buffers]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 30, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 19|Hardware 3D [DirectXMath]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:57&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 20|Hardware 3D [3D Cube / Z-Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 21|Hardware 3D [Bindable / Drawable System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 20, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:32+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 22|Hardware 3D [Texture Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 23|Hardware 3D [Test GUI (imgui) / Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:20&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 24|Hardware 3D [Dynamic Lighting / Graphics Debugger]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:56+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 24}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 25|Hardware 3D [Mesh Loading Assimp / Git History Fixing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:12&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 25}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 26|Hardware 3D [Dynamic Vertex / Template Metaprogramming Bullshit]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 26}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 27|Hardware 3D [Scene Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 27}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 28|Hardware 3D [Node Tree / Transform Propagation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 28}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 29|Hardware 3D [Cursor Hide / Cursor Confine]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 29}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 30|Hardware 3D [Raw Mouse Input]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:38&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 30}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 31|Hardware 3D [First Person Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 31}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 32|Hardware 3D [Material Loading]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 32}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 33|Hardware 3D [Bindable Codex]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:53&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 33}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 34|Hardware 3D [Normal Mapping Part 1]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 34}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 35|Hardware 3D [Extreme Goblin Energy]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 35}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 36|Hardware 3D [Renormalization]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 29, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 36}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 37|Hardware 3D [Sponza Test Map]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:26&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 37}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 38|Hardware 3D [Mipmapping / Anisotropic Filtering]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:58&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 38}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 39|Hardware 3D [Alpha Blending / Transparency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 17, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 39}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|40&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 40|Hardware 3D [DirectXTex / JSON Batch]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 1, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 40}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 41|Hardware 3D [Dynamic Constant Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:18:02&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 41}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 42|Hardware 3D [Stencil Buffer Outline Effect]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 42}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 43|Hardware 3D [Render Queue System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 43}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|44&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 44|Hardware 3D [&amp;quot;Visitor&amp;quot; Probe / Static Meta &amp;quot;Bridge&amp;quot;]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 1, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:43&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 44}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|45&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 45|Hardware 3D [Dynamic Technique Composition]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 45}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|46&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 46|Hardware 3D [Fullscreen Filters (Blur)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 29, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 46}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|47&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 47|Hardware 3D [Separated Gaussian Filter]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 47}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 48|Hardware 3D [Render Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 28, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 48}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 49|Hardware 3D [Input Layout Incredulity]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 5, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 49}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 50|Hardware 3D [Multi Camera Wireframe]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 50}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 51|Hardware 3D [Shadow Mapping Theory]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 10, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 51}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|52&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 52|Hardware 3D [Shadow Mapping Code]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 17, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 52}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|53&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 53|Hardware 3D [Shadow Bias / Self Shadowing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 31, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 53}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|54&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 54|Hardware 3D [Peter Panning / Shadow PCF]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 9, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:29&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 54}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|55&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 55|Hardware 3D [Hardware PCF / Slope-scaling]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 55}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|56&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 56|Hardware 3D [Slope-scaled depth biasing sandbox]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 27, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 56}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_56&amp;diff=3295</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 56</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_56&amp;diff=3295"/>
				<updated>2020-06-27T04:47:41Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Created page with &amp;quot;Sixth and final part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video implements slope-scaled depth biasing, makes a shadow effect that is f...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sixth and final part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video implements slope-scaled depth biasing, makes a shadow effect that is fully runtime-configurable, and discusses some additional techniques.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Slope-scaled depth biasing using rasterizer settings&lt;br /&gt;
* Fully configurable shadow effect (use this to explore the impact of different technqiues)&lt;br /&gt;
* Trick using loops and branches to dynamically control a compile-time parameter in HLSL&lt;br /&gt;
* Rendering backfaces to prevent self-shadowing without needing large biases&lt;br /&gt;
* Receiver plane depth biasing&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/tRsJ-b2 Tutorial 56]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 57|Next in series (Tutorial 57)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3294</id>
		<title>Hardware 3D Series (C++ DirectX Graphics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3294"/>
				<updated>2020-06-27T04:24:20Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hardware 3D series (HW3D) teaches the Direct3D 11 API and HLSL (High Level Shader Language). This includes basic instruction in the Windows API for the purposes of creating a window and processing input messages. The goal of this seriesis to give the student the skills necessary to create a basic 3D engine in Direct3D in C++ from scratch. This series builds upon the concepts introduced in previous series.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 0|Hardware 3D [Introduction]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 16, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 1|Hardware 3D [WinMain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 2|Hardware 3D [Window Creation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 22, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 3|Hardware 3D [Message Loop / WndProc]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 27, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 4|Hardware 3D [Windows Messages]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 30, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 5|Hardware 3D [WM_CHAR / Mouse]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 5, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 6|Hardware 3D [Window Framework]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 7|Hardware 3D [Error Handling / Custom Icons]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 8|Hardware 3D [Keyboard / WM_SYSKEYDOWN]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 9|Hardware 3D [Mouse / Mouse Capture]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 31, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 10|Hardware 3D [App class / PeekMessage]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 3, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11:47&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 11|Hardware 3D [COM (Component Object Model)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 12|Hardware 3D [D3D Architecture / Swap Chain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 13|Hardware 3D [Device Init / Fill Screen / Present]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 22, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 14|Hardware 3D [Debug Layer Diagnostics]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 2, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 15|Hardware 3D [ComPtr Smart Pointer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 16|Hardware 3D [First Triangle]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 9, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:43+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 17|Hardware 3D [Pipeline Exploration]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 23, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:23&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 18|Hardware 3D [Constant Buffers]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 30, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 19|Hardware 3D [DirectXMath]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:57&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 20|Hardware 3D [3D Cube / Z-Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 21|Hardware 3D [Bindable / Drawable System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 20, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:32+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 22|Hardware 3D [Texture Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 23|Hardware 3D [Test GUI (imgui) / Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:20&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 24|Hardware 3D [Dynamic Lighting / Graphics Debugger]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:56+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 24}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 25|Hardware 3D [Mesh Loading Assimp / Git History Fixing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:12&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 25}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 26|Hardware 3D [Dynamic Vertex / Template Metaprogramming Bullshit]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 26}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 27|Hardware 3D [Scene Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 27}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 28|Hardware 3D [Node Tree / Transform Propagation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 28}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 29|Hardware 3D [Cursor Hide / Cursor Confine]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 29}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 30|Hardware 3D [Raw Mouse Input]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:38&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 30}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 31|Hardware 3D [First Person Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 31}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 32|Hardware 3D [Material Loading]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 32}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 33|Hardware 3D [Bindable Codex]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:53&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 33}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 34|Hardware 3D [Normal Mapping Part 1]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 34}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 35|Hardware 3D [Extreme Goblin Energy]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 35}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 36|Hardware 3D [Renormalization]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 29, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 36}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 37|Hardware 3D [Sponza Test Map]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:26&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 37}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 38|Hardware 3D [Mipmapping / Anisotropic Filtering]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:58&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 38}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 39|Hardware 3D [Alpha Blending / Transparency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 17, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 39}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|40&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 40|Hardware 3D [DirectXTex / JSON Batch]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 1, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 40}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 41|Hardware 3D [Dynamic Constant Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:18:02&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 41}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 42|Hardware 3D [Stencil Buffer Outline Effect]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 42}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 43|Hardware 3D [Render Queue System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 43}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|44&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 44|Hardware 3D [&amp;quot;Visitor&amp;quot; Probe / Static Meta &amp;quot;Bridge&amp;quot;]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 1, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:43&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 44}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|45&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 45|Hardware 3D [Dynamic Technique Composition]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 45}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|46&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 46|Hardware 3D [Fullscreen Filters (Blur)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 29, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 46}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|47&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 47|Hardware 3D [Separated Gaussian Filter]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 47}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 48|Hardware 3D [Render Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 28, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 48}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 49|Hardware 3D [Input Layout Incredulity]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 5, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 49}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 50|Hardware 3D [Multi Camera Wireframe]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 50}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 51|Hardware 3D [Shadow Mapping Theory]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 10, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 51}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|52&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 52|Hardware 3D [Shadow Mapping Code]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 17, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 52}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|53&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 53|Hardware 3D [Shadow Bias / Self Shadowing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 31, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 53}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|54&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 54|Hardware 3D [Peter Panning / Shadow PCF]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 9, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:29&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 54}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|55&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 55|Hardware 3D [Hardware PCF / Slope-scaling]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 55}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_55&amp;diff=3293</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 55</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_55&amp;diff=3293"/>
				<updated>2020-06-27T04:20:32Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Created page with &amp;quot;Fifth part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video implements hardware PCF comparison, discusses the concept of soft shadows, and i...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fifth part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video implements hardware PCF comparison, discusses the concept of soft shadows, and introduces the theory behind an adaptive biasing technique called &amp;quot;slope-scaled depth biasing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Sampler comparison mode&lt;br /&gt;
* Comparison sampling in HLSL&lt;br /&gt;
* Dynamic HLSL loops vs. statically unrolled ones&lt;br /&gt;
* Soft shadows and area lights&lt;br /&gt;
* Slope-scaled depth biasing&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/tRsJ-b2ngIQ Tutorial 55]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 56|Next in series (Tutorial 56)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_16&amp;diff=3292</id>
		<title>Intermediate C++ Game Programming Tutorial 16</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Intermediate_C%2B%2B_Game_Programming_Tutorial_16&amp;diff=3292"/>
				<updated>2020-06-27T04:10:24Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: /* Errata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the video we take a look at a couple of bangers from &amp;lt;code&amp;gt;&amp;lt;algorithm&amp;gt;&amp;lt;/code&amp;gt;, and we learn what lambda functions are and how to use them.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Algorithms &amp;lt;code&amp;gt;std::sort&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;std::remove_if&amp;lt;/code&amp;gt;&lt;br /&gt;
* Concepts (as in, type concepts like Comparable)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;functional&amp;gt;&amp;lt;/code&amp;gt; functors as predicates&lt;br /&gt;
* Lambda functions&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Errata&amp;lt;/span&amp;gt; ==&lt;br /&gt;
In the video Chili states that std::remove does not preserve the relative order of elements in the container, but this is fake news! Relative order is preserved: [https://en.cppreference.com/w/cpp/algorithm/remove]&lt;br /&gt;
&lt;br /&gt;
In the homework solution there is a part where Chili uses an iterator into a &amp;lt;code&amp;gt;stringstream&amp;lt;/code&amp;gt; [https://youtu.be/_1-iES-Eytc?t=626]. This code no longer works due to changes (improvements) to the Visual Studio compiler. Basically, you cannot pass a temporary stream into the iterator constructor. See this: [https://stackoverflow.com/questions/23714445/passing-temporary-istringstream-object-to-istream-iteratorstring]&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
[https://youtu.be/3J1Pz30IE4Q Tutorial 16]&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
* Generic Algorithms: how Templates and Iterators make Algorithms independent of Data Types and Containers [https://youtu.be/3J1Pz30IE4Q?t=17s 0:17]&lt;br /&gt;
* The &amp;lt;code&amp;gt;std::sort&amp;lt;/code&amp;gt; algorithm and its requirements [https://youtu.be/3J1Pz30IE4Q?t=43s 0:43]&lt;br /&gt;
* Sorting a (forward) list &amp;lt;code&amp;gt;std::list&amp;lt;/code&amp;gt;, using its member function &amp;lt;code&amp;gt;std::list::sort()&amp;lt;/code&amp;gt; [https://youtu.be/3J1Pz30IE4Q?t=2m16s 2:16]&lt;br /&gt;
* Introducing Concepts / named requirements of types (e.g., the &amp;lt;code&amp;gt;Compare&amp;lt;/code&amp;gt; requirement of &amp;lt;code&amp;gt;std::sort&amp;lt;/code&amp;gt;) [https://youtu.be/3J1Pz30IE4Q?t=2m54s 2:54]&lt;br /&gt;
* Modyfing sorting order by passing a comparison function object (functor) as a predicate, like so:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;std::sort(vec.begin(),vec.end(),std::greater&amp;lt;int&amp;gt;{});&amp;lt;/code&amp;gt; [https://youtu.be/3J1Pz30IE4Q?t=3m17s 3:17]&amp;lt;br /&amp;gt;Note: vec is a std::vector of integers&lt;br /&gt;
* Sort custom types, example code for sorting a custom class object by creating a functor, called like so: &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;std::sort(vecObj.begin(),vecObj.end(),Obj::YLess{});&amp;lt;/code&amp;gt; [https://youtu.be/3J1Pz30IE4Q?t=4m07s 4:07]&lt;br /&gt;
* Removing items from a container, &amp;lt;code&amp;gt;std::remove&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;std::remove_if&amp;lt;/code&amp;gt; [https://youtu.be/3J1Pz30IE4Q?t=6m11s 6:11]&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
** Create a functor as a unary predicate for the &amp;lt;code&amp;gt;std::remove&amp;lt;/code&amp;gt; function to remove elements using a threshold variable [https://youtu.be/3J1Pz30IE4Q?t=8m28s 8:28]&lt;br /&gt;
** Use container member function &amp;lt;code&amp;gt;erase()&amp;lt;/code&amp;gt; to correct the endpoint of the container after the remove operation [https://youtu.be/3J1Pz30IE4Q?t=9m51s 9:51]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* Introducing Lambda functions to replace custom functors [https://youtu.be/3J1Pz30IE4Q?t=11m51s 11:51]&lt;br /&gt;
* Using the Lambda capture to bring in variables into the Lambda function [https://youtu.be/3J1Pz30IE4Q?t=13m34s 13:34]&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
** Capture syntax explained: &amp;lt;code&amp;gt;[var]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[&amp;amp;var]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[=]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[&amp;amp;]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[newvar=var+10]&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;[this]&amp;lt;/code&amp;gt;, capture multiple variables, mix&amp;amp;match capture modes&lt;br /&gt;
** Stateful Lambdas; changing captured lambda variables using the &amp;lt;code&amp;gt;mutable&amp;lt;/code&amp;gt; flag [https://youtu.be/3J1Pz30IE4Q?t=15m59s 15:59]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* Some anxiety-reducing consolation by Chili [https://youtu.be/3J1Pz30IE4Q?t=16m40s 16:40]&lt;br /&gt;
* Syntax for a callable Lambda function [https://youtu.be/3J1Pz30IE4Q?t=17m03s 17:03]&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
** Make it callable once: &amp;lt;code&amp;gt;[...](...){...}(vec.front());&amp;lt;/code&amp;gt;, functor is destroyed immediately&lt;br /&gt;
** Keep the functor using &amp;lt;code&amp;gt;auto mylamb = [...](...){...};&amp;lt;/code&amp;gt;, which can be called by &amp;lt;code&amp;gt;bool result = mylamb(vec.front());&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;std::remove_if(...,...,mylamb);&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* The power of C++ is in its flexibility. Example code for converting a string to lowercase:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;std::transform(str.begin(),str.end(),str.begin(),::tolower);&amp;lt;/code&amp;gt;[https://youtu.be/3J1Pz30IE4Q?t=17m49s 17:49]&lt;br /&gt;
* Homework assignment [https://youtu.be/3J1Pz30IE4Q?t=18m39s 18:39]&lt;br /&gt;
* Introducing the Algorithm [[STD Gems]] series that takes a deep dive into its functionality [https://youtu.be/3J1Pz30IE4Q?t=19m20s 19:20]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
Solve the problems in Source.cpp attached below using the &amp;lt;algorithm&amp;gt; library and other parts of the standard library as extensively as possible. As a bonus problem, implement the sprite drawing effect shown at the end of the video using a lambda function.&lt;br /&gt;
&lt;br /&gt;
* [http://www.planetchili.net/downloads/I16-HW.zip Source.cpp (homework file)]&lt;br /&gt;
* [https://github.com/planetchili/sprite Sprite Repo (for bonus problem)]&lt;br /&gt;
&lt;br /&gt;
The homework solution video can be found [https://youtu.be/_1-iES-Eytc here]&lt;br /&gt;
&lt;br /&gt;
== Related Series ==&lt;br /&gt;
For an in-depth look into the &amp;lt;algorithm&amp;gt; library and beyond, check out [[STD Gems]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://en.cppreference.com/w/cpp/algorithm Algorithms Library]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Intermediate C++ Game Programming Tutorial 17|Next in series (Tutorial 17)]]&lt;br /&gt;
* [[Intermediate C++ Game Programming Series]]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3286</id>
		<title>Hardware 3D Series (C++ DirectX Graphics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3286"/>
				<updated>2020-06-08T17:16:08Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hardware 3D series (HW3D) teaches the Direct3D 11 API and HLSL (High Level Shader Language). This includes basic instruction in the Windows API for the purposes of creating a window and processing input messages. The goal of this seriesis to give the student the skills necessary to create a basic 3D engine in Direct3D in C++ from scratch. This series builds upon the concepts introduced in previous series.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 0|Hardware 3D [Introduction]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 16, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 1|Hardware 3D [WinMain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 2|Hardware 3D [Window Creation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 22, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 3|Hardware 3D [Message Loop / WndProc]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 27, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 4|Hardware 3D [Windows Messages]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 30, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 5|Hardware 3D [WM_CHAR / Mouse]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 5, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 6|Hardware 3D [Window Framework]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 7|Hardware 3D [Error Handling / Custom Icons]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 8|Hardware 3D [Keyboard / WM_SYSKEYDOWN]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 9|Hardware 3D [Mouse / Mouse Capture]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 31, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 10|Hardware 3D [App class / PeekMessage]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 3, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11:47&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 11|Hardware 3D [COM (Component Object Model)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 12|Hardware 3D [D3D Architecture / Swap Chain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 13|Hardware 3D [Device Init / Fill Screen / Present]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 22, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 14|Hardware 3D [Debug Layer Diagnostics]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 2, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 15|Hardware 3D [ComPtr Smart Pointer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 16|Hardware 3D [First Triangle]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 9, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:43+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 17|Hardware 3D [Pipeline Exploration]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 23, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:23&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 18|Hardware 3D [Constant Buffers]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 30, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 19|Hardware 3D [DirectXMath]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:57&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 20|Hardware 3D [3D Cube / Z-Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 21|Hardware 3D [Bindable / Drawable System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 20, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:32+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 22|Hardware 3D [Texture Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 23|Hardware 3D [Test GUI (imgui) / Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:20&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 24|Hardware 3D [Dynamic Lighting / Graphics Debugger]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:56+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 24}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 25|Hardware 3D [Mesh Loading Assimp / Git History Fixing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:12&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 25}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 26|Hardware 3D [Dynamic Vertex / Template Metaprogramming Bullshit]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 26}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 27|Hardware 3D [Scene Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 27}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 28|Hardware 3D [Node Tree / Transform Propagation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 28}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 29|Hardware 3D [Cursor Hide / Cursor Confine]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 29}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 30|Hardware 3D [Raw Mouse Input]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:38&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 30}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 31|Hardware 3D [First Person Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 31}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 32|Hardware 3D [Material Loading]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 32}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 33|Hardware 3D [Bindable Codex]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:53&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 33}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 34|Hardware 3D [Normal Mapping Part 1]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 34}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 35|Hardware 3D [Extreme Goblin Energy]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 35}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 36|Hardware 3D [Renormalization]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 29, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 36}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 37|Hardware 3D [Sponza Test Map]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:26&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 37}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 38|Hardware 3D [Mipmapping / Anisotropic Filtering]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:58&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 38}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 39|Hardware 3D [Alpha Blending / Transparency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 17, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 39}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|40&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 40|Hardware 3D [DirectXTex / JSON Batch]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 1, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 40}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 41|Hardware 3D [Dynamic Constant Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:18:02&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 41}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 42|Hardware 3D [Stencil Buffer Outline Effect]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 42}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 43|Hardware 3D [Render Queue System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 43}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|44&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 44|Hardware 3D [&amp;quot;Visitor&amp;quot; Probe / Static Meta &amp;quot;Bridge&amp;quot;]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 1, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:43&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 44}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|45&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 45|Hardware 3D [Dynamic Technique Composition]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 45}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|46&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 46|Hardware 3D [Fullscreen Filters (Blur)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 29, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 46}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|47&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 47|Hardware 3D [Separated Gaussian Filter]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 47}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 48|Hardware 3D [Render Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 28, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 48}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 49|Hardware 3D [Input Layout Incredulity]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 5, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 49}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 50|Hardware 3D [Multi Camera Wireframe]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 50}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 51|Hardware 3D [Shadow Mapping Theory]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 10, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 51}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|52&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 52|Hardware 3D [Shadow Mapping Code]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 17, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 52}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|53&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 53|Hardware 3D [Shadow Bias / Self Shadowing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 31, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 53}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|54&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 54|Hardware 3D [Peter Panning / Shadow PCF]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 9, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:29&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 54}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_54&amp;diff=3285</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 54</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_54&amp;diff=3285"/>
				<updated>2020-06-08T17:13:19Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: /* Video Timestamp Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fourth part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers the concept of &amp;quot;peter panning&amp;quot; and self-shadowing due to sampling error in the depth map.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* The mechanics of peter panning and how to fix it&lt;br /&gt;
* Nonlinear depth woes&lt;br /&gt;
* PCF filtering to fix pixelated (aliased) shadow boundaries&lt;br /&gt;
* Self shadowing mediated by depth sampling frequency (resolution) and depth slope of the receiving surface&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/EPHjOUQ4rC8 Tutorial 54]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 55|Next in series (Tutorial 55)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_54&amp;diff=3284</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 54</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_54&amp;diff=3284"/>
				<updated>2020-06-08T16:38:34Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fourth part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers the concept of &amp;quot;peter panning&amp;quot; and self-shadowing due to sampling error in the depth map.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* The mechanics of peter panning and how to fix it&lt;br /&gt;
* Nonlinear depth woes&lt;br /&gt;
* PCF filtering to fix pixelated (aliased) shadow boundaries&lt;br /&gt;
* Self shadowing mediated by depth sampling frequency (resolution) and depth slope of the receiving surface&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/CIGNP71FiG0 Tutorial 54]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 55|Next in series (Tutorial 55)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_54&amp;diff=3283</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 54</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_54&amp;diff=3283"/>
				<updated>2020-06-08T16:10:26Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Created page with &amp;quot;Fourth part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers the concept of &amp;quot;peter panning&amp;quot; and self-shadowing due to sampling error...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fourth part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers the concept of &amp;quot;peter panning&amp;quot; and self-shadowing due to sampling error in the depth map.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* The mechanics of peter panning and how to fix it&lt;br /&gt;
* Nonlinear depth woes&lt;br /&gt;
* Self shadowing mediated by depth sampling frequency and depth slope of the receiving surface&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/CIGNP71FiG0 Tutorial 54]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 55|Next in series (Tutorial 55)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_53&amp;diff=3282</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 53</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_53&amp;diff=3282"/>
				<updated>2020-06-08T15:26:06Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Created page with &amp;quot;Third part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers goes into detail about the concept of self-shadowing (shadow acne) and sh...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Third part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers goes into detail about the concept of self-shadowing (shadow acne) and shadow biasing. We get our shadow mapping shader code working for all of the models.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Self-shadowing (shadow acne)&lt;br /&gt;
* Depth biasing&lt;br /&gt;
* Perspective divide must be done in the pixel shader&lt;br /&gt;
* Dealing with exceptions and exception specifiers during debugging&lt;br /&gt;
* Resources that are bound at different times as both shader input and output&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/Xc2G_tvXmnQ Tutorial 53]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 54|Next in series (Tutorial 54)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_52&amp;diff=3258</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 52</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_52&amp;diff=3258"/>
				<updated>2020-05-17T14:07:31Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: /* Video Timestamp Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Second part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers the basic implementation of the shadow mapping technique and its support code.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Camera attached to point light&lt;br /&gt;
* Depth stencil usages &amp;lt;code&amp;gt;DepthStencil&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ShadowDepth&amp;lt;/code&amp;gt;&lt;br /&gt;
* Saving depth to image file&lt;br /&gt;
* Linearlizing depth for visualization&lt;br /&gt;
* Technique channel bit mask&lt;br /&gt;
* Camera binding and light space camera transform&lt;br /&gt;
* Shadow map sampler&lt;br /&gt;
* Shadow mapping in vertex and pixel shaders&lt;br /&gt;
* Shadow map generation &amp;lt;code&amp;gt;Technique&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/CIGNP71FiG0 Tutorial 52]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 53|Next in series (Tutorial 53)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3257</id>
		<title>Hardware 3D Series (C++ DirectX Graphics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3257"/>
				<updated>2020-05-17T13:01:26Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hardware 3D series (HW3D) teaches the Direct3D 11 API and HLSL (High Level Shader Language). This includes basic instruction in the Windows API for the purposes of creating a window and processing input messages. The goal of this seriesis to give the student the skills necessary to create a basic 3D engine in Direct3D in C++ from scratch. This series builds upon the concepts introduced in previous series.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 0|Hardware 3D [Introduction]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 16, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 1|Hardware 3D [WinMain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 2|Hardware 3D [Window Creation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 22, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 3|Hardware 3D [Message Loop / WndProc]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 27, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 4|Hardware 3D [Windows Messages]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 30, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 5|Hardware 3D [WM_CHAR / Mouse]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 5, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 6|Hardware 3D [Window Framework]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 7|Hardware 3D [Error Handling / Custom Icons]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 8|Hardware 3D [Keyboard / WM_SYSKEYDOWN]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 9|Hardware 3D [Mouse / Mouse Capture]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 31, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 10|Hardware 3D [App class / PeekMessage]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 3, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11:47&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 11|Hardware 3D [COM (Component Object Model)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 12|Hardware 3D [D3D Architecture / Swap Chain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 13|Hardware 3D [Device Init / Fill Screen / Present]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 22, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 14|Hardware 3D [Debug Layer Diagnostics]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 2, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 15|Hardware 3D [ComPtr Smart Pointer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 16|Hardware 3D [First Triangle]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 9, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:43+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 17|Hardware 3D [Pipeline Exploration]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 23, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:23&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 18|Hardware 3D [Constant Buffers]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 30, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 19|Hardware 3D [DirectXMath]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:57&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 20|Hardware 3D [3D Cube / Z-Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 21|Hardware 3D [Bindable / Drawable System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 20, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:32+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 22|Hardware 3D [Texture Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 23|Hardware 3D [Test GUI (imgui) / Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:20&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 24|Hardware 3D [Dynamic Lighting / Graphics Debugger]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:56+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 24}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 25|Hardware 3D [Mesh Loading Assimp / Git History Fixing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:12&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 25}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 26|Hardware 3D [Dynamic Vertex / Template Metaprogramming Bullshit]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 26}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 27|Hardware 3D [Scene Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 27}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 28|Hardware 3D [Node Tree / Transform Propagation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 28}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 29|Hardware 3D [Cursor Hide / Cursor Confine]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 29}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 30|Hardware 3D [Raw Mouse Input]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:38&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 30}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 31|Hardware 3D [First Person Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 31}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 32|Hardware 3D [Material Loading]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 32}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 33|Hardware 3D [Bindable Codex]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:53&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 33}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 34|Hardware 3D [Normal Mapping Part 1]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 34}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 35|Hardware 3D [Extreme Goblin Energy]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 35}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 36|Hardware 3D [Renormalization]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 29, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 36}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 37|Hardware 3D [Sponza Test Map]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:26&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 37}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 38|Hardware 3D [Mipmapping / Anisotropic Filtering]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:58&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 38}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 39|Hardware 3D [Alpha Blending / Transparency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 17, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 39}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|40&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 40|Hardware 3D [DirectXTex / JSON Batch]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 1, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 40}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 41|Hardware 3D [Dynamic Constant Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:18:02&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 41}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 42|Hardware 3D [Stencil Buffer Outline Effect]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 42}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 43|Hardware 3D [Render Queue System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 43}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|44&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 44|Hardware 3D [&amp;quot;Visitor&amp;quot; Probe / Static Meta &amp;quot;Bridge&amp;quot;]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 1, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:43&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 44}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|45&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 45|Hardware 3D [Dynamic Technique Composition]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 45}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|46&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 46|Hardware 3D [Fullscreen Filters (Blur)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 29, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 46}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|47&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 47|Hardware 3D [Separated Gaussian Filter]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 47}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 48|Hardware 3D [Render Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 28, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 48}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 49|Hardware 3D [Input Layout Incredulity]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 5, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 49}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 50|Hardware 3D [Multi Camera Wireframe]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 50}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 51|Hardware 3D [Shadow Mapping Theory]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 10, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 51}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|52&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 52|Hardware 3D [Shadow Mapping Code]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 17, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 52}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_52&amp;diff=3256</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 52</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_52&amp;diff=3256"/>
				<updated>2020-05-17T13:00:11Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: Created page with &amp;quot;Second part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers the basic implementation of the shadow mapping technique and its support...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Second part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers the basic implementation of the shadow mapping technique and its support code.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Camera attached to point light&lt;br /&gt;
* Depth stencil usages &amp;lt;code&amp;gt;DepthStencil&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ShadowDepth&amp;lt;/code&amp;gt;&lt;br /&gt;
* Saving depth to image file&lt;br /&gt;
* Linearlizing depth for visualization&lt;br /&gt;
* Technique channel bit mask&lt;br /&gt;
* Camera binding and light space camera transform&lt;br /&gt;
* Shadow map sampler&lt;br /&gt;
* Shadow mapping in vertex and pixel shaders&lt;br /&gt;
* Shadow map generation &amp;lt;code&amp;gt;Technique&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/St2uayQ Tutorial 52]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 53|Next in series (Tutorial 53)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_51&amp;diff=3243</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 51</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_51&amp;diff=3243"/>
				<updated>2020-05-10T08:17:48Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: /* Video Timestamp Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;First part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers the fundamental theory behind the shadow mapping technique.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Occlusion shadows&lt;br /&gt;
* Shadow map depth lookup and comparison&lt;br /&gt;
* Transforming to light space from the render shader&lt;br /&gt;
* Omnidirectional shadow mapping and frustum clipping&lt;br /&gt;
* Render submission channels&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/St2uayQ5KQo Tutorial 51]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 52|Next in series (Tutorial 52)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3242</id>
		<title>Hardware 3D Series (C++ DirectX Graphics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_Series_(C%2B%2B_DirectX_Graphics)&amp;diff=3242"/>
				<updated>2020-05-10T07:40:25Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hardware 3D series (HW3D) teaches the Direct3D 11 API and HLSL (High Level Shader Language). This includes basic instruction in the Windows API for the purposes of creating a window and processing input messages. The goal of this seriesis to give the student the skills necessary to create a basic 3D engine in Direct3D in C++ from scratch. This series builds upon the concepts introduced in previous series.&lt;br /&gt;
&lt;br /&gt;
== List of Tutorials ==&lt;br /&gt;
{| style=&amp;quot;border:1px solid grey;border-collapse:collapse;width=100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#DDF;color:black;font-weight:bold;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:10%;border:1px solid grey;&amp;quot;|Tutorial Number&lt;br /&gt;
| style=&amp;quot;width:60%;border:1px solid grey;&amp;quot;|Title&lt;br /&gt;
| style=&amp;quot;width:16%;border:1px solid grey;&amp;quot;|Release Date&lt;br /&gt;
| style=&amp;quot;width:14%;border:1px solid grey;&amp;quot;|Runtime&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|0&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 0|Hardware 3D [Introduction]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 16, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 0}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 1|Hardware 3D [WinMain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 20, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:49&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 1}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|2&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 2|Hardware 3D [Window Creation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 22, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 2}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|3&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 3|Hardware 3D [Message Loop / WndProc]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 27, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 3}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|4&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 4|Hardware 3D [Windows Messages]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 30, 2018&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:30&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 4}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|5&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 5|Hardware 3D [WM_CHAR / Mouse]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 5, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:28&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 5}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|6&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 6|Hardware 3D [Window Framework]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:14&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 6}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|7&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 7|Hardware 3D [Error Handling / Custom Icons]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 7}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|8&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 8|Hardware 3D [Keyboard / WM_SYSKEYDOWN]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 8}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|9&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 9|Hardware 3D [Mouse / Mouse Capture]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 31, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 9}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 10|Hardware 3D [App class / PeekMessage]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 3, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11:47&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 10}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|11&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 11|Hardware 3D [COM (Component Object Model)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 11}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|12&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 12|Hardware 3D [D3D Architecture / Swap Chain]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 12}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 13|Hardware 3D [Device Init / Fill Screen / Present]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 22, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 13}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|14&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 14|Hardware 3D [Debug Layer Diagnostics]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 2, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:42&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 14}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 15|Hardware 3D [ComPtr Smart Pointer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|10:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 15}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|16&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 16|Hardware 3D [First Triangle]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 9, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:43+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 16}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 17|Hardware 3D [Pipeline Exploration]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 23, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:23&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 17}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 18|Hardware 3D [Constant Buffers]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 30, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|15:56&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 18}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|19&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 19|Hardware 3D [DirectXMath]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|18:57&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 19}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|20&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 20|Hardware 3D [3D Cube / Z-Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:03&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 20}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 21|Hardware 3D [Bindable / Drawable System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 20, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:32+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 21}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 22|Hardware 3D [Texture Mapping]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 22}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 23|Hardware 3D [Test GUI (imgui) / Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 11, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:20&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 23}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 24|Hardware 3D [Dynamic Lighting / Graphics Debugger]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 18, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28:56+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 24}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 25|Hardware 3D [Mesh Loading Assimp / Git History Fixing]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 8, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:12&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 25}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 26|Hardware 3D [Dynamic Vertex / Template Metaprogramming Bullshit]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 16, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43:48&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 26}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 27|Hardware 3D [Scene Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|June 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|27:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 27}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|28&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 28|Hardware 3D [Node Tree / Transform Propagation]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 6, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 28}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 29|Hardware 3D [Cursor Hide / Cursor Confine]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:33&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 29}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 30|Hardware 3D [Raw Mouse Input]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|13:38&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 30}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 31|Hardware 3D [First Person Camera]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|July 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|17:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 31}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 32|Hardware 3D [Material Loading]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 4, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:50&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 32}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 33|Hardware 3D [Bindable Codex]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:53&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 33}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 34|Hardware 3D [Normal Mapping Part 1]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|August 27, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 34}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|35&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 35|Hardware 3D [Extreme Goblin Energy]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 21, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|33:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 35}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 36|Hardware 3D [Renormalization]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|September 29, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|34:45&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 36}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 37|Hardware 3D [Sponza Test Map]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 12, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|32:26&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 37}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|38&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 38|Hardware 3D [Mipmapping / Anisotropic Filtering]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|October 26, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|22:58&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 38}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|39&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 39|Hardware 3D [Alpha Blending / Transparency]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|November 17, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|37:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 39}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|40&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 40|Hardware 3D [DirectXTex / JSON Batch]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 1, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:06&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 40}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|41&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 41|Hardware 3D [Dynamic Constant Buffer]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 13, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|1:18:02&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 41}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|42&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 42|Hardware 3D [Stencil Buffer Outline Effect]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|December 28, 2019&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|23:05&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 42}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|43&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 43|Hardware 3D [Render Queue System]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|January 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|36:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 43}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|44&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 44|Hardware 3D [&amp;quot;Visitor&amp;quot; Probe / Static Meta &amp;quot;Bridge&amp;quot;]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 1, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|21:43&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 44}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|45&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 45|Hardware 3D [Dynamic Technique Composition]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 16, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|30:00&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 45}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|46&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 46|Hardware 3D [Fullscreen Filters (Blur)]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|February 29, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|31:18&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 46}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|47&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 47|Hardware 3D [Separated Gaussian Filter]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 15, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|24:10+&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 47}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|48&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 48|Hardware 3D [Render Graph]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|March 28, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51:39&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 48}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|49&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 49|Hardware 3D [Input Layout Incredulity]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 5, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|25:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 49}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|50&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 50|Hardware 3D [Multi Camera Wireframe]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|April 18, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|29:10&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 50}}&lt;br /&gt;
|- style=&amp;quot;border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|51&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;text-align:left;&amp;quot;|[[Hardware 3D (C++ DirectX Graphics) Tutorial 51|Hardware 3D [Shadow Mapping Theory]]]&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|May 10, 2020&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;&amp;quot;|26:40&lt;br /&gt;
|- style=&amp;quot;background-color:#333;color:#c1c1c1;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1px solid grey;padding:8px;&amp;quot; colspan=&amp;quot;4&amp;quot; | {{#lsth:Hardware 3D (C++ DirectX Graphics) Tutorial 51}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	<entry>
		<id>https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_51&amp;diff=3241</id>
		<title>Hardware 3D (C++ DirectX Graphics) Tutorial 51</title>
		<link rel="alternate" type="text/html" href="https://wiki.planetchili.net/index.php?title=Hardware_3D_(C%2B%2B_DirectX_Graphics)_Tutorial_51&amp;diff=3241"/>
				<updated>2020-05-10T07:38:01Z</updated>
		
		<summary type="html">&lt;p&gt;Chili: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;First part in a mini-series on basic dynamic occlusion shadows with shadow mapping. This video covers the fundamental theory behind the shadow mapping technique.&lt;br /&gt;
&lt;br /&gt;
== Topics Covered ==&lt;br /&gt;
* Occlusion shadows&lt;br /&gt;
* Shadow map depth lookup and comparison&lt;br /&gt;
* Transforming to light space from the render shader&lt;br /&gt;
* Omnidirectional shadow mapping and frustum clipping&lt;br /&gt;
* Render submission channels&lt;br /&gt;
&lt;br /&gt;
== Video Timestamp Index ==&lt;br /&gt;
* [https://youtu.be/5SAqIOTi Tutorial 51]&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
* [https://github.com/planetchili/hw3d 3D GitHub Repo]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Hardware 3D (C++ DirectX Graphics) Tutorial 52|Next in series (Tutorial 52)]]&lt;br /&gt;
* [[Hardware 3D Series (C++ DirectX Graphics)]]&lt;br /&gt;
* [https://www.patreon.com/planetchili Planet Chili Patreon]&lt;/div&gt;</summary>
		<author><name>Chili</name></author>	</entry>

	</feed>