public static D3D.Texture2D CreateSurface(this D3D.Device device, int width, int height, DXGI.SampleDescription sampleDescription, out D3D.RenderTargetView renderTarget) { var desc = new D3D.Texture2DDescription { Width = width, Height = height, MipLevels = 1, ArraySize = 1, Format = DXGI.Format.R8G8B8A8_UNorm, SampleDescription = sampleDescription, Usage = D3D.ResourceUsage.Default, BindFlags = D3D.BindFlags.RenderTarget | D3D.BindFlags.ShaderResource, CpuAccessFlags = D3D.CpuAccessFlags.None, OptionFlags = D3D.ResourceOptionFlags.Shared, }; var surface = new D3D.Texture2D(device, desc); var targetDesc = new D3D.RenderTargetViewDescription { Format = desc.Format, Dimension = desc.SampleDescription.Count == 1 ? D3D.RenderTargetViewDimension.Texture2D : D3D.RenderTargetViewDimension.Texture2DMultisampled, }; renderTarget = new D3D.RenderTargetView(device, surface, targetDesc); return(surface); }
void InitializeSharedBackBuffer(IntPtr resourcePtr) { // convert native pointer to DXGI shared resource Resource resource = CppObject.FromPointer <Resource>(resourcePtr).QueryInterface <Resource>(); // convert shared resource to D3D11 Texture D3D11.Texture2D sharedBackbuffer = device.OpenSharedResource <D3D11.Texture2D>(resource.SharedHandle); // release reference resource.Dispose(); // use D3D11 Texture as render target D3D11.RenderTargetViewDescription desc = new D3D11.RenderTargetViewDescription(); desc.Format = Format.B8G8R8A8_UNorm; desc.Dimension = D3D11.RenderTargetViewDimension.Texture2D; desc.Texture2D.MipSlice = 0; renderTargetView = new D3D11.RenderTargetView(device, sharedBackbuffer, desc); deviceContext.OutputMerger.SetRenderTargets(renderTargetView); // release reference sharedBackbuffer.Dispose(); // setup viewport Size size = Utils.WpfSizeToPixels(ImageGrid); deviceContext.Rasterizer.SetViewport(new Viewport(0, 0, (int)size.Width, (int)size.Height, 0.0f, 1.0f)); }
/// <summary> /// Function to perform initialization of the view. /// </summary> protected override void OnInitialize() { D3D.RenderTargetViewDescription desc = default(D3D.RenderTargetViewDescription); desc.Dimension = D3D.RenderTargetViewDimension.Unknown; switch (Resource.ResourceType) { case ResourceType.Texture1D: desc = GetDesc1D(); break; case ResourceType.Texture2D: desc = GetDesc2D(); break; case ResourceType.Texture3D: desc = GetDesc3D(); break; } if (desc.Dimension == D3D.RenderTargetViewDimension.Unknown) { throw new GorgonException(GorgonResult.CannotCreate, Resources.GORGFX_VIEW_CANNOT_BIND_UNKNOWN_RESOURCE); } D3DView = new D3D.RenderTargetView(Resource.Graphics.D3DDevice, Resource.D3DResource, desc) { DebugName = string.Format("{0} '{1}' Render Target View", Resource.ResourceType, Resource.Name) }; }
private D3D11.RenderTargetView[] CreateRTVArray(D3D11.Device device, Format format, D3D11.Texture2D texture, int mipSlice) { var rtvDesc = new D3D11.RenderTargetViewDescription(); rtvDesc.Format = format; rtvDesc.Texture2D.MipSlice = mipSlice; rtvDesc.Dimension = D3D11.RenderTargetViewDimension.Texture2DArray; rtvDesc.Texture2DArray.FirstArraySlice = 0; //rtvDesc.Texture2DArray.ArraySize = 6; //D3D11.RenderTargetView rtv = new D3D11.RenderTargetView(device, texture, rtvDesc); rtvDesc.Texture2DArray.ArraySize = 1; D3D11.RenderTargetView[] faceRTVs = new D3D11.RenderTargetView[6]; for (int i = 0; i < 6; ++i) { rtvDesc.Texture2DArray.FirstArraySlice = i; faceRTVs[i] = new D3D11.RenderTargetView(device, texture, rtvDesc); } return(faceRTVs); }
/// <summary> /// Function to perform initialization of the view. /// </summary> protected override void OnInitialize() { if (Resource.ResourceType != ResourceType.Buffer) { throw new GorgonException(GorgonResult.CannotCreate, Resources.GORGFX_VIEW_CANNOT_BIND_UNKNOWN_RESOURCE); } var desc = new D3D.RenderTargetViewDescription { Dimension = D3D.RenderTargetViewDimension.Buffer, Format = (GI.Format)Format, Buffer = new D3D.RenderTargetViewDescription.BufferResource { FirstElement = FirstElement, ElementCount = ElementCount } }; D3DView = new D3D.RenderTargetView(Resource.Graphics.D3DDevice, Resource.D3DResource, desc) { DebugName = string.Format("{0} '{1}' Render Target View", Resource.ResourceType, Resource.Name) }; }
public static D3D.Texture2D CreateSurface(this D3D.Device device, int width, int height, DXGI.SampleDescription sampleDescription, out D3D.RenderTargetView renderTarget) { var desc = new D3D.Texture2DDescription { Width = width, Height = height, MipLevels = 1, ArraySize = 1, Format = DXGI.Format.R8G8B8A8_UNorm, SampleDescription = sampleDescription, Usage = D3D.ResourceUsage.Default, BindFlags = D3D.BindFlags.RenderTarget | D3D.BindFlags.ShaderResource, CpuAccessFlags = D3D.CpuAccessFlags.None, OptionFlags = D3D.ResourceOptionFlags.Shared, }; var surface = new D3D.Texture2D(device, desc); var targetDesc = new D3D.RenderTargetViewDescription { Format = desc.Format, Dimension = desc.SampleDescription.Count == 1 ? D3D.RenderTargetViewDimension.Texture2D : D3D.RenderTargetViewDimension.Texture2DMultisampled, }; renderTarget = new D3D.RenderTargetView(device, surface, targetDesc); return surface; }