Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Beste technologie voor high performance desktop graphics

Pagina: 1
Acties:

  • NickThissen
  • Registratie: november 2007
  • Laatst online: 22:28
Ik werk aan een desktop applicatie die zogenaamde "overlay graphics" tekent. Deze graphics zijn bedoeld om bovenop een stream van een game geprojecteerd te worden. Denk bijvoorbeeld aan een Formule 1 race uitzending op tv, waar de huidige stand, rondetijden, etc op beeld komen, of de huidige stand bij een voetbal wedstrijd (simpel voorbeeld).

Momenteel is de software gebouwd in C# .NET waarbij ik WPF gebruik voor de graphics. De graphics zijn in principe WPF UI elements met allerlei effecten, deze worden vervolgens op een transparent window geplaatst en via data-binding wordt de tekst / data ingevuld.

Hoewel dit makkelijk te ontwikkelen is loop ik de laatste tijd tegen serieuze performance problemen aan. Ik wil graag gebruik maken van animaties en steeds meer effecten (denk aan pixel shader effecten zoals dropshadows en blending) en WPF lijkt dit niet goed aan te kunnen. Ik heb heel erg moeite om 60 fps animaties te halen en de animaties haperen en lopen gewoon niet mooi.

Ik heb overal gezocht voor performance tweaks maar ik vind maar weinig verbetering, en zelfs als ik een simpele versie bouw zonder ingewikkelde data-binding bijv zijn de animaties al niet smooth. Ik ben nu eigenlijk op zoek naar een betere technologie die hier beter voor geschikt is.

Kan iemand mij op de juiste weg helpen om een alternatief te vinden om de UI te tekenen, met het oog op high performance (smooth 60 fps minimaal en full-screen graphics)?

Twee dingen die ik zo kan bedenken met hun voor- en nadelen:
  • HTML / CSS / js (bijv Electron): wellicht is het een mogelijkheid om de UI volledig web-based te bouwen. Ik ben echter bang dat ik ook hier tegen performance issues aan ga lopen. Dit lijkt een groot project vooral omdat de huidige code-base in .NET is, en als het probleem niet oplost dan ga ik hier veel tijd aan verspillen. Wellicht is een mogelijkheid via Electron.NET om te communiceren tussen mijn bestaande .NET code (soort van client die de data die getoond moet worden doorstuurt) en een losse UI in Electron?
  • DirectX: in mijn zoektocht kom ik het meeste tegen om low-level DirectX te gaan gebruiken. Voor performance lijkt me dit inderdaad het beste, maar het lijkt erop dat ik dan een volledig eigen renderer moet gaan bouwen en dat is toch echt niet de bedoeling...
Er moeten toch wel betere alternatieven zijn om graphics op m'n scherm te toveren met high performance in gedachten?

Op het moment heb ik interesse in elke optie, maar een heel groot voordeel is wel als ik het kan combineren met de bestaande .NET codebase. Ik ben eigenlijk niet van plan de hele applicatie opnieuw te gaan bouwen, alleen de UI zou ideaal zijn.

Bedankt voor suggesties...

Mijn iRacing profiel


  • NickThissen
  • Registratie: november 2007
  • Laatst online: 22:28
Hmm, klinkt interessant..! Ik ken Unity alleen voor games. Heb je in gedachten om Unity enkel voor de UI te gebruiken en op een of andere manier de data binnen Unity te krijgen vanuit een andere (mijn bestaande) desktop app? Ik denk dat meteen aan communicatie via bijv sockets of lokale http server, of denk ik dan te moeilijk?

Mijn iRacing profiel


  • NickThissen
  • Registratie: november 2007
  • Laatst online: 22:28
RobIII schreef op woensdag 6 november 2019 @ 16:12:
[...]

Dat kan. Alles kan.


[...]

Ik zou dan eerder eens kijken naar gRPC (meer hier) of SignalR. Die zijn toch wel de way forward en in ieder geval stukken beter dan zelf gaan liggen klooien met rauwe sockets.
SignalR heb ik wel wat ervaring mee, helaas na wat kort testen nog niet in Unity aan de praat gekregen, maar het lijkt wel mogelijk te zijn.
Zelf zat ik ook nog aan bijvoorbeeld memory mapped files te denken, lijkt wellicht iets makkelijker in gebruik, maar ik lees dat Unity daar weinig (tot geen) support voor heeft (want zit blijkbaar niet in Mono?).
Sandor_Clegane schreef op donderdag 7 november 2019 @ 06:08:
Maak van je TV stream een Texture en de mogelijkheden zijn eindeloos. De performance zal ook prima zijn.
Wat bedoel je hier mee? Begrijp niet waar je het over hebt sorry.

Mijn iRacing profiel


  • NickThissen
  • Registratie: november 2007
  • Laatst online: 22:28
De TV stream is niet relevant. Ik maak de graphics die boven op de TV stream komen.

Mijn iRacing profiel


  • NickThissen
  • Registratie: november 2007
  • Laatst online: 22:28
Het gaat om het renderen van de overlay elementen. De TV stream hoef ik niet te renderen. De overlay elementen render ik ofwel op een transparent window welk over de TV stream heengelegd wordt, of ik render ze direct naar een Tricaster hardware via NDI waar ze vervolgens met andere streams (zoals de TV stream) gecombineerd worden.

Mijn iRacing profiel


  • NickThissen
  • Registratie: november 2007
  • Laatst online: 22:28
Sandor_Clegane schreef op zaterdag 9 november 2019 @ 09:51:
Oh, daar wordt het een stuk simpeler van. Wat voor gegevens moet je in Unity hebben?
De gegevens die mijn "client" zeg maar output. De client is C# .NET en bevat bijvoorbeeld de states van alle elementen (visible/invisible) en de data die ze moeten laten zien. Als ik die data in Unity krijg via SignalR bijv (of andere manier) dan is het daarna "simpel" (echter heb ik geen ervaring met Unity dus dat zal weer een nieuwe uitdaging worden).

Mijn iRacing profiel

Pagina: 1


Apple iPhone 11 Microsoft Xbox Series X LG OLED C9 Google Pixel 4 CES 2020 Samsung Galaxy S20 Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True