FPS valt in de modus Volledig scherm maar goed in venster/applet?

Ik heb aan een game-engine gewerkt. Het kan games maken in de venstermodus, volledig schermmodus of appletmodus. De FPS is prima in de appletmodus en de venstermodus (geeft me 90 tot 120 fps met maximaal 3000 objecten op de kaart), maar in de modus voor volledig scherm daalt de snelheid naar 25-50 fps. Dit is de vensterklasse.

https://code.google.com/p/game-engine-for-java/source/browse/src/com/gej/core/GWindow.java

Kon niet vinden waar het probleem zit. En meer dan rennen op Windows is prima, maar op Ubuntu heeft dit probleem. Het weergeven van de weergavemodi gaf me de bitdiepte -1 Hier is de complete lijst op mijn machine.

1600     900     -1
1440     900     -1
1440     900     -1
1280     800     -1
1280     800     -1
1152     864     -1
1024     768     -1
1024     768     -1
1024     768     -1
832      624     -1
800      600     -1
800      600     -1
800      600     -1
800      600     -1
640      480     -1
640      480     -1
640      480     -1
640      480     -1
720      400     -1

Ik heb ondervonden dat bitdiepte -1 staat voor BIT_DEPTH_MULTI, een constante in de klasse DisplayMode. Dus het instellen van de modus verhoogde de fps naar 60-70 fps, maar nog steeds niet zo veel als in de venstermodus.

2
Het uitrekken van het scherm (met behulp van de venstermodus als volledig scherm) geeft me dezelfde fps als de modus voor volledig scherm (de afbeeldingen moeten worden geschaald)
toegevoegd de auteur Sri Harsha Chilakapati, de bron
@ColeJohnson Ik teken alleen de zichtbare objecten op de kaart. Hoe kan dat dan zijn ?? hier is mijn kaartklasse. code. google.com/p/game-engine-for-java/source/browse/src/com‌/& hellip;
toegevoegd de auteur Sri Harsha Chilakapati, de bron
toegevoegd de auteur Sri Harsha Chilakapati, de bron
Ik heb alle afbeeldingen in de klasse Game al geschaald. Bijgewerkte bron zie nu
toegevoegd de auteur Sri Harsha Chilakapati, de bron
Dan is het probleem dat er meer moet worden getrokken.
toegevoegd de auteur Cole Johnson, de bron
Niet in je code.
toegevoegd de auteur Cole Johnson, de bron
U zei, als het venster hetzelfde formaat heeft als het scherm, blijft het achter. Dat betekent dat je kaart niet zoveel objecten kan tekenen. Alleen tekenen wat gezien kan worden is heel slim. Maar tenzij u uw scherm buffer, is er niet veel te doen.
toegevoegd de auteur Cole Johnson, de bron
Wat gebeurt er als het Window-modus venster "zo groot als" is op het volledige scherm?
toegevoegd de auteur user166390, de bron
Dan is mijn huidige hypothese hetzelfde als die van Cole Johnson: het is niet het aantal objecten , maar het is de fillrate die de beperkende factor is. Het gebruik van een engine die hoe dan ook beter gebruik maakt van hardware (bijvoorbeeld OpenGL of alleen maar het "schaalgedeelte") zou dit moeten oplossen. IIRC er waren enkele eigenaardigheden om Java2D daadwerkelijk te gebruiken hardwareversnelling ...
toegevoegd de auteur user166390, de bron

1 antwoord

Gebruikt Java2D helemaal hardwareversnelling op Ubuntu? Bekijk enkele Java 2d-vlaggen , vooral bij degenen die OpenGL inschakelen.

In Windows wordt Direct3D-versnelling standaard gebruikt. Onder Linux krijgt u niet standaard OpenGL, dus probeer het aan te zetten met behulp van de opdrachtregeloptie -Dsun.java2d.opengl = true bij het starten van de JVM.

3
toegevoegd
heeft de volgende foutmelding "i915_program_error: Overschrijding van max. indirecte textuur-lookups (6 van de 4)"
toegevoegd de auteur Sri Harsha Chilakapati, de bron
Heb het te draaien op 60-76 fps, maar het foutbericht blijft weergegeven
toegevoegd de auteur Sri Harsha Chilakapati, de bron
Maar de fps is licht toegenomen. Bij het aanroepen van de JVM met optie van command-line had ik deze fout. Maar als ik het in de constructor heb geplaatst, krijg ik 60-76 fps en nu kreeg ik de foutmelding dat ik de uitzonderingen niet kreeg.
toegevoegd de auteur Sri Harsha Chilakapati, de bron
@SriHarshaChilakapati Misschien kunnen uw videokaart/stuurprogramma's OpenGL-backend voor Java2D niet uitvoeren (verwijzing naar deze fout vond ik hier ) Als u uw videokaartstuurprogramma's niet kunt bijwerken, moet u mogelijk accepteren dat Java2D/OpenGL niet zal werken met uw huidige hardware.
toegevoegd de auteur prunge, de bron