Veröffentlicht 25. Februar 200916 j Hallo. Irgendjemand hier kennt sich doch bestimmt mit SDL.Net aus . Da hab ich nämlich mal ne Frage: Kann man da irgendwie auch die GPU nutzen? Um die CPU zu entlasten? Hoffe jemand kann mir helfen Schonmal Danke im vorraus. MfG Shogoki
2. März 200916 j Die verwenden ja intern OpenGL (oder DirectX?), dadurch wird automatisch die GPU für Dinge wie Blitting oder Transformation verwendet. Wenn, z.B. bei einem Moorhuhn-Klon die CPU Last zu hoch ist (z.B. bei über 50% bei einem E6750) hat man in der Regel einen anderen Fehler gemacht. Begrenzt du die Framerate?
2. März 200916 j Autor Danke für die Antwort erstmal. Also soweit Ich weis arbeitet SDL mit DirectX. Aber Ich habe schon öfter gelesen, dass SDL die GPU nicht nutzen würde, daher dachte ich das halt. Die Framerate begrenze ich auf 60 so: Events.TargetFps = 60; // FPS auf 60 setzen
2. März 200916 j Autor Hab es eben mal auf 20 getestet aber CPU Auslastung ist immer noch bei ca. 50 %
2. März 200916 j Wie sieht denn deine Game-Loop aus? Du könnstest mit einem Profiler prüfen wo die meiste Rechenzeit verloren geht. Gruß, Manu
2. März 200916 j Autor Also meine Game Loop ist diese hier: public void SDL_Tick(object sender, TickEventArgs e) { scroll.CheckScroll(10,Mouse.MousePosition); if (!(pause || name)) { // Wenn Pause oder Namenseingabe Bewegung überspringen // Bewegung der Fische Direction dir = new Direction(true); for (int i = 0; i <= 3; i++) { fish[0, i].Move(3, dir); //fischen um 3 PixelproTick verschieben //Fische wenn sie am linken Rand angekommen sind wieder an den rechten zeichnen if (fish[0, i].Rectangle.X <= 3) CreateFish(i); if((fish[0,i].Rectangle.Y + fish[0,i].Rectangle.Height <= 6)) CreateFish(i); } } //Auf Sur_Game (Spielwelt zeichnen) Sur_game.Blit(background[0,bg_index]);//hintergrund zuerst zeichnen //Fische zeichnen for (int i = 0; i <= 3; i++) { //Fischanimation in dei Rectangles Blitten fish[0, i].Draw(Sur_game); } pflanze.Draw(Sur_game); Sur_game.Update(); //Surface Updaten //Auf screen(Benutzerbildschirm) zeichnen //Ausschnitt d. Spieloberfläsche zeichnen screen.Blit(Sur_game, Rect_screen, scroll.Rect); //Txt_Sprites zeichnen screen.Blit(txt_score, Rect_score); screen.Blit(txt_time, Rect_time); //Wenn Pause ist dann Pausetext zeigen if (pause || name) screen.Blit(txt_pause, Rect_pause); //munition zeichnen muni.Draw(screen); //Cursor zeichnen cursor[cur_index].Draw(screen, Mouse.MousePosition); screen.Update(); // Surface Updaten } Ich hab noch nie nen Profiler benutzt. Wie stell ich das an?
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.