示例#1
0
        private static CreateTextureIssueWorkaround InitializeWorkaround()
        {
            try
            {
                D3DX11SaveTextureToMemory saveMethod = (D3DX11SaveTextureToMemory)Delegate.CreateDelegate(
                    typeof(D3DX11SaveTextureToMemory),
                    null,
                    typeof(Resource).Assembly.GetType("SharpDX.Direct3D11.D3DX11").GetMethod("SaveTextureToMemory", BindingFlags.Static | BindingFlags.NonPublic));

                return((c, t, f) =>
                {
                    Blob buff;
                    saveMethod(c, t, f, out buff, 0);
                    buff.Dispose();
                });
            }
            catch
            {
                return((c, t, f) =>
                {
                    using (MemoryStream ms = new MemoryStream(32 * 1024))
                        Resource.ToStream(c, t, f, ms);
                });
            }
        }