WritePixelFast - Wie komm ich an den RGB-Wert?
Übersicht

DarrenBetreff: WritePixelFast - Wie komm ich an den RGB-Wert? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
cool danke für die schnelle antwort, aber was soll diese komische multiplikation mit diesm string? hab ich da iwas verpasst? | ||
MFG Darren |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ACHSO! ![]() Sagt das halt gleich xD |
||
MFG Darren |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() Das muss ich nicht checken oder? ![]() |
||
MFG Darren |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
readpixel![]() writepixel ![]() |
||
between angels and insects |
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
...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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich habe b3d | ||
Portfolio |LinkedIn |XING |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube nicht, dass der Backbuffer Transparenz unterstützt. Texturen mit dem Modus 2 kann man im TEXTUREBUFFER![]() |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group