我試圖在iOS 5.0+上使用CVOpenGLESTextureCache將視頻文件作爲紋理應用於OpenGL ES。在OpenGL ES中將紋理傳遞給CVOpenGLESTextureCache以統一
我發現蘋果的RosyWriter示例代碼,並且一直在閱讀它。
我的問題是:
如何紋理終於被交付給制服在片段着色器?
在RosyWriterPreviewView類,我跟着它一路攀升至
glBindTexture(CVOpenGLESTextureGetTarget(texture),
CVOpenGLESTextureGetName(texture))
後爲其指定一些紋理參數。
但是,我沒有看到由示例代碼明確引用的紋理統一(sampler2D videoframe)。紋理,發送代碼,我已經習慣於到會看起來像:
GLint uniform = glGetUniformLocation(program, "u_uniformName");
與後續調用實際紋理髮送到統一:
glUniform1i(GLint location, GLint x);
所以我知道,不知何故RosyWriter是將紋理交給片段着色器中的制服,但我看不到它發生的方式和位置。
事實上,示例代碼包括註釋的地方建立起了OpenGL程序:
// we don't need to get uniform locations in this example
爲什麼這是&如何質地越來越送過來將是巨大的任何幫助。