AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hintergrundbild erstellen

Ein Thema von VkPenguin · begonnen am 13. Feb 2012 · letzter Beitrag vom 26. Feb 2012
Antwort Antwort
Seite 3 von 5     123 45      
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#21

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 00:19
So, habe mal mit der Umstellung auf Bitmaps angefangen, es gibt da aber ein Problem: Das Programm läuft tatsächlich deutlich flüssiger und ohne flackern, aber nur solange ich
Delphi-Quellcode:
// MobPIC.TransparentColor:=MobPiC.Canvas.Pixels[0,0];
//MobPIC.Transparent:=True;
die "//" Zeichen stehen lasse. Wenn ich den Transparenzmodus aktiviere fallen die FPS von über 60 auf 0.5. Weißt Du, woran das liegen könnte?

*Edit* Die Darstellung ist dann aber übrigens richtig, also es ist nur das Gegnerraumschiff sichtbar, der Rest des Rechtecks ist schwarz, wie es erstmal sein soll.
*Edit2* Um genau zu sein ist es die //MobPIC.Transparent:=True; Zeile, die den Unterschied ausmacht, egal, was mit der anderen ist

Geändert von VkPenguin (19. Feb 2012 um 00:23 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#22

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 00:42
Nun, mit Transparenz ist mehr zu rechnen. Ohne wird zeilenweise kopiert, bei Transparenz muß, auch wenn das nicht viel Leistung in Anspruch nimmt, jeder Pixel überprüft werden.

Aber ich kann mir das kaum vorstellen. Ich habe gerade 500 teil-transparente Objekte getestet, da bin ich auf 21 FPS runter und es ruckelt. Bei 300 Objekten bin ich über 30 und es läuft flüssig. Die Geschwindigkeit ist zwar runter, aber es ist flüssig.

Wie viel Raumschilfe hast du denn?
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#23

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 00:51
Nie mehr als 50, allerdings ist die Auflösung auch recht hoch. Im Spiel sind sie nicht mehr als höchstens 100*100px, das Originalbild, dass mit stretchdraw runtergerechnet wird ist aber 900*750px. Ich wollte das einfach mal testen und dann soweit wie nötig runterrechnen, es klappte aber sofort, also hab ich's so gelassen. Denkst Du, nun liegt es doch daran?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#24

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 00:54
Moment, stretchdraw?

Weißt du vieviel Rechenleistung draufgeht wenn du das Bild 60 mal pro Sekunde verkleinerst?
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#25

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 00:55
Ja, aber je nach Level gibt es unterschiedlich große Gegner... Soll ich lieber für jede Sorte ein eigenes Ressourcenbild machen?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#26

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 01:01
Vor dem Start des Levels kannst du so viel runter stretchen wie du willst, aber im Spiel solltest du mit festen Größen arbeiten. Auch wenn das bedeutet, das du für 10 Größen eines Raumschiffs 10 Bitmaps nutzt.

Das ist nun mal so, die Canvas wurde nicht zum spielen entwickelt.
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#27

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 01:03
Hm, okay. Kann ich denn einer Bitmap sagen, sie soll das Bild einmal stretchen, sich dann merken und immer wieder zeichnen? Oder muss ich wirklich alle Bilder vor Programmstart erstellen?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#28

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 01:16
Du kannst es machen wie du willst, aber es kostet nun mal Rechenzeit bei jeder Bewegung erst die Größe zu ändern.
Wobei ein kleiner Tipp, damit du nicht mit zig Bitmaps jonglieren mußt:

Delphi-Quellcode:
var
  _bmp_klein: TBitmap;
  _bmp_normal: TBitmap;
  _bmp_gross: TBitmap;

procedure TForm1.FormCreate(Sender: TObject);
begin
  _bmp_klein := TBitmap.Create;
  _bmp_normal:= TBitmap.Create;
  _bmp_gross := TBitmap.Create;
  //freigeben nicht vergessen

  _bmp_klein ...zuweisen...
  _bmp_normal ...zuweisen...
  _bmp_gross ...zuweisen...
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  bmp_zum_arbeiten: TBitmap;
begin
  bmp_zum_arbeiten := _bmp_klein;

  bmp_zum_arbeiten ...mach was...

  bmp_zum_arbeiten := _bmp_normal;

  bmp_zum_arbeiten ...mach was...
end;
Das klappt. Du mußt die Bitmap nicht umkopieren, du kopiert einfach deren Adresse und arbeitest immer mit der gleichen Bitmap. Nur bei Größenänderung kopierst du die Adresse einer anderen Bitmap.
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#29

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 01:19
Das ist geschickt, aber es wird ne weile dauern, das alles umzubauen.. Melde mich dann morgen nocheinmal
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#30

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 02:44
So, die Anzeigen laufen jetzt über Bitmaps. Es läuft, wenn man alle Transparenzen aktiviert, schon etwas langsam, aber es geht.

Was mir gerade einfiel:
Zitat:
Du mußt auf OnFormPaint reagieren, d. h. die wird ausgeführt wenn dein Formular ganz, aber auch nur in Teilen neu gezeichnet wird.
Kannst du das vielleicht ein bisschen erläutern?


... jetzt müsste ich nurnoch den Teil mit den Rechtecken verstehen, dann wär alles so, wie ich es gerne hätte

Wie lade ich denn einen Bildschirmausschnitt in die Bitmap? ist das der Teil mit "CopyRect..."?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz