AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Sprite => BitMap; BitMap => Sprite
Thema durchsuchen
Ansicht
Themen-Optionen

Sprite => BitMap; BitMap => Sprite

Ein Thema von SeiAktiv · begonnen am 1. Apr 2004 · letzter Beitrag vom 6. Apr 2004
Antwort Antwort
SeiAktiv

Registriert seit: 1. Apr 2004
4 Beiträge
 
Delphi 7 Enterprise
 
#1

Sprite => BitMap; BitMap => Sprite

  Alt 1. Apr 2004, 15:14
ich habe folgendes problem

aufbau sprite ist bekannt und aufbau bitmap ebenfalls.

gibt es eine vereinfachte möglichkeit bei delphi ein sprite in mehrere bitmaps zu konvertieren und umgekehrt ohne dies per hand zu programmieren ?

vielleicht kann mir jemand einen hinweis oder infos zur problematik geben.

dank im voraus
  Mit Zitat antworten Zitat
sCrAPt
(Gast)

n/a Beiträge
 
#2

Re: Sprite => BitMap; BitMap => Sprite

  Alt 4. Apr 2004, 22:34
mir ist kein zerteilemeinspriteinvielebitmaps(S: TSprite; Speicherort: String); bekannt, also würd ich sagen du musst dies per Hand programmieren

, sCrAPt
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Sprite => BitMap; BitMap => Sprite

  Alt 5. Apr 2004, 10:58
Willkommen in der DP

Zitat von SeiAktiv:
gibt es eine vereinfachte möglichkeit bei delphi ein sprite in mehrere bitmaps zu konvertieren und umgekehrt ohne dies per hand zu programmieren ?
Ich versteh den sinn nicht? Ein bild wird zu einem sprite, wenn man ein bitmap auf eine zeichen-oberfläche zeichnet, also hättest du doch schon dein bitmap und jedwede konvertierung ist hinfällig...oder hab ich was falsch verstanden?
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
SeiAktiv

Registriert seit: 1. Apr 2004
4 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Sprite => BitMap; BitMap => Sprite

  Alt 5. Apr 2004, 13:46
komprimierte sprites entsprechen nicht dem aufbau eines bitmap und müssen daher in "echte" bitmap umgewandelt werden.

ich habe mir zwar schon einiges angelesen doch eine einfache importfunktion (in ein image oder paintbox) habe ich nicht gefunden.

zumal die sprites die ich meine informationen beinhalten was alpha, color und z-buffer betrifft. eine zusätzliche palettendatei besteht zudem (um 24bit zu generieren).

diese wäre zwar zu vernachlässigen, doch wenn man sie bräuchte kann man dies schnell selber "zu fuß" mit einbinden.
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Sprite => BitMap; BitMap => Sprite

  Alt 5. Apr 2004, 13:53
komprimierte sprites? ...dann sei doch so freundlich un sage was für komprimierte texturen du meinst. Welche API, welches system?
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
SeiAktiv

Registriert seit: 1. Apr 2004
4 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Sprite => BitMap; BitMap => Sprite

  Alt 5. Apr 2004, 14:57
spriteaufbau ist wie folgt.


aufbau des layouts

offset | größe | value
0 | 4 | version
4 | 4 | anzahl der frames
8 | 4 | farbpalette
12 | 4 | offset tabelle
var | var | frame 0
var | var | frame 1
| | . . .

aufbau der frames

offset | größe | value
0 | 2 | breite
2 | 2 | höhe
4 | 2 | Flags
6 | 2 | null
8 | 2 | farbpalette ID
10 | 2 | transparent pixel
12 | 2 | Y
14 | 2 | X
16 | 2 | reihen header 0
18 | var | reihen segments
var | 2 | reihen header 1
var | var | reihen segments
| | . . .
var | 2 | End marker (0xA000)


aufbau der reihe

Offset | größe | value
0 | 2 | was zu machen und zähler
2 | var | Pixel daten
var | opt | Ausrichtung in byte


dies auszulesen ist nicht das problem, nur wie bekomme ich dies in ein bitmap interpretiert bzw. in eine paintbox ?

vom prinzip sind alle daten vorhanden, möchte nur nicht etwas "langsames" unter delphi programmieren wenn es eine importfunktion oder ähnliches gibt.

vielleicht fange ich auch irgendwie falsch an, doch angezeigt bekomme ich es als bitmap nicht.
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Sprite => BitMap; BitMap => Sprite

  Alt 5. Apr 2004, 16:04
Da dies kein standard format zu sein scheint kann delphi das natürlich nicht lesen. Aber wenn du die daten korrekt interpretieren kannst, dann hält dich niemand davon ab, es via scanLine in ein TBitmap zu schreiben und dann mit TBitmap.saveToFile zu speichern...das kannst du dann für jeden frame tun.

Zu scaneLine gibt es hier sicher tausende beispiele.
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
SeiAktiv

Registriert seit: 1. Apr 2004
4 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Sprite => BitMap; BitMap => Sprite

  Alt 6. Apr 2004, 03:03
danke für den hinweis, habe mir mal scanline zur gemüte geführt. funktioniert sogar recht prächtig (und ist schneller als einzelne pixel setzen).

inzwischen kann ich die sprites erkennen, allerdings habe ich probleme mit der zuordnung der palette, da diese ausgelagert ist in eine datei.

wenn ich mich recht erinnere bekomme ich diese zwar auch über pixel rgb farben setzen rein doch dann ist mein gesamter geschwindigkeitsgewinn mit scanline wieder dahin.

eine idee wie es einfacher oder schneller geht?

frage nebenbei, aus der erfahrung heraus..... was ist schneller im zeichnen bei delphi, paintbox oder image.picture.bitmap ?
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Sprite => BitMap; BitMap => Sprite

  Alt 6. Apr 2004, 10:37
Zitat von SeiAktiv:
danke für den hinweis, habe mir mal scanline zur gemüte geführt. funktioniert sogar recht prächtig (und ist schneller als einzelne pixel setzen).

inzwischen kann ich die sprites erkennen, allerdings habe ich probleme mit der zuordnung der palette, da diese ausgelagert ist in eine datei.
Das sagt mir natürlich nix. Kommst du denn an die paletten-einträge rann?
Zitat:

wenn ich mich recht erinnere bekomme ich diese zwar auch über pixel rgb farben setzen rein doch dann ist mein gesamter geschwindigkeitsgewinn mit scanline wieder dahin.
hmmm..vielleicht hast du ein falsches pixel-bit-pattern? Delphis TColor ist BGR - Normal wäre ja RGB - könnte sein, dass du die bytes mal umsortieren musst. zB. so:rgb := (bgr and $00FF00) or ((bgr shl 16) and $FF0000) or ((bgr shr 16) and $FF);
Zitat:

eine idee wie es einfacher oder schneller geht?
Viel schneller als scanLine wirds wohl nicht
Zitat:

frage nebenbei, aus der erfahrung heraus..... was ist schneller im zeichnen bei delphi, paintbox oder image.picture.bitmap ?
Kommt draus an was du vorhast? Wenn du eine animation flüssig ausgeben willst, dann sollte man die frames in einem, oder mehreren bildern puffern und dann nur noch die aktuelle phase auf die zeichefläche blitten
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:46 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