Entwickler-Ecke

Multimedia / Grafik - Schnelleres Kartenerstellen mit DelphiX


Elayla - Mi 11.06.03 19:18
Titel: Schnelleres Kartenerstellen mit DelphiX
Gibt es ne schnellere bzw. günstigere Methode mit DelphiX ne Karte aufzubauen?
Bisher hab ich ne Karte mit 16x12 Feldern zu je 40x40 px die pausenlos aktualisiert wird.
Aber beim scrollen, also wenn neue Felder hinzukommen und nicht mehr benötigte verschwinden ruckelt es doch bisschen und das stört etwas.
Kann man die Bilder aus einer schnelleren Quelle auslesen, also nicht über Image1.List oder sollte man die Felder kleiner/größer machen oder ein anderes Bildformat?


umpani - Mi 11.06.03 21:43

hmm,

du hast doch die Vorlage verwendet, die ich Dir gegeben habe.

Bei mir ruckelt da nichts. Selbst auf meinem Alten Labtop mit ner Ati Rage LT Mobile Grafikkarte ist alles so weit flüssig.

Abgesehen davon ist die imagelist Komponente sehr schnell, da die Bilder direkt aus dem Speicher geladen werden.


Elayla - Mi 11.06.03 22:28

Naja ruckeln kann man so nicht sagen, aber ich finds nicht so super flüssig, kann aber auch täuschen ... fakt ist, ich fang mit OpenGL an *gg*


mimi - Mo 16.06.03 20:29

du darfas beim zeichnen nur den bereich zeichnen denn du auch siehst und wenn du ein 2D array verwendet der 1000 X 1000 groß ist, dann wirst du das so richtig spüren:)


Elayla - Mo 16.06.03 20:32

Hehe jo das is klar das ich nicht alles zeichnen darf ^^
Ich weis jetzt auch warum es bei mir ruckelte, meine GraKa-Treiber waren defekt, jetzt gehts super :)


mimi - Mo 16.06.03 20:43

gibt mal den einen auszug aus deiner zeichen funktion....


Elayla - Mo 16.06.03 20:54

Das ist meine ganze Zeichenprozedur, das Kartenerstellen und das ganze Zeugs is extra :wink:

Zitat:
procedure tform1.mapdraw;
var x,y:integer;
begin
for x := standx to standx+16 do
for y := standy to standy+12 do
begin
ImageList1.Items[map[x,y]].Draw(dxdraw1.Surface,(x-standx)*40-detailx,(y-standy)*40-detaily,0);
end;
Bauen;
dxdraw1.Flip;
end;


mimi - Mo 16.06.03 21:00

und was steht in der func "Bauen" drin ?
mach mal folgendes:
unterteile mal die zeichen funktion undzwar misst du die zeit. GetTickCount heißt glaube ich der befel.
und so weißt du dann was am länsgten dauert.