VizFwk: Add scissoring to cvf::Rendering

This commit is contained in:
Jacob Støren
2019-10-10 17:00:31 +02:00
parent 715a1c66e5
commit 6d2253ad26
7 changed files with 321 additions and 34 deletions

View File

@@ -57,6 +57,7 @@
#include "cvfRayIntersectSpec.h"
#include "cvfHitItemCollection.h"
#include "cvfLogManager.h"
#include "cvfRenderingScissor.h"
namespace cvf {
@@ -214,7 +215,17 @@ void Rendering::render(OpenGLContext* oglContext)
// Setup camera and view
// -------------------------------------------------------------------------
m_camera->viewport()->applyOpenGL(oglContext, m_clearMode);
if (m_renderingScissor.notNull())
{
m_camera->viewport()->applyOpenGL(oglContext, Viewport::DO_NOT_CLEAR);
m_renderingScissor->applyOpenGL(oglContext, m_clearMode, m_camera->viewport()->clearColor());
}
else
{
m_camera->viewport()->applyOpenGL(oglContext, m_clearMode);
}
m_camera->applyOpenGL();
// Update dynamic uniforms and dynamic uniform sets
@@ -261,6 +272,11 @@ void Rendering::render(OpenGLContext* oglContext)
size_t numPartsToDraw = std::min(m_maxNumPartsToDraw, renderQueue.count());
m_renderEngine.render(oglContext, &renderQueue, numPartsToDraw, *m_camera, globalUniformSet);
if (m_renderingScissor.notNull())
{
m_renderingScissor->unApplyOpenGL(oglContext);
}
if (renderTimer.notNull())
{
m_performanceInfo.renderEngineTime = renderTimer->lapTime();
@@ -662,6 +678,14 @@ Viewport::ClearMode Rendering::clearMode() const
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rendering::setRenderingScissor(RenderingScissor* scissor)
{
m_renderingScissor = scissor;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------