OpenGL RGB Farbwerte aus Grafikprogramm auslesen und für OpenGL konvertieren?
-
Ich habe ein kleines Problem.
Und zwar möchte ich einen Farbwert aus einem Grafikprogramm
in OpenGL verwenden.Das Problem ist jetzt, das das Grafikprogramm die RGB Werte
in 255 Stufen darstellt. (8 bit Wert)In OpenGL brauche ich aber einen Float Wert z.B. 1.0
Also würden folgende Werte im Grafikprogramm folgendem Wert in OpenGL enstprechen:
255 = 1.0
0 = 0.0Das ist bis jetzt ganz einfach, nur bei den Zwischenwerten,
stimmt da irgendetwas nicht.
Und zwar habe ich die Werte durch einfache Prozentrechnung umgerechnet.1 % von 255 währen 2.55, d.h. 2.55 (was natürlich nicht darstellbar ist) müßte dem OpenGL Wert 0.01 entsprechen.
Und der Wert 134 dem ungefähren OpenGL Wert von 0.53.
Rechnung:
134/2.55 = ca. 52
52 /100 = 0.53Wenn ich jetzt aber einen Screenshot von einem OpenGL Programm mache
und dann den Farbwert eines Objektes im Screenshot mit einem Grafikprogramm auswerte, dann müßte nach der oben gennannten Umrechnung genau der Wert wieder
herauskommen den ich im Source Code des OpenGL Programm eingegeben habe.Das Problem ist jetzt nur, das dieser Wert teilweise manchmal um den Bereich 0.04 abweicht.
Wie kommt das?Gibt es vielleicht im Internet irgendeinen Grafikprogramm zu OpenGL RGB Wert Umrechner?
-
Warum nimmst du dann nicht glColor3ub?
Du kannst doch auch mich char Werten arbeiten.Ansonsten bleibt dir nur der weg
float color = 1.0f / static_cast<float>(oldcolor);
-
SnorreDev schrieb:
Warum nimmst du dann nicht glColor3ub?
Du kannst doch auch mich char Werten arbeiten.Ansonsten bleibt dir nur der weg
float color = 1.0f / static_cast<float>(oldcolor);
Ok, der Fehler lag woanders, das Problem hat sich erledigt.
Ich habe ganz vergessen, daß im OpenGl Spiel noch eine andere Farbe
drüber geblendet wurde, die verfälscht dann natürlich den im Source Code für
dieses Objekt angegebene Farbe.Blöder Fehler aber kann mal passieren.
Das Umrechnen ansich stimmt auf jedenfall.
-
SnorreDev schrieb:
Ansonsten bleibt dir nur der weg
float color = 1.0f / static_cast<float>(oldcolor);
wenn das die umrechnung sein soll die er oben gemeint hat, dann würd für 2 0.5f rauskommen und für 128 sicherlich nichts um 0.5f, bug?
float color = static_cast<float>(oldcolor) * (1.f/255.f);
damit sollte es gehen?
rapso->greets();