Skip to content

Commit

Permalink
Continued working on the Direct3D 12 renderer: The following example …
Browse files Browse the repository at this point in the history
…is working now: "FirstIndirectBuffer"
  • Loading branch information
cofenberg committed Sep 15, 2019
1 parent 4b33020 commit 0b23415
Show file tree
Hide file tree
Showing 12 changed files with 1,691 additions and 976 deletions.
Expand Up @@ -79,16 +79,12 @@ int FirstGpgpu::run()
onInitialization();

// Begin scene rendering
// -> Required for Direct3D 9 and Direct3D 12
// -> Not required for Direct3D 10, Direct3D 11, OpenGL and OpenGL ES 3
if (mRenderer->beginScene())
{
// Let the application to its job
onDoJob();

// End scene rendering
// -> Required for Direct3D 9 and Direct3D 12
// -> Not required for Direct3D 10, Direct3D 11, OpenGL and OpenGL ES 3
mRenderer->endScene();
}

Expand Down
Expand Up @@ -352,8 +352,6 @@ void FirstMultipleSwapChains::onDrawRequest()
if (nullptr != mainRenderTarget)
{
// Begin scene rendering
// -> Required for Direct3D 9 and Direct3D 12
// -> Not required for Direct3D 10, Direct3D 11, OpenGL and OpenGL ES 3
if (renderer->beginScene())
{
{ // Fill the command buffer
Expand Down Expand Up @@ -381,8 +379,6 @@ void FirstMultipleSwapChains::onDrawRequest()
mCommandBuffer.submitToRendererAndClear(*renderer);

// End scene rendering
// -> Required for Direct3D 9 and Direct3D 12
// -> Not required for Direct3D 10, Direct3D 11, OpenGL and OpenGL ES 3
renderer->endScene();

// Present the content of the current back buffer
Expand All @@ -395,8 +391,6 @@ void FirstMultipleSwapChains::onDrawRequest()
}

// Render to the swap chain created in this example, but only if it's valid: Begin scene rendering
// -> Required for Direct3D 9 and Direct3D 12
// -> Not required for Direct3D 10, Direct3D 11, OpenGL and OpenGL ES 3
if (nullptr != mSwapChain && renderer->beginScene())
{
{ // Fill the command buffer
Expand Down Expand Up @@ -435,8 +429,6 @@ void FirstMultipleSwapChains::onDrawRequest()
mCommandBuffer.submitToRendererAndClear(*renderer);

// End scene rendering
// -> Required for Direct3D 9 and Direct3D 12
// -> Not required for Direct3D 10, Direct3D 11, OpenGL and OpenGL ES 3
renderer->endScene();

// Present the content of the current back buffer
Expand Down
Expand Up @@ -163,8 +163,6 @@ void IApplicationRenderer::onDrawRequest()
else if (nullptr != mRenderer && nullptr != mMainSwapChain)
{
// Begin scene rendering
// -> Required for Direct3D 9 and Direct3D 12
// -> Not required for Direct3D 10, Direct3D 11, OpenGL and OpenGL ES 3
if (mRenderer->beginScene())
{
{ // Scene rendering
Expand Down Expand Up @@ -196,8 +194,6 @@ void IApplicationRenderer::onDrawRequest()
mCommandBuffer.submitToRendererAndClear(*mRenderer);

// End scene rendering
// -> Required for Direct3D 9 and Direct3D 12
// -> Not required for Direct3D 10, Direct3D 11, OpenGL and OpenGL ES 3
mRenderer->endScene();
}

Expand Down
20 changes: 18 additions & 2 deletions Source/Renderer/Private/Direct3D10Renderer/Direct3D10Renderer.cpp
Expand Up @@ -2345,8 +2345,9 @@ namespace Direct3D10Renderer
ID3D10VertexShader* mD3d10VertexShader;
ID3D10GeometryShader* mD3d10GeometryShader;
ID3D10PixelShader* mD3d10PixelShader;


#ifdef RENDERER_DEBUG
bool mDebugBetweenBeginEndScene; ///< Just here for state tracking in debug builds
#endif
};


Expand Down Expand Up @@ -9787,6 +9788,9 @@ namespace Direct3D10Renderer
mD3d10VertexShader(nullptr),
mD3d10GeometryShader(nullptr),
mD3d10PixelShader(nullptr)
#ifdef RENDERER_DEBUG
, mDebugBetweenBeginEndScene(false)
#endif
{
mDirect3D10RuntimeLinking = RENDERER_NEW(mContext, Direct3D10RuntimeLinking)(*this);

Expand Down Expand Up @@ -11416,6 +11420,12 @@ namespace Direct3D10Renderer
{
// Not required when using Direct3D 10

// Sanity check
#ifdef RENDERER_DEBUG
RENDERER_ASSERT(mContext, false == mDebugBetweenBeginEndScene, "Direct3D 10: Begin scene was called while scene rendering is already in progress, missing end scene call?")
mDebugBetweenBeginEndScene = true;
#endif

// Done
return true;
}
Expand All @@ -11442,6 +11452,12 @@ namespace Direct3D10Renderer

void Direct3D10Renderer::endScene()
{
// Sanity check
#ifdef RENDERER_DEBUG
RENDERER_ASSERT(mContext, true == mDebugBetweenBeginEndScene, "Direct3D 10: End scene was called while scene rendering isn't in progress, missing start scene call?")
mDebugBetweenBeginEndScene = false;
#endif

// We need to forget about the currently set render target
setGraphicsRenderTarget(nullptr);
}
Expand Down
18 changes: 18 additions & 0 deletions Source/Renderer/Private/Direct3D11Renderer/Direct3D11Renderer.cpp
Expand Up @@ -2866,6 +2866,9 @@ namespace Direct3D11Renderer
// Generate asynchronous mipmaps for textures
std::mutex mGenerateAsynchronousMipmapsForTexturesMutex;
std::vector<Renderer::ITexture*> mGenerateAsynchronousMipmapsForTextures;
#ifdef RENDERER_DEBUG
bool mDebugBetweenBeginEndScene; ///< Just here for state tracking in debug builds
#endif


};
Expand Down Expand Up @@ -12133,6 +12136,9 @@ namespace Direct3D11Renderer
mD3d11GeometryShader(nullptr),
mD3d11PixelShader(nullptr),
mD3d11ComputeShader(nullptr)
#ifdef RENDERER_DEBUG
, mDebugBetweenBeginEndScene(false)
#endif
{
mDirect3D11RuntimeLinking = RENDERER_NEW(context, Direct3D11RuntimeLinking)(*this);

Expand Down Expand Up @@ -14364,6 +14370,12 @@ namespace Direct3D11Renderer
{
// Not required when using Direct3D 11

// Sanity check
#ifdef RENDERER_DEBUG
RENDERER_ASSERT(mContext, false == mDebugBetweenBeginEndScene, "Direct3D 11: Begin scene was called while scene rendering is already in progress, missing end scene call?")
mDebugBetweenBeginEndScene = true;
#endif

// Done
return true;
}
Expand Down Expand Up @@ -14463,6 +14475,12 @@ namespace Direct3D11Renderer

void Direct3D11Renderer::endScene()
{
// Sanity check
#ifdef RENDERER_DEBUG
RENDERER_ASSERT(mContext, true == mDebugBetweenBeginEndScene, "Direct3D 11: End scene was called while scene rendering isn't in progress, missing start scene call?")
mDebugBetweenBeginEndScene = false;
#endif

// We need to forget about the currently set render target
setGraphicsRenderTarget(nullptr);
}
Expand Down

0 comments on commit 0b23415

Please sign in to comment.