【发布时间】:2013-09-18 14:34:31
【问题描述】:
我想在 iOS 设备上渲染 yuv 图像。我认为它可以使用openGL来实现。 (其实我得连续渲染多张这样的图)
我的理解是 GLKit 是 iOS 创建的一个抽象,其中有一个 GLKView 将拥有并处理渲染缓冲区。我目前正在尝试使用GLKViewController,并且正在使用所需的 fps 成功完成帧更新。我通过使用glClear 函数调用来遵守这一点。
现在的任务是在视图上渲染图像。
有一个类GLKBaseEffect 将有基本的着色器。我不知道要设置什么属性,所以我只是创建它并在每次渲染之前调用prepareToDraw。
有一个用于处理纹理的类GLKTextureLoader,但在我看来它只适用于 Quartz 图像,即无法使用此类将 yuv420 平面加载到纹理中。
// create the texture
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, [imageNSData bytes]);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
我使用此代码生成纹理并绑定它,但我真的不知道我要在这里做什么。不管它是什么,它都不会在屏幕上显示任何图像,我不知道下一步该做什么。
我没有创建任何着色器,假设 baseEffect 会有一些东西。
这个https://developer.apple.com/library/ios/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/WorkingwithEAGLContexts/WorkingwithEAGLContexts.html#//apple_ref/doc/uid/TP40008793-CH103-SW8 告诉我,我必须使用 EAGLayer 在屏幕上渲染图像。
我可以使用 GLKit 来渲染图像吗?如果是,我们是否有任何不使用GLKTextureLoader 类的示例代码或教程(我找不到)?如果否,是否有类似的使用EAGLLayer 进行渲染的教程(我到目前为止还没有探索过)?
【问题讨论】:
标签: ios opengl-es rendering glkit