[Fluxus] texture types (was Re: png diagonal oddness)

Claude Heiland-Allen claude at goto10.org
Fri Jan 21 06:21:45 PST 2011


On 21/01/11 06:58, David Griffiths wrote:
> On Thu, 2011-01-20 at 22:26 +0100, Kassen wrote:
>>          Yeah, I think that could be the problem.
>
> The problem is lack of an alpha channel. It's skewed in that way as it's
> expecting 4 bytes per pixel but it's getting 3.

[snip]

I suspect it's more subtle:

http://www.opengl.org/sdk/docs/man/xhtml/glPixelStore.xml

in particular: GL_UNPACK_ALIGNMENT

To be more explicit: pixels are contiguous in each row, but there might 
need to be gaps between the rows in memory as each row needs to start 
aligned to a certain number of bytes.  With 4 channels (RGBA) this works 
fine with the default alignment of 4, but with 3 channels you'd need a 
multiple of 4 pixels in each row otherwise you'd get diagonal weirdness 
(and potentially a buffer overflow crash).

glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // potential fix

Similar alignment issues occur reading back from the GPU, with 
corresponding GL_PACK_ALIGNMENT.


Claude



More information about the Fluxus mailing list