OpenGL pixels drawn with each horizontal pair swapped

瘦欲@ 提交于 2020-01-24 11:51:21

问题


I'm somewhat new to OpenGL though I'm fairly sure my problem lies in the pixel format being used, or how my texture is being generated...

I'm drawing a texture onto a flat 2D quad using a 16bit RGB5_A1 pixel format, though I don't make use of any alpha at this stage. The problem I'm having is that each pair of horizontal pixel values have been swapped.

That is... if the pixels positions should be in this order (assume 8x2 image)

0 1 2 3 
4 5 6 7

they are instead drawn as

1 0 3 2
5 4 7 6

Or, more clearly from this image (below). Left is what I get... Right is what I should get.

.

The question is... How have I ended up with this? Is there something wrong with the pixel format? Unlikely since the colours all appear correct, and I would expect all kinds of nasty if it were down to endian-ness. Suggestions greatly appreciated.

Update: Turns out the problem was in my source renderer. Interestingly, I've avoided the problem entirely by using 32-bit textures (haven't tried 24-bit at this point).


回答1:


This may be unrelated, and you have found a workaround, but it could be related to OpenGL unpack alignment. Have you tried with the following call ? To instruct the alignment of every image row to 1 byte (default is 4).

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);



来源:https://stackoverflow.com/questions/4666202/opengl-pixels-drawn-with-each-horizontal-pair-swapped

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!