当前位置: 首页>>代码示例>>C++>>正文


C++ Light::IsInitialized方法代码示例

本文整理汇总了C++中Light::IsInitialized方法的典型用法代码示例。如果您正苦于以下问题:C++ Light::IsInitialized方法的具体用法?C++ Light::IsInitialized怎么用?C++ Light::IsInitialized使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Light的用法示例。


在下文中一共展示了Light::IsInitialized方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: VGenerateShadowMaps

///////////////////////////////////////////////
//Shadowing
///////////////////////////////////////////////
AVOID DeferredRenderer::VGenerateShadowMaps()
{
	if (m_bVarianceShadows)
	{
		//m_pVarianceShadowsShaders->VBind();
		//m_pShadowsShaders->VBind();
	}
	else
	{
		//m_pShadowsShaders->VBind();
	}
	m_pShadowCubeShaders->VBind();

	//Set rendering states
	m_pDepthEnableStencilDisableStandard->Set(1);
	for (LightList::iterator lit = m_lights.begin(); lit != m_lights.end(); lit++)
	{
		Light* pLight = (*lit);

		//initialize light if it hasn't been yet 
		if (!pLight->IsInitialized())
			pLight->VInitialize(m_pLayout);

		//clear shadow map before generating new one
		pLight->VClearShadowMap();

		Mesh * pMesh;
		m_queue.Reset();
		while (pMesh = m_queue.Next())
		{
			//pMesh->VPreRender(this, view, viewProj); 
			pLight->VPrepareToGenerateShadowMap(pMesh->GetWorldTransform(), this);
			pMesh->GenerateShadowMap();
		} 

		pLight->VFinishShadowMapGeneration(this);
	}
}
开发者ID:jjiezheng,项目名称:Anubis-Engine,代码行数:41,代码来源:DeferredRenderer.cpp

示例2: VRender

AVOID DeferredRenderer::VRender()
{
	/*** Render Scene For Each Camera ***/
 	//for (CameraPtr pCamera : m_cameras)
	for (Cameras::iterator it = m_cameras.begin(); it != m_cameras.end(); it++)
	{
		CameraPtr pCamera = (*it);
		//Keep track of current view and projection matrices
		Mat4x4 view			= pCamera->GetView();
		Mat4x4 projection	= pCamera->GetProjection();
		Mat4x4 viewProj		= view * projection; //calculate view * projection matrix

		VRenderSky(pCamera, viewProj);

		//	Rendering to g-buffer
		m_gbuffer.BindForWriting(m_pDepthDSV);

		// ===================================================== //
		//	Go through sorted render queue and render each mesh  //
		// ===================================================== //
		PrepareForGeometryPass(pCamera);
		VSetStateForGBuffer();
		m_pDepthEnableStencilDisableStandard->Set(1);
		Mesh * pMesh;
		m_queue.Reset();
		while (pMesh = m_queue.Next())
		{
			//set states needed for rendering current mesh
			pMesh->VPreRender(this, view, viewProj); 

			//finally render it
			pMesh->VRender(this);

			//remove previous states
			pMesh->VPostRender(this);
		} 
		//unbind g-buffer views
		m_gbuffer.UnbindFromWriting();

		// ========================================= //
		//		Generate Shadow Maps				 //
		// ========================================= //
		VGenerateShadowMaps();

		// ========================================= //
		//		Generate velocity map				 //
		// ========================================= //
		//VGenerateVelocityMap(pCamera, this, viewProj);

		//clear meshes queue
		m_queue.Clear();
		//m_pDepthDisableStencilDisable->Set(0);

		//filter variance shadow maps
		if (m_bVarianceShadows)
		{
			for (LightList::iterator lit = m_lights.begin(); lit != m_lights.end(); lit++)
			{
				Light* pLight = (*lit);
				for (int i =0; i < 1; i++)
				{
					//FilterImage(pLight->GetVarianceShadowMapSRV(), pLight->GetVarianceShadowUAV(), pLight->GetTempSRV(), pLight->GetTempUAV(), SCREEN_WIDTH, SCREEN_HEIGHT, FT_Gaussian);
				}
			}
		}

		// ========================================= //
		//	Calculate ambient occlusion				 //
		// ========================================= //
		//CalculateAmbientOcclusion(pCamera);
		//FilterImage(m_pSSAOSRV, m_pSSAOBlurredUAV, FT_Gaussian);

		//m_pSSAOSRV->Set(5, ST_Pixel); 
		// ========================================= //
		//	Time for light pass - Render all lights  //
		// ========================================= //

		//set g-buffer for reading and set back buffer as render target
		m_gbuffer.BindForReading(0);
		//SetRenderTargetView(); 
		m_pTempRTV->Set();

		PrepareForLightPass(pCamera);

		//for (Light * pLight : m_lights)
		for (LightList::iterator lit = m_lights.begin(); lit != m_lights.end(); lit++)
		{
			Light* pLight = (*lit);

			//initialize light if it hasn't been yet 
			if (!pLight->IsInitialized())
				pLight->VInitialize(m_pLayout);

			//set states needed for rendering current light
			pLight->VPreRender(this); 

			//scissor test optimization
			pLight->VSetScissorRect(this, pCamera);

			//finally render it
//.........这里部分代码省略.........
开发者ID:jjiezheng,项目名称:Anubis-Engine,代码行数:101,代码来源:DeferredRenderer.cpp


注:本文中的Light::IsInitialized方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。