The LARC Game Engine
A Simple Game Engine from the Laboratory for Recreational Computing
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
LRenderer3D Class Reference

The renderer. More...

#include <Renderer3D.h>

Inheritance diagram for LRenderer3D:
LComponent LCameraCommon LWindow LWindowDesc LSettingsManager LSettings LSpriteRenderer

Public Member Functions

 LRenderer3D ()
 Constructor.
 
virtual ~LRenderer3D ()
 Destructor.
 
void Initialize (bool=true)
 Initialize renderer. More...
 
void LoadTexture (const char *, LTextureDesc &)
 Load texture. More...
 
void LoadTextureFile (const char *, LTextureDesc &)
 Load texture from file. More...
 
void BeginResourceUpload ()
 Begin uploading textures. More...
 
void EndResourceUpload ()
 End uploading textures. More...
 
virtual void BeginFrame ()
 Begin frame. More...
 
virtual void EndFrame ()
 End frame. More...
 
void SetBgColor (const XMVECTORF32 &)
 Set default background color. More...
 
void DrawScreenText (const char *, const Vector2 &, XMVECTORF32=Colors::Black)
 Draw screen text. More...
 
void DrawScreenText (const wchar_t *, const Vector2 &, XMVECTORF32=Colors::Black)
 Draw screen text, wide version. More...
 
void DrawCenteredText (const char *, XMVECTORF32=Colors::Black)
 Draw centered text. More...
 
void DrawCenteredText (const wchar_t *, XMVECTORF32=Colors::Black)
 Draw centered text, wide version. More...
 
void SaveScreenShot ()
 Save a screenshot. More...
 
virtual void OnDeviceLost () override
 Handler for device lost notification. More...
 
virtual void OnDeviceRestored () override
 Handler for device restored notification. More...
 
- Public Member Functions inherited from LWindow
template<typename t0 , typename t1 , typename t2 >
int WinMain (_In_ HINSTANCE, bool, const t0 &, const t1 &, const t2 &)
 WinMain.
 
- Public Member Functions inherited from LSettingsManager
void Load ()
 Load game settings. More...
 

Protected Member Functions

void CreateDDSTexture (_In_z_ const wchar_t *, LTextureDesc &)
 Load a texture from a DirectDraw surface file (contains mipmaps). More...
 
void CreateWICTexture (_In_z_ const wchar_t *, LTextureDesc &)
 Load a texture from a an image file (does not contain mipmaps). More...
 
void ProcessTexture (_In_ ComPtr< ID3D12Resource >, LTextureDesc &)
 Process a loaded texture. More...
 
void LoadScreenFont ()
 Load screen font. More...
 
- Protected Member Functions inherited from LSettingsManager
void SetWinSize (int, int)
 Set window size information. More...
 

Protected Attributes

std::unique_ptr< GraphicsMemory > m_pGraphicsMemory
 Pointer to graphics memory.
 
std::unique_ptr< DescriptorHeap > m_pDescriptorHeap
 Pointer to a descriptor heap.
 
UINT m_nNumResourceDesc = 0
 Number of resource descriptors in descriptor heap.
 
std::unique_ptr< CommonStates > m_pStates
 Pointer to render state object.
 
std::unique_ptr< SpriteBatch > m_pSpriteBatch
 SpriteBatch object for rendering sprites in screen space (from the DirectXTK).
 
std::unique_ptr< PrimitiveBatch< VertexPositionColor > > m_pPrimitiveBatch
 PrimitiveBatch object from the DirectXTK.
 
std::unique_ptr< SpriteBatch > m_pTextSpriteBatch
 SpriteBatch object for rendering text in screen space.
 
std::unique_ptr< SpriteFont > m_pFont
 Text font.
 
std::unique_ptr< DeviceResources > m_pDeviceResources
 Pointer to device resources.
 
ID3D12Device * m_pD3DDevice = nullptr
 Pointer to the D3D device.
 
ResourceUploadBatch * m_pResourceUpload = nullptr
 Pointer to the resource upload batch object.
 
ID3D12GraphicsCommandList * m_pCommandList = nullptr
 Pointer to the command list.
 
ID3D12DescriptorHeap * m_pHeaps [2]
 A pair of pointers to heaps.
 
RenderTargetState m_RenderTargetState
 The render target state.
 
XMVECTORF32 m_f32BgColor = Colors::White
 The default background color.
 

Private Member Functions

void CreateDeviceDependentResources ()
 Create device dependent resources. More...
 

Private Attributes

std::vector< ComPtr< ID3D12Resource > > m_pTexture
 Texture list.
 
bool m_bUseDepthStencil = true
 Whether to use z-buffering.
 

Additional Inherited Members

- Static Protected Attributes inherited from LComponent
static LTimerm_pTimer = &cTimer
 Pointer to a timer. More...
 
static LRandomm_pRandom = &cRandom
 Pointer to a PRNG. More...
 
static LKeyboardm_pKeyboard = &cKeyboard
 Pointer to a keyboard handler. More...
 
static LXBoxControllerm_pController = &cController
 Pointer to a XBox controller. More...
 
static LSoundm_pAudio = &cAudio
 Pointer to an audio player. More...
 
- Static Protected Attributes inherited from LCameraCommon
static XMFLOAT4X4 m_orient
 Orientation matrix.
 
static XMFLOAT4X4 m_view
 View matrix.
 
static XMFLOAT4X4 m_projection
 Projection matrix.
 
- Static Protected Attributes inherited from LWindowDesc
static HWND m_Hwnd = 0
 Window handle.
 
static HINSTANCE m_hInst = 0
 Instance handle.
 
static bool m_bExitSizeMove
 User just finished moving/resizing window.
 
- Static Protected Attributes inherited from LSettingsManager
static XMLElement * m_pXmlSettings = nullptr
 Pointer to the settings tag in the XML settings file.

 
static float m_fAspectRatio = 1.0f
 Aspect ratio, width/ht.
 
- Static Protected Attributes inherited from LSettings
static char m_szName [MAX_PATH]
 Name of this game.
 
static int m_nWinWidth = 0
 Window width in pixels.
 
static int m_nWinHeight = 0
 Window height in pixels.
 
static Vector2 m_vWinCenter = Vector2::Zero
 Window center.
 

Detailed Description

The renderer uses DirectX 12 and DirectXTK 12.

Member Function Documentation

◆ BeginFrame()

void LRenderer3D::BeginFrame ( )
virtual

Must be called at the start of each animation frame to initialize the render pipeline.

Reimplemented in LSpriteRenderer.

◆ BeginResourceUpload()

void LRenderer3D::BeginResourceUpload ( )

Notify the resource upload object that uploading is about to begin.

◆ CreateDDSTexture()

void LRenderer3D::CreateDDSTexture ( _In_z_ const wchar_t *  szFileName,
LTextureDesc tDesc 
)
protected

Load a texture from a DirectDraw Surface file. Aborts if file not found.

Parameters
szFileName[in] Wide file name.
tDesc[out] Descriptor for the texture pointed to by p.

◆ CreateDeviceDependentResources()

void LRenderer3D::CreateDeviceDependentResources ( )
private

Create SpriteBatch, PrimitiveBatch and set their viewports. Load the text font.

◆ CreateWICTexture()

void LRenderer3D::CreateWICTexture ( _In_z_ const wchar_t *  szFileName,
LTextureDesc tDesc 
)
protected

Load a texture from a WIC file. Aborts if file not found.

Parameters
szFileName[in] Wide file name.
tDesc[out] Texture descriptor.

◆ DrawCenteredText() [1/2]

void LRenderer3D::DrawCenteredText ( const char *  text,
XMVECTORF32  color = Colors::Black 
)

Draw text to the screen center.

Parameters
textNull terminated text string.
colorText color, defaults to black.

◆ DrawCenteredText() [2/2]

void LRenderer3D::DrawCenteredText ( const wchar_t *  text,
XMVECTORF32  color = Colors::Black 
)

Draw text to the screen center.

Parameters
textNull terminated wide text string.
colorText color, defaults to black.

◆ DrawScreenText() [1/2]

void LRenderer3D::DrawScreenText ( const char *  text,
const Vector2 &  p,
XMVECTORF32  color = Colors::Black 
)

Draw text to the screen.

Parameters
textNull terminated text string.
pposition of text.
colorText color, defaults to black.

◆ DrawScreenText() [2/2]

void LRenderer3D::DrawScreenText ( const wchar_t *  text,
const Vector2 &  p,
XMVECTORF32  color = Colors::Black 
)

Draw text to the screen.

Parameters
textNull terminated wide text string.
pposition of text.
colorText color, defaults to black.

◆ EndFrame()

void LRenderer3D::EndFrame ( )
virtual

Must be called at the end of each animation frame to render and present the current frame.

Reimplemented in LSpriteRenderer.

◆ EndResourceUpload()

void LRenderer3D::EndResourceUpload ( )

Notify the resource upload object that uploading is over, and wait for any uploads in progress to finish.

◆ Initialize()

void LRenderer3D::Initialize ( bool  bUseDepthStencil = true)

Do the necessary voodoo to set up Direct3D 12 rendering.

Parameters
bUseDepthStenciltrue to use z-buffering.

◆ LoadScreenFont()

void LRenderer3D::LoadScreenFont ( )
protected

Load the font for the screen text from a font file specified in gamesettings.xml.

◆ LoadTexture()

void LRenderer3D::LoadTexture ( const char *  name,
LTextureDesc tDesc 
)

Load a texture from a file specified in gamesettings.xml. Aborts if gamesettings.xml has not been loaded correctly.

Parameters
name[in] Name field in a sprite tag.
tDesc[out] Texture descriptor.

◆ LoadTextureFile()

void LRenderer3D::LoadTextureFile ( const char *  filename,
LTextureDesc tDesc 
)

Load a texture from a file. Aborts if file not found.

Parameters
filename[in] File name.
tDesc[out] Texture descriptor.

◆ OnDeviceLost()

void LRenderer3D::OnDeviceLost ( )
overridevirtual

TODO: fix this, it ain't complete.

◆ OnDeviceRestored()

void LRenderer3D::OnDeviceRestored ( )
overridevirtual

TODO: fix this, it ain't complete.

◆ ProcessTexture()

void LRenderer3D::ProcessTexture ( _In_ ComPtr< ID3D12Resource >  p,
LTextureDesc tDesc 
)
protected

Given a COM pointer to a texture that has just been loaded using CreateDDSTexture of CreateWICTexture, append it to the end of texture list, create a shader resource view for it, and record the texture's index, resource descriptor index, and dimensions in the texture descriptor.

Parameters
p[in] Pointer to the D3D12 resource for the texture.
tDesc[out] Descriptor for the texture pointed to by p.

◆ SaveScreenShot()

void LRenderer3D::SaveScreenShot ( )

Save a screenshot to screenshot0.png, screenshot1.png, etc.

◆ SetBgColor()

void LRenderer3D::SetBgColor ( const XMVECTORF32 &  color)

Set the background color.

Parameters
colorNew background color.