2009-04-27 47 views
0

由于我已经开始学习渲染到纹理,我越来越明白glCopyTexSubImage2D()将倒转屏幕的指定部分。我尝试了几个想到的简单的事情,以防止/解决这个问题,但找不到一个优雅的解决方案。修复glCopyTexSubImage2D颠倒纹理

  • 有两个问题与渲染纹理到屏幕前做:: glScalef(1.0F,-1.0F,1.0F): 1,我有我使用这个每次做纹理。 2,我主要使用2D图形,并且关闭GL_BACKsides背面剔除。尽可能多的我很乐意保存这个开关。

  • 尝试将矩阵模式切换到GL_TEXTURE并在捕获时执行:: glScalef(1.0f,-1.0f,1.0f)转换,但结果相同。 (我猜的纹理矩阵只对glTexCoord有影响电话?)

所以,如何解决纹理的上下方向与glCopyTexSubImage2D拍摄的?

回答

1

你打算如何使用纹理图像?实际上,试图将它们翻过来通常需要比将代码移到其他地方更多的工作。

如果您尝试在不导出图像的情况下使用图像,只要翻转纹理坐标,无论您使用结果如何,都将是最有效的方法。

如果您要导出它,那么您要么在渲染后自己翻转它们。

在相关说明中,如果您在制作2D游戏,为什么打开背面剔除?

+0

好点。这是一个猜测优化的例子,我很害怕=)另外,我不需要为这个游戏翻转纹理 - 不管怎样,直到现在。我仍然看到它会变慢多少,但同时,将背面剔除和翻转看起来似乎是最简单和最优雅的解决方案。谢谢! – zyndor 2009-04-28 05:57:57

0

如果我的理解是正确的,这取决于你的起源在哪里。这个函数似乎假定你的原点位于左下角,而大多数二维的东西假设左上角的原点,这就是为什么它看起来颠倒了。

我想你可以改变原点到左下角,做捕捉,然后把原点改回到左上角并在做交换之前再次渲染。但是,这是一个可怕的解决方案,因为你实际上渲染了两次,但如果你不打算每一帧都这样做,它可能会很好。

-1

使用glReadPixels()复制到缓冲区,翻转图像,然后使用glTexImage2D()将其写回。