Hallo
Ich suche schon lange nach einer Möglichkeit zwei Bilder(oder sprites) im XOR Modus übereinander zu blenden.
Das heisst, ich habe ein Bild, darüber möchte ich ein anderes Bild so legen, dass die Unterschiede der beiden Sprites sichtbar werden.
Wenn also ein Pixel genau den gleichen Farbwert hat wie auf dem hinteren Bild, sollte das Pixel schwarz sein, andernfalls sollte das Pixel grau sein (je nach differenz der beiden Bilder)
Oder anders gesagt ein logisches XOR zwischen den beiden Bilder.
Wenn ich in einem Grafikprogramm z.B. Photo-Paint ein Bild über das andere lege, und als Überblendung XOR einstelle, klappt dies wunderbar.
Ich habe schon alle Werte in Sprite3DBlendingMode() ausprobiert, doch damit scheint es nicht möglich zu sein.
Wichtig ist mir dabei, dass diese Überblendung saumässig schnell ist, deshalb möchte ich wenn möglich die Power der Grafikkarte ausnützen. Wenn ich also jedes Pixel einzel auslese und vergleiche wirds viel zu langsam.
Hat da jemand einen Lösungsvorschlag?
Ich bin schon fast am verzweifeln.
Sprite3d Blending mode
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
- Beiträge: 752
- Registriert: 14.09.2004 21:39
- Kontaktdaten:
Die Blending Modes kannst dabei vollkommen vergessen, es gibt meines Wissens keine Möglichkeit das mit Blending Modes zu machen, wahrscheinlich da solche Berechnungen anscheinend zu hoch für D3D sind
.
Eine kleine Liste aller Blending Modes:
http://www.math.uni-leipzig.de/pool/tut ... blend.html
Die Erklärung ist leicht zu verstehen, die Werte in runden Klammern mit Kommas getrennt stellt die, ich sag jetzt mal "Sättigung" der einzelnen Farbkanäle da (Rot, Grün, Blau, Alpha). Also nichts verwertbares für dein Unternehmen.

Eine kleine Liste aller Blending Modes:
http://www.math.uni-leipzig.de/pool/tut ... blend.html
Die Erklärung ist leicht zu verstehen, die Werte in runden Klammern mit Kommas getrennt stellt die, ich sag jetzt mal "Sättigung" der einzelnen Farbkanäle da (Rot, Grün, Blau, Alpha). Also nichts verwertbares für dein Unternehmen.
Besten Dank für eure Antworten.
Hmm, habs mit DrawImage probiert, aber da erhalte ich irgendwie ein komisches ergebnis. Ist das wirklich XOR? in meinem Grafikprogramm passiert bei XOR was anderes!
Oder ist es nicht XOR was ich brauche?
Ich möchte eigentlich nur die unterschiede der Pixel vom oberen und unteren Bild sichtbar machen
Hmm, ja die Liste mit den BlendingModes kenne ich bereits, aber da habe ich auf SelfDXD gerade noch was anderes gefunden
und zwar D3DBLENDOP
Kann man diesen Befehl in PB nicht benutzen?
http://www.math.uni-leipzig.de/pool/tut ... endop.html
Hmm, habs mit DrawImage probiert, aber da erhalte ich irgendwie ein komisches ergebnis. Ist das wirklich XOR? in meinem Grafikprogramm passiert bei XOR was anderes!
Oder ist es nicht XOR was ich brauche?
Ich möchte eigentlich nur die unterschiede der Pixel vom oberen und unteren Bild sichtbar machen
Hmm, ja die Liste mit den BlendingModes kenne ich bereits, aber da habe ich auf SelfDXD gerade noch was anderes gefunden
und zwar D3DBLENDOP
Kann man diesen Befehl in PB nicht benutzen?
http://www.math.uni-leipzig.de/pool/tut ... endop.html
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Hmm, das erste Bild lege ich auch im normalen Modus auf den Hintergrund, und dann das obere Bild mit XOR darüber.
Falls ich zwei identische Bilder benutze, sollte dann nicht "schwarz" angezeigt werden? Oder bin ich da falsch?
Code: Alles auswählen
InitSprite()
InitSprite3D()
InitKeyboard()
InitMouse()
UseJPEGImageDecoder()
OpenScreen(1024, 768, 32, "Blending")
LoadImage(0,"2.jpg")
LoadImage(1,"1.jpg")
Repeat
ExamineMouse()
ExamineKeyboard()
x = MouseX()
y = MouseY()
ClearScreen(RGB(0,0,0))
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Default)
DrawImage(ImageID(0), 0, 0)
DrawingMode(#PB_2DDrawing_XOr)
DrawImage(ImageID(1), x, y)
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End