使用一维字符数组翻转图像

时间:2010-06-11 07:22:49

标签: c++ opengl arrays

我将图像数据作为一维数组加载到内存中。因为我正在尝试使用OpenGL来绘制它,并且因为它从下往上读取,所以我想在将它们发送到OpenGL之前尝试翻转数组的元素。也许有办法告诉OpenGL从上到下阅读?无论如何,我尝试使用一些排序数组的方法,他们也水平翻转图像,这非常像原始问题。那么我可以只用一种方式翻转数据吗?

2 个答案:

答案 0 :(得分:4)

  

那么我可以只用一种方式翻转数据吗?

是的,你可以。
1D像素阵列由image_width像素的image_height块组成。 一个image_width块是扫描线或一行像素。扫描线按顺序排列。最后一条扫描线从[array_size - image_width]开始,最后一条是[array_size - image_width * 2],依此类推。第一个扫描线从索引零开始,第二个 - 在[image_width],第三个在[image_width * 2]处开始。要翻转,您必须使用第一条扫描线在最后一条扫描线中交换数据并继续这样做。

  

也许有办法告诉OpenGL从上到下阅读?

不,但您可以在您绘制的网格/几何体上翻转纹理坐标。

P.S。弄出来真的很难吗?你可以用笔/纸轻松猜出解决方案。

答案 1 :(得分:0)

正如SigTerm所说,最简单的方法是翻转纹理线。

当你渲染对象时,用glTexCoord2f()翻转你正在调用的坐标。简单地否定宽度。