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.0

    Das 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.53

    Wenn 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. 🙂


  • Mod

    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();


Anmelden zum Antworten