Texture in OpenGL ES 2 looks pixelated

Moderator
Posts: 1,552
Joined: 2003.10
Post: #7
(Aug 26, 2011 10:59 AM)vunterslaush Wrote:  Screenshot
BTW, after second thoughts, I enlarged a bit the GL texture so it will be more similar to the image view version, and it does look pretty identical. except for that black outline sorta thing. How can I fix that?

Aha, you've hit another classic problem. Short version: Your texture appears to be using premultiplied alpha; use glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA) and the black halo should disappear.

Longer version: A bitmap image with premultiplied alpha has its R, G, and B components scaled by the A component, and has to be composited differently in order to be drawn without semi-transparent portions looking darker than they should. For example, 50% transparent red would be 0x7F00007F premultiplied, rather than 0xFF00007F unpremultiplied. This has some advantages, though; when pixels are interpolated due to image scaling, transparent color values mingle with opaque ones in a way that can cause black or white halos (depending on a few things) around edges in a nonpremultiplied image. Premultiplied images (when composited correctly) categorically avoid this problem, because the math works out correctly when transparent pixels blend with opaque ones.

There's more information about this scattered around the forum. Here's another thread about it: http://www.idevgames.com/forums/thread-966.html

As for why your pixels are premultiplied, I presume you're loading the texture with UIImage or some other Apple API? Apple's image loading functions will typically premultiply your data for you, though in some cases you can disable it. If you want to load the image without premultiplying, you can (maybe? haven't done it in a while) change the options you use to load the image, or use libpng directly.

(Aug 26, 2011 10:59 AM)vunterslaush Wrote:  BTW, ThemsAllTook, thanks a lot for everything!!! You are helping me big time, I owe you! Smile

It's my pleasure! I always enjoy helping someone who puts the proper effort into understanding things and formulating their questions as well as you have.
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: Texture in OpenGL ES 2 looks pixelated - ThemsAllTook - Aug 26, 2011 11:51 AM
Possibly Related Threads...
Thread: Author Replies: Views: Last Post
  OpenGL ES Texture Compression ajrs84 9 599 May 7, 2013 03:36 PM
Last Post: ajrs84
  OpenGL ES Texture Masking airfire 5 11,504 Nov 14, 2012 09:36 AM
Last Post: toanNguyen
  OpenGL ES Texture Masking dalasjoe sin 0 3,157 Apr 13, 2012 12:17 AM
Last Post: dalasjoe sin
  Lighting and changing texture colors in OpenGL agreendev 2 6,149 Aug 13, 2010 03:47 PM
Last Post: agreendev
  OpenGL ES Texture Problems jhbau1000 1 4,433 Jul 12, 2010 05:57 AM
Last Post: Kezhaya