transparent

Started by
16 comments, last by Kalidor 17 years, 7 months ago
Quote:Original post by EvilKnuckles666
well that fixed it, is there a way to disable the "smooth" thing? because it's like I see a fine line of black pixels at the edge of my texture that has the alpha test
That "smooth thing" is called (bi)linear texture filtering. You disable it by using GL_NEAREST for the minification and magnification filtering modes instead of GL_LINEAR. The reason you get a black color at the edge of your texture is because the transparent pixels in the image are black, so when the texture is filtered you get some mix of (0,0,0,0) and your opaque color.

One way to "fix" this while still being able to use linear filtering is to simply use a different color for the transparent pixels that more closely match the pixels at the border of opaque->transparent. This will still have some artifacts where the colors don't match perfectly but it is much less noticeable and may be adequate for your purposes. The correct way is to extrude the colors at that border into the transparent pixels.
Advertisement
sweet, everything looks great now thanks :) is that a lot slower though because i can't really tell but it just kinda looks and feels little.. jittery
-------------------------Unless specified otherwise, my questions pertain:Windows Platform (with the mindset to keep things multi-platform as possible)C++Visual Studio 2008OpenGL with SFML
Quote:Original post by EvilKnuckles666
sweet, everything looks great now thanks :) is that a lot slower though because i can't really tell but it just kinda looks and feels little.. jittery
Which method are you using? Using nearest filtering should be slightly faster than linear filtering, although it will most likely be unnoticeable. The other two methods will have no run-time cost at all, they should be done at load-time or even before... it's possible to do it at content-creation-time (ie: have the artists make the images with the proper background or colors extruded already, then you won't need to do anything different at load-time).
You can also try different values for glAlphaFunc, using a higher value reduces the blurry border.
---Current pet project: ProjectM
the Alpha channel has nothing to do with the RGB channels, if you are (for example) attempting drawing vegetation, bush. The textures should look like all green, with bush detail in the middle.
The alpha channel will do the visibility job.
You DONT have to put a unique RGB color for the transparent color (like purple, green or black).
With opengl, Use RGBA texture (Anyway in the VRAM they will be RGBA)
You don't have to use a key color if your texture format allows for an alpha channel. But if you are using 24 bit textures for example, which don't provide an alpha channel, key coloring is your tool of choice. Just replace the key color with a 0-alpha color at load time.
If I was helpful, feel free to rate me up ;)If I wasn't and you feel to rate me down, please let me know why!
glpng is a nice library that will load and bind .PNG's to textures pretty easily, I would recommend them over using a color key.
My Current Project Angels 22 (4E5)
I just wanted to clarify that in my posts I did not mean to imply using a color key when I talked about the color of transparent pixels. What I meant was simply the RGB components of RGBA pixels where alpha=0. My second suggestion, if done at load-time, could be thought of as the reverse of color-keying. The pixels are already transparent and you're just setting the RGB values to a certain color to minimize the linear interpolation artifacts.

This topic is closed to new replies.

Advertisement