在我涉足 OpenGL ES 2.0 的最后一天,在尝试将两个投影纹理(一个精灵动画和一个视频文件纹理)应用到天空盒时,我开始像存根一样简单地敲击键盘,奇迹般地它一切都开始工作了。
但是,从视频文件创建的纹理是颠倒的。换句话说,(0,0) 的纹理坐标似乎映射到 (0,1),反之亦然。
从 CVImageBufferRef 创建视频文件纹理的函数 CVOpenGLESTextureCacheCreateTextureFromImage() 包括参数“CFDictionaryRef textureAttributes”。
CVOpenGLESTextureCache.h 有助于解释:“包含用于创建 CVOpenGLESTexture 对象的属性的 CFDictionaryRef。可能为 NULL。”
我立即想到了 GLKTextureLoader,它允许您传入一个选项字典,其中一个可用选项用于翻转纹理。
所以,我在两点上有点困惑:
传递属性的 CFDictionaryRef 是否可以让我轻松更改有关纹理的内容,例如旋转?或者它在某种程度上意味着着色器意义上的“属性”?(我不认为这很可能意味着着色器感觉,但我也认为将它们称为属性而不是选项很奇怪。)
是否有一个键/值对列表可以告诉它做有用的事情?
在找到其他方法来翻转它之前,我想对此进行研究,因为如果可以在此处进行操作,那么如果该过程确实与 GLKTextureLoader 的选项平行,这似乎是最直接的方法。