Nur das zeichnen, was auf dem Bildschirm ist?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: Nur das zeichnen, was auf dem Bildschirm ist?

BeitragDo, Jan 19, 2012 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Der Titel beschreibt das Problem, was ich momentan habe schon sehr gut: Wie finde ich heraus, was ich malen muss, wenn ich nur das malen will, was wirklich angezeigt wird? Also bei Tiles kein Problem: So viele zeichnen, bis sie "aus dem Bildschirm" gehen und fertig, aber wie ist das bei Objekten, beispielsweise Waffen oder Autos? Wie finde ich da (möglichst schnell) heraus, welche gezeichnet werden müssen und welche nicht?

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragDo, Jan 19, 2012 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Koordinaten mit Höhe/Breite verrechnen und mit Überschneidung des Bildschirms vergleichen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

ZEVS

BeitragDo, Jan 19, 2012 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
In einem zweidimensionalem Array of TLists einfach von bestimmten Kartenbereichen jedes Objekt speichern, das darin vorkommt. Damit hast du eine Vorauswahl, wenn auch recht kompliziert.

ZEVS

klin

BeitragDo, Jan 19, 2012 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn dein Fenster z.B. 800x600 groß ist, dann überprüfst du einfach die X und Y Koordinaten deines Objekts. Geht es über 800 / 600, dann einfach nicht zeichnen (bei Rotationen musst du noch ein wenig berechnen).
Geht es unter 0, dann musst du noch die Breite/Höhe zu den Koordinaten addieren.
Beispiel:
Code: [AUSKLAPPEN]
X: -10 Y: -15

Bild:
Code: [AUSKLAPPEN]
W: 5 H: 20

Code: [AUSKLAPPEN]
X+5 = -5
Y+20 = +5

Da Y über 0 ist, kann das Objekt gezeichnet werden (auch hier muss man vill. bei Rotationen etwas rechnen). Außerdem muss noch beachtet werden, ob das Bild "midhandle" geladen wurde. Somit wird W und H /2 geteilt.

Ist einfach etwas rechnen.

Klin

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group