2016-08-07 56 views
0

So gibt es absolut keine fps fallen, wenn ich kleinere Bild zu SDL-Bildschirm hinzufügen, aber dann habe ich SDL Hintergrund, mit Details und alles auf meinem ganzen Bildschirm. Dann werde ich von 350 auf 150 fps fallen. Vielleicht gibt es einen Weg, es zu beheben? Fügen Sie diese Textur zu einem anderen Bildschirm oder etwas ähnliches hinzu?Riesige fps fallen, wenn ich große Bild zu SDL Textur hinzufügen

Hier ist, wie ich 'das Bild:

In Laden meines Spiels:

SDL_Texture* texture; 
SDL_Rect rect; 
texture = IMG_LoadTexture(renderer, "data/interiors/baznycia.png"); 
rect.x = 0; 
rect.y = 0; 
rect.w = screenWidth; 
rect.h = screenHight; 

In meinem Spiel Schleife:

SDL_RenderClear(renderer); 
SDL_RenderCopy(renderer, texture, NULL, &rect); 
SDL_RenderPresent(renderer); 
+0

Überprüfen Sie, ob SDL Hardware für 2D-Grafikbeschleunigung verwenden darf. Es kann sein, dass SDL nur Software-Rendering verwendet. https://wiki.libsdl.org/SDL_CreateRenderer#flags – nshct

+0

@nshct Ich benutze SDL_RENDERER_ACCELERATED, also verwende ich Hardware. Ich habe versucht, jetzt mit diesen Flags zu spielen, also gibt SDL_RENDERER_ACCELERATED die gleichen fps wie SDL_RENDERER_TARGETTEXTURE, und andere fallen einfach auf 10fps oder so (wenn ich diese benutze, gibt es keinen Zähler von fraps) – lollypap54

+0

Eine Sache, an die ich mich erinnere, ist manchmal das Format von Textur (aka wie die Farben im Speicher angeordnet sind, Größe der Farbfelder ...) unterscheidet sich von dem Format Ihres Bildschirms, so dass jedes Mal, wenn Sie etwas kopieren möchten, es übersetzt werden muss. Sie können versuchen, Ihr Bild in eine neue Textur zu kopieren, die das gleiche Format wie Ihr Bildschirm hat (Sie können das in 'CreateTexture' angeben) und versuchen, das für jeden Frame auf Ihrem Bildschirm darzustellen. – nshct

Antwort

3

In Ihrem Fall, weil Sie einen Hintergrund zeichnen Bild eines Spiels mit konstanter Fenstergröße, könnte es vorteilhaft sein, die Abmessungen Ihres Bildes an Ihre Bildschirmgröße anzupassen, um zu vermeiden, dass die Interpolation auf Ihre Textur angewendet wird (was computati erfordert) Pünktlich und daher möglicherweise Ihre FPS)

Darüber hinaus kann manchmal eine Textur Pixelformatkonflikt verursachen unnötige Textur Konvertierungen, so überprüfen Sie, dass Sie die richtige format vor dem Zeichnen auf Bildschirm verwenden.