Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 11.02.2004, 17:47 Titel: Bessere Darstellung |
|
|
Zuerst mal tut es mir leid das ich so oft meine Probleme poste, aber ich kann euch beruhigen das warscheinlich ist das letzte grosse Problem.
Die Blauem zahlen sind die Werte , also welches bild dort angezeigt wird, 1 ist zum Beispiel Gras und 2 Wasser.
Nun zum problem:
Ich zeichne meine Tiles (immer nur die , die man sieht) auf ein Surface das 40 Pixel höher und breiter als der Screen ist. Nun zeichne ich von diesem Surface den Ausschnitt den man sieht in den Backbuffer, wie man auf Bild 1 sehen kann.
Das rote ist das was in den Backbuffer kommt.
Nun wenn man nach unten scrollt geht auch der Aussschnitt schön weiter, wie man auf dem 2. Bild sehen kann.
Nach dem dritten Bild also wenn man ganz unten angekommen ist fängt das Problem an, nämlich muss ich den Ausschnitt in einem Ruck wieder nach links oben befördern und allen Tiles die man sieht nen anderen Wert geben, damit sich die position ausgleicht
das sieht man auf Bild 4.
So und das problem ist das es einen ziemlichen Ruck gibt und das sieht nicht sehr angenehm aus wenn man ne weile nach rechts oder so geht. Auf schnelleren Pc's merkt man's zwar nicht aber wenn eine andere Anwendung offen ist dann stockts, zudem geht die berechnung ziemlich auf die cpu leistung!
Ich wäre sehr dankbar falls jemand Ahnung hat wie man das darstellen könnte und mir helfen könnte!
Danke im voraus! |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 11.02.2004, 19:15 Titel: |
|
|
ich würde das ganze ganz anders angehen.
ich würde in einem array die gesamte karte gespeichert haben.
dann würde ich beim zeichnen zuerst ausrechnen, in welcher zeile/reihe er anfangen soll und dann einfach mit genau diesem array index anfangen zu zeichnen.
und falls man über die grenze hinnaus kommt einfach nen standard tile zeichnen oder so |
|
Nach oben |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 11.02.2004, 19:41 Titel: |
|
|
Ja das mach ich ja auch so. Ich hab jetzt alles mal umgestellt und direkt in den Backbuffer gezeichnet. Die Tiles am Rand blitte ich genau passend hinein. Aber ich muss immer noch so einen Ruck machen. Anders ist es irgendwie garnicht möglich??? |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 11.02.2004, 19:54 Titel: |
|
|
Was genau meinst du mit einem Ruck ? einfach mal 40 Pixel verschieben ? Wenn das so ist brauchst du noch einen kleinen Clippingalgo dann geht das auch ohne Ruck. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 11.02.2004, 20:45 Titel: |
|
|
ja eigentlich nicht 40 Pixel verschieben sondern die Werte aller Tiles verschieben. Clippingalgo? Und wie mach ich sowas? |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 11.02.2004, 20:59 Titel: |
|
|
Die Werte aller Tiles verschieben? Meinst du etwa so?
Code: |
map[0] = map[1]
map[1] = map[2]
.
.
.
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 11.02.2004, 21:18 Titel: |
|
|
Hier ne alte Clippingroutine von mir:
Code: |
bool Clippen(RECT &rc, int &x, int &y, int scrW, int scrH) {
bool value=true;
int bx=rc.right-rc.left;
int by=rc.bottom-rc.top;
if ((x+bx>0) && (y+by>0) && (x<scrW) && (y<scrH)) {
if(x<0) {
rc.left+=abs(x);
x=0;
}
if(y<0) {
rc.top+=abs(y);
y=0;
}
if(x+bx>=scrW)
rc.right-=bx+(x-scrW);
if(y+by>=scrH)
rc.bottom-=by+(y-scrH);
} else value=false;
return value;
} |
_________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 11.02.2004, 21:28 Titel: |
|
|
achso , so ne clippingroutine hab ich schon, die wird einfach immer im scenenaufbau durchgeführt. Aber wegen dem muss man ja trotzdem alles verschieben.
Das mit dem TileWert verschieben sieht etwa so aus: MAP[x+stepx][y+stepy] , step wird immer erhöht wenn man zum beispiel 40 pixel nach rechts läuft. |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 11.02.2004, 21:45 Titel: |
|
|
Nein, du musst nix verschieben - du änderst einfach den Arrayindex, ab dem die Renderfunktion anfängt, die Tiles zu zeichnen _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 11.02.2004, 22:00 Titel: |
|
|
Meinst du die Arraywerte einfach nur ändern? Dann wirkt das wie 40 pixel schritte. Da die Quadrate immer am gleichen Ort auf dem Bildschirm bleiben... |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 12.02.2004, 21:45 Titel: |
|
|
Nein, nicht die Arraywerte ändern. Nur den Indexwert ändern, an dem du mit zeichnen beginnst _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 12.02.2004, 23:12 Titel: |
|
|
Indexwert? Sorry ich weiss nicht was das ist/was du damit meinst |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 12.02.2004, 23:54 Titel: |
|
|
lol, das würden dann ja auch 40 Pixel Schritte bedeuten.
@Beni5: Er meint damit das Element im Array welches zuerst gezeichnet wird
Array[i] <- das i ist der Index _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 13.02.2004, 00:17 Titel: |
|
|
öhm und was bringt das wenn ich den ändere? lol? Dann ändert sich einfach die position aber das gibt keinen 1pixel verschiebungs effekt... |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 13.02.2004, 01:41 Titel: |
|
|
Du könntest den Inedx oder die Array ja änern wenn eine extra definierte Scrollvariable den Wert 40 überschreitet oder -40 unterschreitet (ScrollX und ScrollY) und beim Zeichnen addierst du diesen Wert einfach zu deiner transformation hinzu. So hättest du auch einen Scrolleffekt und sogar auf per Pixel Basis. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
|