Form C# e DirectX

di il
13 risposte

Form C# e DirectX

È possibile in un form C# visualizzare una scena con le directX? Non in WPF ma in Windows Form.

13 Risposte

  • Re: Form C# e DirectX

    Si, quando crei il 'Device' gli passi come handle l' handle del form. Ad esempio:
    
    PresentParameters params = new PresentParameters();
    params.Windowed = true;
    params.SwapEffect = SwapEffect.Discard;
    params.EnableAutoDepthStencil = true;
    params.AutoDepthStencilFormat = DepthFormat.D16;
    
    IntPtr handle = myForm.Handle;
    Device device = new Device(0, DeviceType.Hardware, handle,
                CreateFlags.SoftwareVertexProcessing, params);
    
  • Re: Form C# e DirectX

    Ok, e se volessi mostrare la scena in un pannello gli passo l"handle del pannello, giusto?
  • Re: Form C# e DirectX

    Giusto.
  • Re: Form C# e DirectX

    E quale è il posto giusto per richiamare il render?
  • Re: Form C# e DirectX

    Se la scena è fissa basta che lo richiami nel paint del form.
  • Re: Form C# e DirectX

    E se la scena è in movimento uso un timer, giusto?
  • Re: Form C# e DirectX

    Si, però puoi usare anche un altro sistema. Devi modificare program.cs in questo modo:
    
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
                
        //Application.Run(new Form1());
    
        try
        {
            Form1 form = new Form1();
            form.Show();
            form.Run();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    
    e poi aggiungere al form:
    
       public void Run()
        {
            while (Created)
            {
                if ( (WindowState != FormWindowState.Minimized) && Visible)
                    m_3d.Render();
    
                Application.DoEvents();
            }
        }
    
    In pratica è un ciclo bucato dal DoEvents.
  • Re: Form C# e DirectX

    Scusa ma non ho capito il 'Created'.
  • Re: Form C# e DirectX

    Created viene messo a true quando il form viene creato e a false quando viene chiuso.
  • Re: Form C# e DirectX

    Su MSDN non c'è scritto che viene messo a false quando viene chiuso ... !?
  • Re: Form C# e DirectX

    Nessuno è perfetto!
  • Re: Form C# e DirectX

    Ultima domanda, ma li posso creare due device ?
  • Re: Form C# e DirectX

    Si, non c' è problema, puoi avere due pannelli ognuno con la propria scena, oppure puoi fare viste diverse della stssa scena da differenti angolazioni.
Devi accedere o registrarti per scrivere nel forum
13 risposte