private DrawSystem(IntPtr hWnd, Device device, SwapChain swapChain, HmdDevice hmd, bool bStereoRendering, int multiThreadCount) { m_d3d = new D3DData { Device = device, SwapChain = swapChain, WindowHandle = hWnd, }; m_debug = new DrawDebugCtrl(); m_repository = new DrawResourceRepository(m_d3d); m_passCtrl = new DrawPassCtrl(m_d3d, m_repository, hmd, bStereoRendering, multiThreadCount); m_bStereoRendering = bStereoRendering; m_hmd = hmd; if (m_hmd != null) { m_hmd.Setup(m_d3d, m_repository.GetDefaultRenderTarget()); } m_drawBuffer = new DrawBuffer(); }
public StereoDrawContext(DrawSystem.D3DData d3d, DrawResourceRepository repository, HmdDevice hmd, DrawContext context) { m_d3d = d3d; m_repository = repository; m_context = context; m_hmd = hmd; // Create render targets for each HMD eye m_textureSets = new HmdSwapTextureSet[2]; var eyeResolution = hmd.EyeResolution; var resNames = new string[] { "OVRLeftEye", "OVRRightEye" }; for (int index = 0; index < 2; ++index) { var textureSet = m_hmd.CreateSwapTextureSet(d3d.Device, eyeResolution.Width, eyeResolution.Height); m_textureSets[index] = textureSet; var renderTargetList = RenderTarget.FromSwapTextureSet(m_d3d, resNames[index], textureSet); foreach (var renderTarget in renderTargetList) { m_repository.AddResource(renderTarget); } } // Create temporaly render target var tmpRt = RenderTarget.CreateRenderTarget(d3d, "Temp", eyeResolution.Width, eyeResolution.Height); m_repository.AddResource(tmpRt); // Create texture for Mirroring Size defaultRenderTargetSize = m_repository.GetDefaultRenderTarget().Resolution; m_mirrorTexture = m_hmd.CreateMirrorTexture(m_d3d.Device, defaultRenderTargetSize.Width, defaultRenderTargetSize.Height); m_commandListTable = new List <CommandList>(); }