public TextureViewD3D11(DeviceD3D11 device, TextureD3D11 texture, TextureViewDescriptor descriptor) : base(texture, descriptor) { Device = device; if ((texture.Usage & TextureUsage.RenderTarget) != TextureUsage.None) { // TODO: Use TextureViewDescriptor if (!PixelFormatUtil.IsDepthStencilFormat(descriptor.Format)) { RenderTargetView = device.D3D11Device.CreateRenderTargetView(texture); } else { DepthStencilView = device.D3D11Device.CreateDepthStencilView(texture); } } }
public SamplerD3D11(DeviceD3D11 device, in SamplerDescriptor descriptor)
public SwapchainD3D11(DeviceD3D11 device, in SwapChainDescriptor descriptor)
public TextureD3D11(DeviceD3D11 device, in TextureDescriptor descriptor, ID3D11Texture2D nativeTexture, Format dxgiFormat)
public ShaderD3D11(DeviceD3D11 device, in ShaderBytecode bytecode)
public PipelineStateD3D11(DeviceD3D11 device, in RenderPipelineDescriptor descriptor)
public FramebufferD3D11(DeviceD3D11 device, FramebufferAttachment[] colorAttachments, FramebufferAttachment?depthStencilAttachment) : base(device, colorAttachments, depthStencilAttachment) { if (colorAttachments.Length > 0) { RenderTargetViews = new ID3D11RenderTargetView[colorAttachments.Length]; for (var i = 0; i < colorAttachments.Length; i++) { var attachment = colorAttachments[i]; var texture = attachment.Texture; var arraySize = texture.ArrayLayers - attachment.Slice; bool isTextureMs = (int)texture.Samples > 1; var d3dTexture = (TextureD3D11)texture; var viewDesc = new RenderTargetViewDescription { Format = d3dTexture.DXGIFormat }; switch (texture.TextureType) { case TextureType.Texture1D: if (arraySize > 1) { viewDesc.ViewDimension = RenderTargetViewDimension.Texture1DArray; viewDesc.Texture1DArray.MipSlice = attachment.MipLevel; viewDesc.Texture1DArray.FirstArraySlice = attachment.Slice; viewDesc.Texture1DArray.ArraySize = arraySize; } else { viewDesc.ViewDimension = RenderTargetViewDimension.Texture1D; viewDesc.Texture1D.MipSlice = attachment.MipLevel; } break; case TextureType.Texture2D: if (arraySize > 1) { if (isTextureMs) { viewDesc.ViewDimension = RenderTargetViewDimension.Texture2DMultisampledArray; viewDesc.Texture2DMSArray.FirstArraySlice = attachment.Slice; viewDesc.Texture2DMSArray.ArraySize = arraySize; } else { viewDesc.ViewDimension = RenderTargetViewDimension.Texture2DArray; viewDesc.Texture2DArray.MipSlice = attachment.MipLevel; viewDesc.Texture2DArray.FirstArraySlice = attachment.Slice; viewDesc.Texture2DArray.ArraySize = arraySize; } } else { if (isTextureMs) { viewDesc.ViewDimension = RenderTargetViewDimension.Texture2DMultisampled; } else { viewDesc.ViewDimension = RenderTargetViewDimension.Texture2D; viewDesc.Texture2D.MipSlice = attachment.MipLevel; } } break; case TextureType.Texture3D: // TODO: Add RenderPassAttachment.DepthPlane viewDesc.ViewDimension = RenderTargetViewDimension.Texture3D; viewDesc.Texture3D.MipSlice = attachment.MipLevel; viewDesc.Texture3D.FirstWSlice = attachment.Slice; viewDesc.Texture3D.WSize = texture.Depth; break; case TextureType.TextureCube: if (isTextureMs) { viewDesc.ViewDimension = RenderTargetViewDimension.Texture2DMultisampledArray; viewDesc.Texture2DMSArray.FirstArraySlice = attachment.Slice * 6; viewDesc.Texture2DMSArray.ArraySize = arraySize * 6; } else { viewDesc.ViewDimension = RenderTargetViewDimension.Texture2DArray; viewDesc.Texture2DArray.MipSlice = attachment.MipLevel; viewDesc.Texture2DArray.FirstArraySlice = attachment.Slice * 6; viewDesc.Texture2DArray.ArraySize = arraySize * 6; } break; } RenderTargetViews[i] = device.Device.CreateRenderTargetView(d3dTexture.Resource, viewDesc); } } else { RenderTargetViews = new ID3D11RenderTargetView[0]; } if (depthStencilAttachment != null) { var attachment = depthStencilAttachment.Value; var texture = attachment.Texture; var d3dTexture = (TextureD3D11)texture; var arraySize = texture.ArrayLayers - attachment.Slice; bool isTextureMs = (int)texture.Samples > 1; var viewDesc = new DepthStencilViewDescription { Format = d3dTexture.DXGIFormat, Flags = DepthStencilViewFlags.None }; switch (texture.TextureType) { case TextureType.Texture1D: if (arraySize > 1) { viewDesc.ViewDimension = DepthStencilViewDimension.Texture1DArray; viewDesc.Texture1DArray.MipSlice = attachment.MipLevel; viewDesc.Texture1DArray.FirstArraySlice = attachment.Slice; viewDesc.Texture1DArray.ArraySize = arraySize; } else { viewDesc.ViewDimension = DepthStencilViewDimension.Texture1D; viewDesc.Texture1D.MipSlice = attachment.MipLevel; } break; case TextureType.Texture2D: if (arraySize > 1) { if (isTextureMs) { viewDesc.ViewDimension = DepthStencilViewDimension.Texture2DMultisampledArray; viewDesc.Texture2DMSArray.FirstArraySlice = attachment.Slice; viewDesc.Texture2DMSArray.ArraySize = arraySize; } else { viewDesc.ViewDimension = DepthStencilViewDimension.Texture2DArray; viewDesc.Texture2DArray.MipSlice = attachment.MipLevel; viewDesc.Texture2DArray.FirstArraySlice = attachment.Slice; viewDesc.Texture2DArray.ArraySize = arraySize; } } else { if (isTextureMs) { viewDesc.ViewDimension = DepthStencilViewDimension.Texture2DMultisampled; } else { viewDesc.ViewDimension = DepthStencilViewDimension.Texture2D; viewDesc.Texture2D.MipSlice = attachment.MipLevel; } } break; case TextureType.TextureCube: if (isTextureMs) { viewDesc.ViewDimension = DepthStencilViewDimension.Texture2DMultisampledArray; viewDesc.Texture2DMSArray.FirstArraySlice = attachment.Slice * 6; viewDesc.Texture2DMSArray.ArraySize = arraySize * 6; } else { viewDesc.ViewDimension = DepthStencilViewDimension.Texture2DArray; viewDesc.Texture2DArray.MipSlice = attachment.MipLevel * 6; viewDesc.Texture2DArray.FirstArraySlice = attachment.Slice * 6; viewDesc.Texture2DArray.ArraySize = arraySize * 6; } break; case TextureType.Texture3D: viewDesc.ViewDimension = DepthStencilViewDimension.Texture2DArray; viewDesc.Texture2DArray.MipSlice = attachment.MipLevel; viewDesc.Texture2DArray.FirstArraySlice = attachment.Slice; viewDesc.Texture2DArray.ArraySize = texture.Depth; break; default: viewDesc.ViewDimension = DepthStencilViewDimension.Unknown; Log.Error("Invalid texture type"); break; } DepthStencilView = device.Device.CreateDepthStencilView(d3dTexture.Resource, viewDesc); } }
public BufferD3D11(DeviceD3D11 device, in BufferDescriptor descriptor, IntPtr initialData)
public CommandQueueD3D11(DeviceD3D11 device, CommandQueueType queueType) : base(device, queueType) { _context = device.D3D11Device.CreateDeferredContext(); }
public CommandQueueD3D11(DeviceD3D11 device, ID3D11DeviceContext context) : base(device, CommandQueueType.Graphics) { _context = context; _isImmediate = context.ContextType == DeviceContextType.Immediate; }