2015-07-21 9 views
8

Mi piacerebbe disegnare grafica di utilizzo pesante nel modo più veloce. Se utilizzo callback grafici C# standard (es.graphics.drawline), lo sto facendo bene? O devo usare diverse librerie?C# usa nativamente GPU per la grafica?

+0

Perché questo downgrade, la domanda non è sciocca? –

+0

Stai usando winforms o wpf? – Pazi01

+1

@YvesDaoust sembra essere un bel po 'giù votando senza una ragione giustificabile, ma se leggi il primo commento a questa domanda, puoi vedere che alcune persone sono semplicemente "così!" ... http://meta.stackexchange.com/questions/135/encouraging-people-to-explain-downvotes –

risposta

6

Graphics.DrawLine è una chiamata GDI +. Se si utilizza Windows Form e si esegue il disegno con le classi System.Drawing, si utilizza GDI +, che non è a velocità di accelerazione hardware. Per ottenere l'accelerazione hardware, è necessario utilizzare WPF al posto di WinForms o disegnare con Direct3D/Direct2D. Gli ultimi due (Direct3D/Direct2D) sono basati su COM, quindi avrai bisogno di un wrapper .NET. Microsoft ha integrato Direct3D per .NET con Managed DirectX seguito da XNA. Entrambi (credo) sono ora deprecati. Ci sono anche third-party wrappers per le librerie DirectX che sono più aggiornate.

Modifica: Ho appena appreso dal commento di @ HansPassant che GDI + è accelerato in 2D. Ho pensato che si applicava solo a GDI (al contrario di GDI +) perché GDI + gestisce cose come l'antialiasing che (come ho capito) l'hardware 2D non funzionava. Ma a quanto pare ho sbagliato.

+1

Volevo solo ricordare che 'MonoGame' esegue il wrapping di DirectX o OpenGL nella stessa API che XNA utilizza, ma è ancora attivamente mantenuto, –

+0

In aggiunta a questo, consiglio vivamente SharpDX come un wrapper gestito su DirectX. – Kyle