2015-12-23 5 views
0

DxScreenCapture.csSlimDX Когда игра WindowFullmode Бросьте Error

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 
      } 

Когда Game Not Running состояния прекрасно работает. но игра работает в режиме полного окна Броски Excpetion

SlimDX.Direct3D9.Direct3D9Exception 

И это внутреннее исключение:

D3DERR_INVALIDCALL: Invalid call (-2005530516) 

Excpetion Details

ответ

0

Может this answer подходит ваша проблема, а

Я предполагаю, что ваша видеокарта вероятно, не поддерживает буфер 1x1 .

Посмотрите на результат отладки. Всякий раз, когда вы получаете , вероятность InvalidCall хорошая, что есть какая-то диагностическая информация, указывающая, что вы сделали неправильно.

+0

спасибо, что попробую запустить другой компьютер .. тогда .. как решить эту проблему? – konachan

Смежные вопросы