public static void CreateDDSTextureFromStream(Device d3dDevice, Stream stream, out Resource texture, out ShaderResourceView textureView, DeviceContext deviceContext = null) { if (stream.CanRead) { using (var dds = new DirectDrawSurface(stream)) { CreateDDSTextureFromMemory(d3dDevice, dds, out texture, out textureView); } } else { texture = null; textureView = null; } }
public static void CreateDDSTextureFromMemoryEx(Device d3dDevice, DirectDrawSurface dds, int maxsize, ResourceUsage usage, BindFlags bindFlags, CpuAccessFlags cpuAccessFlags, ResourceOptionFlags miscFlags, bool forceSRGB, out Resource texture, out ShaderResourceView textureView, out DDS_AlphaMode alphaMode) { texture = null; textureView = null; alphaMode = DDS_AlphaMode.Unknown; if (d3dDevice == null) { throw new ArgumentNullException("d3dDevice"); } if (dds == null && !dds.Header.HasValue) { throw new ArgumentNullException("dds"); } try { var result = CreateTextureFromDDS(d3dDevice, null, dds.Header.Value, dds.HeaderDXT10, dds.Data, dds.DataLength, maxsize, usage, bindFlags, cpuAccessFlags, miscFlags, forceSRGB, out texture, out textureView); if (result.Success) { texture.DebugName = "DDSTextureLoader"; textureView.DebugName = "DDSTextureLoader"; alphaMode = dds.AlphaMode; } } finally { } }
/// <summary> /// 從記憶體建立DDS Texture /// </summary> /// <param name="d3dDevice"></param> /// <param name="dds"></param> /// <param name="texture"></param> /// <param name="textureView"></param> public static void CreateDDSTextureFromMemory(Device d3dDevice, DirectDrawSurface dds, out Resource texture, out ShaderResourceView textureView) { CreateDDSTextureFromMemoryEx(d3dDevice, dds, 0, ResourceUsage.Default, BindFlags.ShaderResource, CpuAccessFlags.None, ResourceOptionFlags.None, false, out texture, out textureView, out var alphaMode); }