Jump to content

  • Log In with Google      Sign In   
  • Create Account


How to color a grayscale texture removing the alpha channel?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 redcoding   Members   -  Reputation: 110

Like
0Likes
Like

Posted 31 December 2012 - 09:30 AM

Hello,

I need some help understanding what I am doing wrong.

I am drawing text into a texture and then render this texture to the screen. The texture used is a grayscale texture. Why? Because the tutorial I have the code from says it saves memory. OK, so I have white text that I need to color. That means I want to color my grayscale texture when I am drawing it. But the result turns out to be unsatisfying.

I am drawing the texture with a quad, each vertex getting the color red and full alpha (1,0,0,1);

Result 1:
bildschirmfoto20121230un.png
I use this code for blending:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

The red is as expected (full red), but the alpha channel is opaque.




Result 2:
bildschirmfoto20121230ub.png

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);

With this code, I can remove the black background, but the red is rather pale.

Which settings could I use to remove the black background and keep the full red color? Or is this not possible and I should use an RGBA texture in the first place? I could then color the text when rendering it to the texture. Anyway, I want to understand what is going on, before I decide to spend more memory.


Edited by redcoding, 31 December 2012 - 09:37 AM.


Sponsor:

#2 Aroidzap   Members   -  Reputation: 636

Like
0Likes
Like

Posted 01 January 2013 - 02:47 AM

Hi :)

 

I don't know if it will work, but try this (I've used it somewhere)

glEnable(GL_BLEND);
glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_DST_ALPHA);

:)



#3 C0lumbo   Crossbones+   -  Reputation: 2204

Like
0Likes
Like

Posted 01 January 2013 - 04:07 AM

One option might be to remove your vertex colours, then colour your text using GL_CONSTANT_COLOR/glBlendColor but this is not a good solution as it means you can't combine different coloured text into a single draw call.

 

Your better bet is to get your texture information into your alpha channel somehow, I think the easiest way to achieve this is to use the GL_INTENSITY format instead of the GL_LUMINANCE or GL_RGB format that I assume you're using at the moment.



#4 Sik_the_hedgehog   Crossbones+   -  Reputation: 1608

Like
0Likes
Like

Posted 01 January 2013 - 04:18 AM

I don't get why it doesn't work either... Make sure that when setting the modulation color you don't mess with the alpha channel somehow, though no idea how it could be affected (would need to know more about how your program works).

 

Also are you sure the red is more pale in the second pic? That looks more like an optical illusion because the background is brighter than black. Also, why do you need separate color and alpha? Black outline? Because if you just want a single color like in the second pic you could ditch the alpha altogether and stick to the single color channel (and halve memory usage, as a bonus).

 

EDIT: I think I know why it may not be working, is the texture in decal mode, by any chance? (wild guess here)


Edited by Sik_the_hedgehog, 01 January 2013 - 04:21 AM.

Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS