Once we have explained what Billboards are, we are going to explain what the GUI is. It is the Graphics User Interface. It allows us to show the player some info and help him interact with it. The information type can be the life bar, the number of bullets the player has, the map or the game's main menu, all this integrated inside the GUI part. We have two GUIs: the classic GUI which is a 2D GUI such as the one we see on the left screen, from the game Pro Evolution 2015, in which we have some menu buttons, all this in 2D. And then we have a more modern GUI, more actual, one of the most actuals which would be a GUI integrated inside a 3D environment. In this case we can see Electronic Arts' game The Space, which shows us our inventory inside a camera in 3D. It looks as it was in a plane inside the video game's world. We are going to make a small GUI inside our game in which we are going to represent the player's life, weapons and bullets he has in 2D and we will also have a small environment, a small 3D element with the player's head. To do so we are going to implement the class from here, from the code. We have the Gui.h class, that is the GUI class which is inside the Gui.h file, Gui.cpp. On one side we have the class' builder and debuilder, the restart method and the different methods. We have textures to save the numbers we are going to use to put the number of lives and the amount of life the player has, and the amount of bullets the player has, a texture which in the text will allow us to paint in the center of the screen an optical sight cross to shoot and a texture we are going to use to give it the blood effect when we are hurt. We are going to use the m_AlphaBlood member variable to paint the blood. In the builder we initialize our classes' member variables. We see how here we have a TO DO part we will later explain when we implement the code. The restart method would reset all the GUI part. It isn't implemented, it has no codes, it is simply there in case we need it. The debuilder will later delete the dynamic objects we will see later. Then we have the SetTextures method, which would be a part of the initialization. It will establish the textures, basically loading them through the Device we are going to use in our game, the numbers, the blood and the optical sight cross I said before. Then we have RenderPlayedBlood, which initializes the Alpha from when we are hit, and we will have all our screen stained in blood, and depending on the Alpha, it will decrease. We have the first Render method which is RenderPlayerBlood, which will paint the blood. So if the AlphaBlood is bigger than 0 we decrease it based on ElapsedTime and we paint a square to the full screen giving it the blood texture with a color. The color is white, but in the Alpha channel we give it a value between 0 and 1 which is the semi transparency value. This is the line 56. RenderCrosshair will paint the Cross texture, which is the optical sight cross' texture, in the middle of the screen. They give XEI position, size and color again. RenderStatusPlayer will analyze the amount of life the player has. Then the life amount goes from 0 to 100. So what it does is dividing the life in three values and painting them through up to three textures. That is, we have numbers textures, take the units out, the tens and the hundreds and what it does is painting a square, a ScreenQuad based on the number, if it's a unit, a ten or a hundred in the determined position. That is in lines 96, 98 and 100. The method we use is the same as before, DrawSreenQuad11, which in this case is centered. Then we have RenderStatusGun which does the same we have seen with the life, but with the amount of bullets. If we have up to 100 bullets, we calculate the units again, tens and hundreds and in lines 137, 139 and 141 we paint based on the number, we paint this amount with the numbers' texture. Render will paint the optical sight cross in the middle of the screen, as well as the Player's state, the weapons' state and the blood. And then we have a method which is RenderStats which we will implement now.