Hoe FPS-teller in Linux-games te tonen

How Show Fps Counter Linux Games



Linux-gaming kreeg een grote duw toen Valve aangekondigd Linux-ondersteuning voor Steam-client en hun games in 2012. Sindsdien hebben veel AAA- en indie-games hun weg gevonden naar Linux en is het aantal gebruikers dat gamet op Linux aanzienlijk toegenomen.

Met de groei van Linux-gaming gingen veel gebruikers op zoek naar goede manieren om frames per seconde (FPS) weer te geven als een overlay op het draaien van Linux-games. Een FPS-teller helpt bij het aanpassen van de prestaties van actieve games en bij het benchmarken van het algehele vermogen van een pc om games met verschillende resoluties te spelen.







Helaas is er geen enkele uniforme manier om de FPS-teller in alle Linux-games weer te geven die onafhankelijk is van de onderliggende technologieën waarop een game draait. Verschillende renderers en API's hebben verschillende manieren om de FPS-teller weer te geven. In deze gids worden verschillende methoden uitgelegd die kunnen worden gebruikt om een ​​FPS-teller in Linux-games weer te geven.



Compatibiliteit Opmerkingen:



  • Werkt met OpenGL- en Vulkan-spellen.
  • Werkt met native games en Proton Proton is een compatibiliteitslaag die is opgenomen in Steam voor het uitvoeren van Windows-games in Linux. Het is gebaseerd op Wijn , DXVK en D9VK open source-projecten met extra patches en nieuwe functies toegevoegd door Valve/Wine-ontwikkelaars.
  • Werkt met games die zijn gekocht op Steam of games van derden die door de gebruiker aan Steam zijn toegevoegd.
  • Getest werken met geïntegreerde Intel en AMD grafische kaarten.
  • Niet getest met NVIDIA-kaarten omdat ik geen NVIDIA-kaart bezit. Maar volgens Steam-communityforums werkt de ingebouwde fps-teller prima op NVIDIA-kaarten.

Steam voor Linux bevat een ingebouwde FPS-teller die kan worden omgeschakeld vanuit de instellingen. Dit is waarschijnlijk een van de meest compatibele opties die met de meeste Linux-games werkt. Ik had echter wat problemen met Unity-engine-games die de ingebouwde FPS-teller niet weergeven. Deze optie vereist ook dat je een Steam-account en Steam-client op je systeem hebt geïnstalleerd.







Met Steam kun je zelfs games die niet bij Steam zijn gekocht toevoegen aan de gamebibliotheek en de ingebouwde FPS-teller werkt ook in deze games. Om een ​​niet-steamgame toe te voegen, klik je op Games en vervolgens op Voeg een niet-steamgame toe aan mijn bibliotheek, zoals weergegeven in de onderstaande schermafbeelding:

Blader naar de locatie van je gamebestanden en schakel vervolgens de optie Alle bestanden onderaan in.

Selecteer het uitvoerbare spel en klik vervolgens op GESELECTEERDE PROGRAMMA'S TOEVOEGEN zoals weergegeven in de onderstaande schermafbeelding:

Als je een game met alleen Windows wilt spelen in de Proton-compatibiliteitslaag van Steam, moet je een extra optie inschakelen in game-eigenschappen.

Ik heb het uitvoerbare SuperTuxKart-bestand toegevoegd aan de Steam-bibliotheek en de FPS-teller werkt hier ook prima. Merk op dat games van derden die aan de Steam-bibliotheek zijn toegevoegd, geen spaties in hun bestandslocatiepad mogen hebben.

Methode 2 (LibGL)

Compatibiliteit Opmerkingen:

  • Werkt alleen met OpenGL-spellen.
  • Werkt met native games en Wine-games.
  • Getest werken met geïntegreerde Intel en AMD grafische kaarten met open source drivers.
  • Niet getest met NVIDIA-kaarten omdat ik geen NVIDIA-kaart bezit. Het zou echter moeten werken met NVIDIA GPU's met open source-stuurprogramma's.

LibGL is een Mesa-bibliotheek die OpenGL API's blootstelt aan apps en games en is standaard opgenomen in bijna alle Linux-distributies. Met behulp van deze bibliotheek en een ander pakket dat een HUD op zichtbare weergave maakt, zullen we een FPS-teller laten zien in Linux-games. Voer de volgende opdracht uit om het vereiste pakket te installeren:

sudogeschiktinstallerenxosd-bin

Om de FPS-teller in native Linux-games weer te geven, gebruik je de onderstaande opdracht nadat je /path/to/executable hebt vervangen door het uitvoerbare pad van je eigen game. U kunt meer weten over alle osd-cat-opties van hier .

LIBGL_SHOW_FPS=1 /pad/naar/uitvoerbaar 2>&1 |
tee /dev/stderr | sed -u -n -e '/^libGL: FPS = /{s/.* ([^ ]*)= /1/;p}' |
osd_cat --lines=1 --color=yellow --outline=1 --pos=top --align=links

Om de FPS-teller weer te geven in Windows-games die op Linux draaien via Wine, gebruik je de onderstaande opdracht nadat je /path/to/executable hebt vervangen door het uitvoerbare pad van je eigen game.

WINEDEBUG=fps wijn /pad/naar/uitvoerbaar 2>&1 | tee /dev/stderr |
sed -u -n -e '/trace/ s/.*ongeveer //p' | osd_cat --lines=1 --color=geel
--outline=1 --pos=top --align=center

Als u een Wine-prefix gebruikt, zou de opdracht zijn (vervang /path/to/wine/prefix en /path/to/executable):

WINEDEBUG=fps WINEPREFIX=/pad/naar/wijn/voorvoegsel wijn
/pad/naar/uitvoerbaar 2>&1 | tee /dev/stderr | sed -u -n -e '/trace/ s/
.*ongeveer //p' | osd_cat --lines=1 --color=geel --outline=1 --pos=top
--uitlijnen=midden

Deze methode heeft een kleine beperking. Hoewel u de osd-cat HUD kunt aanpassen, blijft deze op een vaste positie op het weergavegebied staan ​​zonder rekening te houden met de geometrie van het spelvenster. In de bovenstaande schermafbeelding wordt de FPS-teller boven het spelvenster weergegeven, niet erin. Games die op volledig scherm worden uitgevoerd, worden hierdoor niet beïnvloed.

Methode 3 (Gallium3D)

  • Werkt alleen met OpenGL-spellen.
  • Werkt met native games en Wine-games.
  • Getest werken met AMD grafische kaarten met open source drivers.
  • Gallium3D-ondersteuning voor Intel is aan de gang, dus werkt nog niet.
  • Niet getest met NVIDIA-kaarten omdat ik geen NVIDIA-kaart bezit. Aangezien het open source-stuurprogramma van NVIDIA Gallium3D is ingeschakeld, zou deze methode moeten werken.
  • Gallium3D is een API die het gemakkelijker maakt om stuurprogramma's voor grafische kaarten te ontwikkelen door een reeks standaardbibliotheken en interfaces te bieden. AMD en NVIDIA open source drivers zijn gebouwd op Gallium3D.

    Om de FPS-teller in native Linux-games weer te geven, gebruik je de onderstaande opdracht nadat je /path/to/executable hebt vervangen door het uitvoerbare pad van je eigen game:

    GALLIUM_HUD='eenvoudig, fps' /pad/tot/uitvoerbaar

    Om de FPS-teller weer te geven in Windows-games die op Linux draaien via Wine, gebruik je de onderstaande opdracht nadat je /path/to/executable hebt vervangen door het uitvoerbare pad van je eigen game.

    GALLIUM_HUD='eenvoudig, fps' wijn /pad/tot/uitvoerbaar

    Als u een Wine-prefix gebruikt, zou de opdracht zijn (vervang /path/to/wine/prefix en /path/to/executable):

    GALLIUM_HUD='simple,fps' WINEPREFIX=/pad/naar/wijn/voorvoegsel wijn /pad/naar/uitvoerbaar

    In de bovenstaande schermafbeelding gebruik ik een aangepaste GALLIUM_HUD-variabele die ook GPU- en CPU-temperaturen laat zien. Deze aangepaste opdracht is verschillend voor verschillende pc-configuraties. Voer de volgende opdrachten uit om meer te lezen over alle aanpassingsopties:

    sudogeschiktinstallerentable-utils
    GALLIUM_HUD=helpenglxgears

    Ter referentie, hier is de aangepaste opdracht die ik in de bovenstaande schermafbeeldingen heb gebruikt:

    GALLIUM_HUD='eenvoudig,fps;sensors_temp_cu-amdgpu-pci-1c00.temp1;
    sensors_temp_cu-k10temp-pci-00c3.Tdie '
    /pad/tot/uitvoerbaar

    Methode 4 (Vulkan-overlaytabel)

    Compatibiliteit Opmerkingen:

    • Werkt alleen met Vulkan-spellen.
    • Werkt alleen met Ubuntu 19.10+ en andere distributies met de nieuwste Mesa met vulkan overlay-laag.
    • Werkt met native games en Steam Proton-games die worden uitgevoerd met DXVK/D9VK-ondersteuning.
    • Werkt met Wine-games die worden uitgevoerd met DXVK/D9VK-bibliotheken.
    • Werkstatus onbekend voor Wine's Vkd3d . Aangezien dit een Vulkan-laag is, zou deze met alles moeten werken, zolang Mesa is gebouwd met ondersteuning voor VK_LAYER_MESA_overlay.
    • Getest werken met AMD grafische kaarten en geïntegreerde Intel-kaarten met open source-stuurprogramma's.
    • Niet getest met NVIDIA-kaarten omdat ik geen NVIDIA-kaart bezit. Aangezien dit een Vulkan-laag is, zou deze met alles moeten werken, zolang Mesa is gebouwd met ondersteuning voor VK_LAYER_MESA_overlay.

    Vulkan overlay-tabel is een nieuwe Vulkan-laag die is toegevoegd aan recente builds van Mesa. Het toont verschillende informatie over de actieve toepassing met behulp van een overlay.

    Om de FPS-teller in native Linux-games weer te geven, gebruik je de onderstaande opdracht nadat je /path/to/executable hebt vervangen door het uitvoerbare pad van je eigen game:

    VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=positie=linksboven /pad/naar/uitvoerbaar

    Om de FPS-teller weer te geven in Windows-games die op Linux worden uitgevoerd via Wine en DXVK, gebruik je de onderstaande opdracht nadat je /path/to/executable hebt vervangen door het uitvoerbare pad van je eigen game:

    VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=positie=wijn linksboven /pad/naar/uitvoerbaar

    Als u een Wine-prefix gebruikt, zou de opdracht zijn (vervang /path/to/wine/prefix en /path/to/executable):

    VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay
    VK_LAYER_MESA_OVERLAY_CONFIG=positie=linksboven
    WINEPREFIX=/pad/naar/wijn/voorvoegsel wijn /pad/naar/uitvoerbaar

    Methode 5 (DXVK-HUD)

    Compatibiliteit Opmerkingen:

    • Werkt alleen met Vulkan-spellen die worden uitgevoerd in Wine en Proton met DXVK/D9VK-bibliotheken.
    • Getest werken met AMD en geïntegreerde Intel grafische kaarten met open source drivers.
    • Niet getest met NVIDIA-kaarten omdat ik geen NVIDIA-kaart bezit. Broncode heeft commits die NVIDIA-ondersteuning vermelden, dus deze methode zou moeten werken.

    DXVK biedt een op Vulkan gebaseerde vertaallaag voor D3D10 en D3D11 waarmee gebruikers Direct3D 10/11-games op Linux kunnen spelen. D9VK gebruikt DXVK-backend om een ​​extra Direct3D9-implementatie te bieden die kan worden gebruikt om games te spelen die op D3D9 zijn gebouwd.

    Om de FPS-teller weer te geven in DXVK-games die op Linux draaien via Wine, gebruik je de onderstaande opdracht nadat je /path/to/executable hebt vervangen door je eigen uitvoerbare pad voor de game:

    DXVK_HUD= fpswijn /pad/tot/uitvoerbaar

    Als u een Wine-prefix gebruikt, zou de opdracht zijn (vervang /path/to/wine/prefix en /path/to/executable):

    DXVK_HUD= fpsWIJNPREFIX=/pad/tot/wijn/voorvoegselwijn /pad/tot/uitvoerbaar

    Dit markeert het einde van dit bericht. Tot slot zou ik nog een klein detail willen noemen dat hierboven is weggelaten. Alle niet-stoommethoden die hierboven zijn uitgelegd, werken ook voor Steam-spellen. U moet /path/to/executable of wine /path/to/executable of WINEPREFIX=/path/to/wine/prefix wine /path/to/executable vervangen door %command% in dezelfde commando's die hierboven zijn gebruikt. Voeg gewoon de volledige opdracht toe om opties in game-eigenschappen in de Steam-app te starten, zoals weergegeven in de onderstaande schermafbeelding: