Anzeige:
Ergebnis 1 bis 1 von 1

Thema: Graphics.setXORMode(farbe)

  1. #1
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825

    Graphics.setXORMode(farbe)

    Hallo Leute,

    Code:
    g.setXORMode(COLOR.BLACK);
    Diesen XOR-Graphik-Modus "missbrauche" ich, um pixelgenaue Kollisionen von Images zu berechnen. Ich arbeite dabei mit einer roten und grünen Maske und suche Gelb.

    Ich habe nicht so ganz kapiert, was es mit diesem Farbparameter auf sich hat.
    Die resultierende Farbe stellt sich ein, egal ob man die Farbe nun auf Schwarz, gelb oder Weiss einstellt.
    Nimmt man hingegen eine der beiden Maskenfarben, ergibt sich die jeweils andere Maske (gelb).

    Soweit kann ich über den XOR-Modus alles nachvollziehen. Kopfzerbrechen macht mir nur die Farbe, die man als Parameter angibt. Wird die nun addiert, subtrahiert, oder was?

    Gruß,
    Ulrike

    p.s.
    war inzwischen nicht untätig und befürchte, dass der XOR-Modus für was anderes gedacht war.

    Also, unsereiner dachte, bevor er für eine Kollisionsdetection sich endlos lange Dreiecksberechnungen antut, lassen wir doch mal einfach die Spritemasken bitweise überlappen. Eine rote und eine grüne ergibt beim Zusammenstoß einen gelben Bereich (ff 00 00 | 00 ff 00 -> ff ff 00)

    XOR-Modus bedeutet: bei der Addition der Bytegruppen kommt hinten das raus, was genau einmal gesetzzt ist.
    Also: man nehme einen schwarzen Hintergrund ( 00 00 00 ) und lasse was Rotes (ff 00 00) darauf los. Ergebnis: Im Bereich des roten Bildes es wird rot gezeichnet.
    Als zweites lasse man was Grünes (00 ff 00) darauf los. Ergebnis: Grün auf Schwarz bleibt Grün, Grün auf Rot wird zu Gelb (s.o.).

    Was hierbei absolut nicht gebraucht wrid, ist dieser Farbparameter, den der XOR-Modus haben will.
    Der kommt nur gut, um eins der Bilder auszublenden: setzt man ihn auf Rot, erscheint das grüne in Gelb, also irgendwie wird da noch was addiert.
    Pflückt man das bitweise auseinander, ist das noch zu verstehen (zweimal Rot wird Schwarz, Grün + Rot wird gelb)

    Schön, dachte ich, die übergebene Farbe pappt sich noch oben drauf. Übergeben wir mal Blau:
    Rotes Bild wird magenta, ok - Grünes Bild wird Türkis, ok
    Overlap sollte Weiß geben, gibt aber Gelb!

    Das kann ich mir nur so vorstellen, dass die Bilder erst mal alle beide (getrennt) mit der übergebenen Farbe traktiert werden und erst danach gezeichnet werden.

    Oder liege ich da (immer noch) falsch?
    Geändert von BlueJay (26-09-2011 um 09:06 Uhr) Grund: Zusatzinfos
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •