Example #1
0
 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;
     }
 }
Example #2
0
        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 {
            }
        }
Example #3
0
 /// <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);
 }