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

The renderer. More...

#include <Renderer3D.h>

Inheritance diagram for CRenderer3D:
CComponent CCameraCommon CWindow CWindowDesc CSettingsManager CSettings CSpriteRenderer

Public Member Functions

 CRenderer3D ()
 Constructor.
 
virtual ~CRenderer3D ()
 Destructor.
 
void Initialize (bool=true)
 Initialize renderer. More...
 
void LoadTexture (const char *, CTextureDesc &)
 Load texture. More...
 
void LoadTextureFile (const char *, CTextureDesc &)
 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 CWindow
template<typename t0 , typename t1 , typename t2 >
int WinMain (_In_ HINSTANCE, bool, const t0 &, const t1 &, const t2 &)
 WinMain.
 
- Public Member Functions inherited from CSettingsManager
void Load ()
 Load game settings. More...
 

Protected Member Functions

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

Protected Attributes

unique_ptr< GraphicsMemory > m_pGraphicsMemory
 Pointer to graphics memory.
 
unique_ptr< DescriptorHeap > m_pDescriptorHeap
 Pointer to a descriptor heap.
 
UINT m_nNumResourceDesc = 0
 Number of resource descriptors in descriptor heap.
 
unique_ptr< CommonStates > m_pStates
 Pointer to render state object.
 
unique_ptr< SpriteBatch > m_pSpriteBatch
 SpriteBatch object for rendering sprites in screen space (from the DirectXTK).
 
unique_ptr< PrimitiveBatch< VertexPositionColor > > m_pPrimitiveBatch
 PrimitiveBatch object from the DirectXTK.
 
unique_ptr< SpriteBatch > m_pTextSpriteBatch
 SpriteBatch object for rendering text in screen space.
 
unique_ptr< SpriteFont > m_pFont
 Text font.
 
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.
 

Additional Inherited Members

- Static Protected Attributes inherited from CComponent
static CStepTimerm_pStepTimer = &cStepTimer
 Pointer to a step timer. More...
 
static CRandomm_pRandom = &cRandom
 Pointer to a PRNG. More...
 
static CKeyboardm_pKeyboard = &cKeyboard
 Pointer to a keyboard handler. More...
 
static CXBoxControllerm_pController = &cController
 Pointer to a XBox controller. More...
 
static CAudiom_pAudio = &cAudio
 Pointer to an audio player. More...
 
- Static Protected Attributes inherited from CCameraCommon
static XMFLOAT4X4 m_orient
 Orientation matrix.
 
static XMFLOAT4X4 m_view
 View matrix.
 
static XMFLOAT4X4 m_projection
 Projection matrix.
 
- Static Protected Attributes inherited from CWindowDesc
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 CSettingsManager
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 CSettings
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 CRenderer3D::BeginFrame ( )
virtual

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

Reimplemented in CSpriteRenderer.

◆ BeginResourceUpload()

void CRenderer3D::BeginResourceUpload ( )

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

◆ CreateDDSTexture()

void CRenderer3D::CreateDDSTexture ( _In_z_ const wchar_t *  szFileName,
CTextureDesc 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.

◆ CreateWICTexture()

void CRenderer3D::CreateWICTexture ( _In_z_ const wchar_t *  szFileName,
CTextureDesc 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 CRenderer3D::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 CRenderer3D::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 CRenderer3D::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 CRenderer3D::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 CRenderer3D::EndFrame ( )
virtual

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

Reimplemented in CSpriteRenderer.

◆ EndResourceUpload()

void CRenderer3D::EndResourceUpload ( )

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

◆ Initialize()

void CRenderer3D::Initialize ( bool  bUseDepthStencil = true)

Do the necessary voodoo to set up Direct3D 12 rendering.

Parameters
bUseDepthStenciltrue to use z-buffering.

◆ LoadScreenFont()

void CRenderer3D::LoadScreenFont ( )
protected

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

◆ LoadTexture()

void CRenderer3D::LoadTexture ( const char *  name,
CTextureDesc 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 CRenderer3D::LoadTextureFile ( const char *  filename,
CTextureDesc tDesc 
)

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

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

◆ OnDeviceLost()

void CRenderer3D::OnDeviceLost ( )
overridevirtual

TODO: fix this, it ain't complete.

◆ OnDeviceRestored()

void CRenderer3D::OnDeviceRestored ( )
overridevirtual

TODO: fix this, it ain't complete.

◆ ProcessTexture()

void CRenderer3D::ProcessTexture ( _In_ ComPtr< ID3D12Resource >  p,
CTextureDesc 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 CRenderer3D::SaveScreenShot ( )

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

◆ SetBgColor()

void CRenderer3D::SetBgColor ( const XMVECTORF32 &  color)

Set the background color.

Parameters
colorNew background color.