2012-07-20 36 views
0

在我涉足的OpenGL ES 2.0的过去一天,同时试图应用两种投影纹理 - 一个精灵动画和一个视频文件纹理 - 到空中包厢,我一开始只是我的冲击双手像键盘一样在键盘上,奇迹般地开始工作。翻转的OpenGL ES纹理获得通过CVOpenGLESTexture

然而,从视频文件中创建的纹理翻转倒置。换句话说,(0,0)的纹理坐标似乎映射到(0,1),反之亦然。

从CVImageBufferRef,CVOpenGLESTextureCacheCreateTextureFromImage()创建视频文件纹理的函数包含一个参数“CFDictionaryRef textureAttributes”。

CVOpenGLESTextureCache.h有益解释道:“含有CFDictionaryRef属性被用于创建CVOpenGLESTexture对象可以为空。”。

我马上想到GLKTextureLoader,它允许您在选择字典传球,用一个可用选项被用来翻转过来,质感。

所以,我有点糊涂了两点:

  1. 将在CFDictionaryRef传递的属性让我很容易地改变有关纹理的事情,比如旋转?或者它在某种程度上意味着在着色器意义上的“属性”? (我认为这不太可能意味着着色器的意义,但我也认为它称之为属性而不是选项是奇怪的。)

  2. 是否有列表的某个键/值对它做有用的事情?

我想看看这个发现了一些其他的方式来左右翻转,因为如果有可能在这里做它,它似乎像以前一样,将是最直接的方式,如果程序确实平行GLKTextureLoader的选项。

回答

0

通过再次阅读苹果的RosyWriter示例代码后,我意识到在使用CVOpenGLESTextureCacheCreateTextureFromImage()创建纹理后,他们通过修改顶点的纹理坐标来翻转纹理。

由于我突出的质感和计算在顶点着色器的纹理坐标,我觉得对我来说最简单的解决方法是将左右翻转实际的电影文件的资产之前,我把它扔到Xcode中。所以这可能是我为每部电影所做的。刚刚意识到这是一个简单的解决方案。这样我就不需要为我需要旋转的投影分配顶点着色器代码&不需要旋转。

我还是很感激澄清属性参数但是,如果任何人对这些信息。

+0

关于属性,我从来没有使用它们作为NULL以外的任何东西。如果您看到标题顶部附近,则会看到'// textureAttributes - 保留供将来使用'。不记得他们是否为iOS 6.0添加了任何内容。 – 2012-07-21 01:04:59