1

OpenGL ES 2.0 に足を踏み入れた前日、2 つの射影テクスチャ (1 つのスプライト アニメーションと 1 つのビデオ ファイル テクスチャ) をスカイボックスに適用しようとしたとき、単純にキーボードをスタブのように叩き始めました。すべてが機能し始めました。

ただし、ビデオ ファイルから作成されたテクスチャは上下逆になっています。つまり、(0,0) のテクスチャ座標は (0,1) にマッピングされているように見え、その逆も同様です。

CVImageBufferRef からビデオ ファイル テクスチャを作成する関数 CVOpenGLESTextureCacheCreateTextureFromImage() には、パラメータ「CFDictionaryRef textureAttributes」が含まれています。

CVOpenGLESTextureCache.h は、「CVOpenGLESTexture オブジェクトの作成に使用される属性を含む CFDictionaryRef です。NULL の場合があります」と説明しています。

私はすぐに GLKTextureLoader を思いつきました。これにより、オプション ディクショナリを渡すことができ、使用可能なオプションの 1 つを使用してテクスチャを反転させることができます。

だから、私は2つの点で少し混乱しています:

  1. 属性の CFDictionaryRef を渡すと、回転などのテクスチャに関することを簡単に変更できますか? それとも、シェーダー的な意味での「属性」を意味するのでしょうか? (シェーダー感覚を意味する可能性は低いと思いますが、オプションではなく属性と呼ぶのも奇妙だと思います。)

  2. 有用なことを行うように指示するキーと値のペアのリストはどこかにありますか?

ここでそれを行うことが可能であれば、手順が実際にGLKTextureLoaderのオプションと並行している場合、それが最も簡単な方法であるように思われるので、それを裏返す他の方法を見つける前にこれを調べたかった.

4

1 に答える 1

0

Apple の RosyWriter サンプル コードをもう一度読んだ後、CVOpenGLESTextureCacheCreateTextureFromImage() でテクスチャを作成した後、頂点のテクスチャ座標を変更してテクスチャを反転させていることに気付きました。

私はテクスチャを投影し、頂点シェーダでテクスチャ座標を計算しているので、Xcode にドロップする前に実際のムービー ファイル アセットを反転させるのが最も簡単な解決策だと思います。それがおそらく、各映画で私がすることです。それがどれほど単純な解決策であるかに気づきました。そうすれば、回転する必要がある投影と回転する必要のない投影のために、頂点シェーダー コードをフォークする必要がなくなります。

誰かがそれについての情報を持っていれば、私はまだ属性引数の明確化を本当に感謝しています.

于 2012-07-21T00:36:29.597 に答える