[Monkey] [mojo2] RGB-Werte mit ReadPixels ermitteln

Übersicht Andere Programmiersprachen Allgemein

Neue Antwort erstellen

Ratchet

Betreff: [mojo2] RGB-Werte mit ReadPixels ermitteln

BeitragSa, Sep 10, 2016 9:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte die Farbe an der Mausposition auslesen und wollte dazu ReadPixels verwenden. Unter mojo hat das noch gut geklappt, aber jetzt komme ich mit dem DataBuffer nicht klar.

Wie komme ich nun mit dem ReadPixels von mojo2 an meine RGB-Werte?

BlitzMax: [AUSKLAPPEN]
Local db := New DataBuffer(16) ' RGBA, also 4 Ints = 16 Bytes????
Local pixel: Int[]
canvas.ReadPixels(MouseX, MouseY, 1, 1, db)
???
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

BladeRunner

Moderator

BeitragSa, Sep 10, 2016 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab keine Erfahrung mit Monkey, aber laut Dokumentation liefert ein Databuffer die passenden Methoden wie zB PeekInt() mit, vielleicht hilft Dir das ja?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Ratchet

BeitragSa, Sep 17, 2016 10:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier nun des Rätsels Lösung. Zu beachten ist, dass die Y-Koordinaten im Buffer gespiegelt sind. Also das Pixel links oben ist im Buffer unten links. Zudem sind die Werte in der Reihenfolge ABGR gespeichert. Hat wohl mit diesem Endian-Gedöhns zu tun - hab ich aber keine Ahnung von.

BlitzMax: [AUSKLAPPEN]
Import brl.databuffer

Local db := New DataBuffer(4)
Local pixel: Int[]

canvas.ReadPixels(MouseX, DeviceHeight - MouseY, 1, 1, db)
pixel = ColorToRgb(db.PeekInt(0))

Local r: Int = pixel[3]
Local g: Int = pixel[2]
Local b: Int = pixel[1]

Function ColorToRgb:Int[](value:Int)
Local resp:Int[]
Local v:Int
resp = resp.Resize(4)
v = value
resp[3] = v & 255
v = v Shr 8
resp[2] = v & 255
v = v Shr 8
resp[1] = v & 255
v = v Shr 8
resp[0] = v & 255
Return resp
End
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group