2015-07-21 13 views
8

Chciałbym narysować ciężką grafikę użytkowania w najszybszy sposób. Jeśli używam standardowych wywołań graficznych C# (es.graphics.drawline), czy robię to dobrze? Czy mogę używać różnych bibliotek?Czy C# natywnie korzysta z GPU dla grafiki?

+0

Dlaczego to się stało, pytanie nie jest głupie? –

+0

Czy używasz WinForm lub WPF? – Pazi01

+1

@YvesDaoust wydaje się mieć dużo słabych wyników w głosowaniu bez uzasadnionego powodu, ale jeśli przeczytasz pierwszy komentarz do tego pytania, zobaczysz, że niektórzy ludzie są po prostu "tacy jak oni!" ... http://meta.stackexchange.com/questions/135/encouraging-people-to-explain-downvotes –

Odpowiedz

6

Graphics.DrawLine jest połączeniem GDI +. Jeśli używasz Windows Forms i robisz rysunek przy użyciu klas System.Drawing, używasz GDI +, który nie jest przyspieszany sprzętowo. Aby uzyskać akcelerację sprzętową, należy użyć WPF zamiast WinForm lub rysować przy pomocy Direct3D/Direct2D. Te dwa ostatnie (Direct3D/Direct2D) są oparte na COM, więc potrzebujesz opakowania .NET. Microsoft opakował Direct3D dla .NET z Managed DirectX, a następnie XNA. Oba (jak sądzę) są teraz przestarzałe. Istnieje również third-party wrappers dla bibliotek DirectX, które są bardziej aktualne.

Edytuj: Właśnie dowiedziałem się z komentarza @ HansPassant, że GDI + ma przyspieszone 2D. Myślałem, że to dotyczy tylko GDI (w przeciwieństwie do GDI +), ponieważ GDI + obsługuje takie rzeczy jak antyaliasing, który (jak rozumiem), sprzęt 2D nie zrobił. Ale najwyraźniej się myliłem.

+1

Chciałem tylko wspomnieć, że 'MonoGame' owija DirectX lub OpenGL w tym samym API, którego używa XNA, ale nadal jest aktywnie konserwowane, –

+0

Oprócz tego, bardzo polecam SharpDX jako zarządzane opakowanie wokół DirectX. – Kyle