# Low-level API Advanced Programmer The @'Stride.Graphics.GraphicsDevice' class is the central class for displaying your game. It's used to create resources and present images on the screen. You can access it as a member of the @'Stride.Engine.Game' and @'Stride.Engine.ScriptComponent' classes. Actions such as drawing, setting graphics states and using resources are recorded using @'Stride.Graphics.CommandList' objects for later execution by the device. Many command lists can be filled at the same time (eg one per thread). A default command list is available as member of the @'Stride.Games.GameBase.GraphicsContext' of your @'Stride.Engine.Game'. In methods, these objects are typically provided through contexts such as @'Stride.Rendering.RenderContext' and @'Stride.Rendering.RenderDrawContext'. Performing any drawing requires multiple steps, including: * setting textures as [render textures](textures-and-render-textures.md), clearing them, and setting viewports and scissors * setting up the graphics [pipeline state](pipeline-state.md), including input description, shaders, depth-stencil, blending, rasterizer, etc * binding [resources](resources.md), such as constant buffers and textures * [drawing vertices](draw-vertices.md) using built-in primitives or custom vertex buffers ## In this section * [Draw vertices](draw-vertices.md) * [Pipeline state](pipeline-state.md) * [Resources](resources.md) * [SpriteBatch](spritebatch.md) * [SpriteFont](spritefont.md) * [Textures and render textures](textures-and-render-textures.md)