WritePixelFast - Wie komm ich an den RGB-Wert?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Darren

Betreff: WritePixelFast - Wie komm ich an den RGB-Wert?

BeitragSo, Feb 01, 2009 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Abend allerseits!

Ich würde gerne auf plot verzichten und mit WritePixelFast in meine Buffer zeichnen. Jetzt verstehe ich aber die onlinehilfe rein garnicht, wenn es um die angabe des Farbwertes geht, der gezeichnet werden soll.

nehmen wir einmal an, ich hab den RGB-Wert so vorliegen:

rotanteil: p_r; grünanteil: p_g; blauanteil: p_b

wie muss ich die drei werte ver/umrechnen, dass ich zum Wert komme, den ich an Writepixelfast übergeben kann?
MFG Darren

ozzi789

BeitragSo, Feb 01, 2009 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
rgb = a*$1000000 + r*$10000 + g*$100 + b


So bekommst du das ins richtige format, a ist für Alpha, r für rot wert (0-255) usw Smile
und jetzt nur noch bei WritePixelFast als letzer Parameter rgb angeben
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
  • Zuletzt bearbeitet von ozzi789 am So, Feb 01, 2009 19:55, insgesamt einmal bearbeitet

Der Eisvogel

BeitragSo, Feb 01, 2009 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
rgb=p_r*$10000+p_g*100+p_b
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

Darren

BeitragSo, Feb 01, 2009 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
cool danke für die schnelle antwort, aber was soll diese komische multiplikation mit diesm string? hab ich da iwas verpasst?
MFG Darren

Xeres

Moderator

BeitragSo, Feb 01, 2009 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sind keine Strings, sondern die Angabe, das die Zahl eine Hexadezimalzahl ist.
Code: [AUSKLAPPEN]
Print($F)
WaitKey
End
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)
 

Darren

BeitragSo, Feb 01, 2009 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ACHSO! Laughing
Sagt das halt gleich xD
MFG Darren

Noobody

BeitragSo, Feb 01, 2009 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Schneller als eine Multiplikation ist direkt ein Bitshifting:
Code: [AUSKLAPPEN]
RGB = ( R Shl 16 ) Or ( G Shl 8 ) Or B


Normalerweise macht das keinen grossen Unterschied, aber grade bei einem Raytracer bringt das noch ein wenig mehr Geschwindigkeit Wink
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Darren

BeitragSo, Feb 01, 2009 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Noobody hat Folgendes geschrieben:
Schneller als eine Multiplikation ist direkt ein Bitshifting:
Code: [AUSKLAPPEN]
RGB = ( R Shl 16 ) Or ( G Shl 8 ) Or B


Normalerweise macht das keinen grossen Unterschied, aber grade bei einem Raytracer bringt das noch ein wenig mehr Geschwindigkeit Wink

Das muss ich nicht checken oder? Embarassed
MFG Darren

Noobody

BeitragSo, Feb 01, 2009 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist nicht besonders schwierig.
Shl schiebt eine Zahl um ein Bit nach links - das entspricht einer Multiplikation mit 2. Verschiebt man die Zahl um 16 Bits nach links, wie beim Rotanteil, ist das wie eine Multiplikation mit 2^16 - $10000 in Hex ist auch nichts weiteres als 2^16.
Und das Or kann man wie eine schnelle Addition sehen - funktioniert aber nur in gewissen Fällen wie diesem hier.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Holzchopf

Meisterpacker

BeitragSo, Feb 01, 2009 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleines Bisschen Hintergrundwissen noch:
Die Farbangabe, die WritePixel erwartet, ist ein Integer (also eine Zahl, boah) die aus vier Bytes besteht. Das vorderste Byte ist der Alphawert, dann Rotanteil, dann kommt noch der Grün- und der Blauanteil. So einfach ist das. Hexadezimal kann man so ein 32Bit Integer auch nach dem Muster $AARRGGBB darstellen (AA und so stehen jeweils für Hexwerte von 00-FF, aber das Hex-System kennst du hoffentlich). Die einzelnen Farbanteile sind im prinzip nichts anderes als die Bytes daraus. Hast du jetzt die Farbwerte für AA, RR, GG und BB kannst du die nicht einfach zusammenaddieren, darum musst du GG ein Byte und RR zwei Byte nach links schieben (also 8, resp. 16 Bits "shiften").
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

juse4pro

BeitragMo, Feb 02, 2009 10:52
Antworten mit Zitat
Benutzer-Profile anzeigen
oh, ...
ich muss auch was zu diesem thema fragen...

nämlich:


wenn ich schreibe:
Code: [AUSKLAPPEN]
WritePixelFast X, Y, $80FF0000, BackBuffer()


sollte das theoretisch heißen, dass dieser Pixel mit Halbtransparenz gezeichnet wird, das klappt aber nicht, wieso?

Gruß, Mortus
Portfolio |LinkedIn |XING

coolo

BeitragMo, Feb 02, 2009 11:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil die Transparentz in B2D/B+ ignoriert wird...
Wenn du die OH gelesen hättest wärest du schlauer...
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

SpionAtom

BeitragMo, Feb 02, 2009 13:27
Antworten mit Zitat
Benutzer-Profile anzeigen
coolo hat Folgendes geschrieben:
Wenn du die OH gelesen hättest wärest du schlauer...

Wenn du mortus zurechtweist, dann aber bitte auch Darren.


Aber danke für den Tipp mit dem Shiften, man kann es doch öfters gebrauchen als man denkt!
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Jan_

Ehemaliger Admin

BeitragMo, Feb 02, 2009 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
readpixel
writepixel
between angels and insects
 

Darren

BeitragMo, Feb 02, 2009 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
SpionAtom hat Folgendes geschrieben:
coolo hat Folgendes geschrieben:
Wenn du die OH gelesen hättest wärest du schlauer...

Wenn du mortus zurechtweist, dann aber bitte auch Darren.


Aber danke für den Tipp mit dem Shiften, man kann es doch öfters gebrauchen als man denkt!


Sagtmal was hier denn fürn kindergarten!? kannst du eigentlich lesen? Ich habe gesagt, dass ich die ONLINEHILFE nicht verstanden habe. um das behaupten zu können, muss ich schließlich den artikel gelesen haben. sowas lass ich mir mal absolut nicht unterstellen, mein herr....

lg...

PS: Ich hab schon wieder keinen Bock auf das Forum mit diesem ständigen RTFMigen unterton...
MFG Darren

SpionAtom

BeitragMo, Feb 02, 2009 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt die Standaronlinehilfe und die Blitzportalhilfe (Jan hat die Links gepostet).
Und gerade die Blitzportal-Hilfe ist bei Readpixel und Writepixel super ausführlich UND deutsch, und auch die anderen haben nichts anderes geschrieben (bis auf den Shiftzusatz). Und wenn du jetzt keine Fragen mehr hast, weil dir die Posts geholfen haben, kann ich doch davon ausgehen, dass du in der Portalhilfe nicht nachgesehen hast. Bla bla bla... Eigeninitiative... Bla bla bla....
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

BladeRunner

Moderator

BeitragMo, Feb 02, 2009 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
...und ich kann davon ausgehen dass ihr den sinnlosen Flame sofort lasst. Ich kann hier keinerlei Unwillen Darrens erkennen. Dass das Thema eher noobig ist bedeutet ja nicht dass er da die Weisheit mit Löffeln gefressen haben muss.

Und da er von Beginn an nicht nach Alpha fragte ist es im aktuellen Zusammenhang doppelt unpassend ihn zurechtzuweisen.

Also lasst Frieden einkehren, sonst pack ich die Keule aus.
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

juse4pro

BeitragFr, Feb 06, 2009 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe b3d
Portfolio |LinkedIn |XING

Xeres

Moderator

BeitragFr, Feb 06, 2009 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube nicht, dass der Backbuffer Transparenz unterstützt. Texturen mit dem Modus 2 kann man im TEXTUREBUFFER mit Transparenz ausstatten, alles andere wäre mir zumindest neu.
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)

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group