【问题标题】:SlimDX When Game WindowFullmode Throw ErrorSlimDX 当 Game WindowFullmode 抛出错误
【发布时间】:2015-12-23 04:33:49
【问题描述】:

DxScreenCapture.cs

 public class DxScreenCapture
    {
        Device d;

        public DxScreenCapture()
        {
            PresentParameters present_params = new PresentParameters();
            present_params.Windowed = true;
            present_params.SwapEffect = SwapEffect.Discard;
            d = new Device(new Direct3D(), 0, DeviceType.Hardware, IntPtr.Zero, CreateFlags.SoftwareVertexProcessing, present_params);
        }

        public Surface CaptureScreen()
        {
            Surface s = Surface.CreateOffscreenPlain(d, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, Format.A8R8G8B8, Pool.Scratch);
            d.GetFrontBufferData(0, s);
            return s;
        }
    }

捕获图像并序列化到发送服务器

 using (Surface s = cap.CaptureScreen())
            {

                BinaryFormatter bf = new BinaryFormatter();
               Bitmap bitmap = new Bitmap(SlimDX.Direct3D9.Surface.ToStream(s, SlimDX.Direct3D9.ImageFileFormat.Bmp));

                ns = client.GetStream();
                bf.Serialize(ns, bitmap); // ns = NetworkStream
            }

当游戏未运行状态运行良好时。 但游戏在全窗口模式下运行 抛出异常

SlimDX.Direct3D9.Direct3D9Exception

这是内部异常:

D3DERR_INVALIDCALL: Invalid call (-2005530516)

Excpetion Details

【问题讨论】:

    标签: c# slimdx


    【解决方案1】:

    也许this answer 也适合您的问题

    我猜你的显卡可能不支持 1x1 后备缓冲区。

    查看调试运行时的输出。每当你得到一个 有某种诊断的 InvalidCall 机会很大 那里的信息表明你做错了什么。

    【讨论】:

    • 谢谢你,我会尝试运行另一台计算机.. 然后.. 如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多