Durchsichtigkeit bestimmter Farben bei Texturen
-
Hallo Leute,
ich versuch grade so eine runterklappbare Konsole für Debugausgaben zu proggen.
Die Schrift dafür lade ich ähnlich wie in dem NeHe - Tutorial 24 beschrieben.
Wenn ich den Text in der Konsole ausgebe, soll dieser aber ohne schwarzen Hintergrund sein. Deshalb will ich machen, dass alles was schwarz ist, transparent dargestellt wird.
Wie kann ich denn dann so einzelne Farben aus Texturen durchsichtig/unsichtbar darstellen?
-
OpenGL, DirectX, WinAPI?
-
Und wie stell ich des in OpenGL an?
-
Hm du könntest z.B. das Texturformat RGBA machen und den Alphachannel für die Transparenz nutzen. Und dann halt überall wo Schwarz ist den Alphachannel auf 0 setzen.
Obs jetzt direkt nen Colorkey in OpenGL gibt weis ich nicht. Musst mal warten, ob noch andere Antworten kommen^^
-
Und so dass einfach eine bestimmte Farbe (bei mir schwarz) ausgeblendet wird geht nicht?
Danke
-
Das wäre bei Directx Color Keying google doch einfach mal danach + opengl vielleicht findest du da ja was
-
Ich hab da gerade was von glTexEnv() gelesen,damit müsste es gehen, aber die Definitionen waren so komisch, kann mir einer bitte erklären was glTexEnv macht?
-
color-keying gibt's in opengl nicht - du wirst also den alpha-kanal benutzen muessen oder deine farbe so waehlen muessen, dass sie die transparenzstaerke darstellen (dh schwarz und weiss).
-
Ok, danke hellihjb.
Die Farbe, die ich wegblenden will, also anstatt der die dahinter liegende Farbe angezeigt wird, ist schwarz.
Wie hast du gemeint dass ich sie wegblenden kann?
-
die blendfunktion ist ja
"A * vordergrundfarbe + B * hintergrundfarbe"
dh damit das schwarz des vordergrunds durchsichtig wird (also die hintergrundfarbe erhalten bleibt) setzt du fuer "B" GL_ONE_MINUS_SRC_COLOR (1-schwarz=1) und fuer "A" das was dir am geeignetsten erscheint, zb GL_ONE.
sinnvoller waere aber eben ein alpha-kanal...
-
habe ich gerade gestern fuer ne FPS-anzeige gemacht, ich lade da jedes digit (also 0 bis 9) aus nem 24bit TGA, und errechne mir den alpha-kanal aus R+G+B/3... dadurch werden helle stellen stark sichtbar, dunkle wenig bis gar nicht...
musst aber natuerlich blending aktivieren, vorher. und beim texturladen auch RGBA einstellen.