LVEDRENDERINGENGINE_API void __stdcall LvEd_Begin(ObjectGUID renderSurface, float viewxform[], float projxform[]) { ErrorHandler::ClearError(); s_engineData->pRenderSurface = reinterpret_cast<RenderSurface*>(renderSurface); RenderContext* rc = RenderContext::Inst(); ExpFog fog; fog.enabled = 0; if(s_engineData->GameLevel) { fog = s_engineData->GameLevel->GetFog(); } rc->SetFog(fog); // set render target and depth buffer. rc->SetContext(gD3D11->GetImmediateContext()); ID3D11DeviceContext* d3dcontext = rc->Context(); ID3D11RenderTargetView* rt[1] = {s_engineData->pRenderSurface->GetRenderTargetView()}; // set render target and depth buffer. d3dcontext->OMSetRenderTargets(1,rt,s_engineData->pRenderSurface->GetDepthStencilView()); // Setup the viewport D3D11_VIEWPORT vp = s_engineData->pRenderSurface->GetViewPort(); d3dcontext->RSSetViewports( 1, &vp ); float4 vf(vp.Width,vp.Height,vp.TopLeftX,vp.TopLeftY); rc->SetViewPort(vf); Matrix view(viewxform); rc->Cam().SetViewProj(view, Matrix(projxform)); d3dcontext->RSSetState(NULL); d3dcontext->OMSetDepthStencilState(NULL,0); d3dcontext->OMSetBlendState( NULL, NULL, 0xFFFFFFFF ); // setup default lighting. DirLight& light = *LightingState::Inst()->DefaultDirLight(); light.ambient = float3(0.05f,0.06f,0.07f); light.diffuse = float3(250.0f/255.0f, 245.0f/255.0f, 240.0f/255.0f); light.specular = light.diffuse; // float3(0.4f,0.4f,0.4f); light.dir = float3(0.258819073f, -0.965925932f, 0.0f); d3dcontext->ClearDepthStencilView( s_engineData->pRenderSurface->GetDepthStencilView(), D3D11_CLEAR_DEPTH, 1.0f, 0 ); if(s_engineData->GameLevel->m_activeskyeDome && s_engineData->GameLevel->m_activeskyeDome->GetVisible()) { s_engineData->GameLevel->m_activeskyeDome->Render(RenderContext::Inst()); } else { float4 color = s_engineData->pRenderSurface->GetBkgColor(); d3dcontext->ClearRenderTargetView( s_engineData->pRenderSurface->GetRenderTargetView(), &color.x ); } //Level editor may perform some rendering before LvEd_RenderGame get called. s_engineData->basicRenderer->Begin(RenderContext::Inst()->Context(), s_engineData->pRenderSurface, RenderContext::Inst()->Cam().View(), RenderContext::Inst()->Cam().Proj()); }