Shogoki Geschrieben 25. Februar 2009 Geschrieben 25. Februar 2009 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 Zitieren
Argbeil Geschrieben 2. März 2009 Geschrieben 2. März 2009 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? Zitieren
Shogoki Geschrieben 2. März 2009 Autor Geschrieben 2. März 2009 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 Zitieren
Argbeil Geschrieben 2. März 2009 Geschrieben 2. März 2009 Sinkt die CPU Last wenn du dort 30 einstellst? Zitieren
Shogoki Geschrieben 2. März 2009 Autor Geschrieben 2. März 2009 Hab es eben mal auf 20 getestet aber CPU Auslastung ist immer noch bei ca. 50 % Zitieren
Argbeil Geschrieben 2. März 2009 Geschrieben 2. März 2009 Wie sieht denn deine Game-Loop aus? Du könnstest mit einem Profiler prüfen wo die meiste Rechenzeit verloren geht. Gruß, Manu Zitieren
Shogoki Geschrieben 2. März 2009 Autor Geschrieben 2. März 2009 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? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.