2012-07-20 107 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