Tag: fbo

OpenGL ES FBO缩放

这个问题跟随Matic Oblak推荐的原始问题 一旦FBO被设置并渲染,渲染后的图像如何提供回默认渲染缓冲区并以缩放版本显示。 -(void)setupFBO { glGenTextures(1, &tex); glBindTexture(GL_TEXTURE_2D, tex); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL); glGenFramebuffers(1, &fbo); glBindFramebuffer(GL_FRAMEBUFFER, fbo); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0); } 首先呈现给FBO: -(void)glkView:(GLKView *)view drawInRect:(CGRect)rect{ glBindFramebuffer(GL_FRAMEBUFFER, fbo); glViewport (0, 0, 160, 144); glClearColor (1.0f, 0.0f, 0.0f, […]

OpenGL ES到iOS中的video(渲染为具有iOS 5纹理caching的纹理)

你知道苹果的CameraRipple效果的示例代码? 那么我试图在openGL完成水的所有酷的效果之后将相机输出logging在文件中。 我用glReadPixels完成了这个工作,在这里我读取了void *缓冲区中的所有像素,创buildCVPixelBufferRef并将其附加到AVAssetWriterInputPixelBufferAdaptor中,但速度太慢,因此readPixels需要大量的时间。 我发现使用FBO和纹理现金你可以做同样的事情,但更快。 下面是我在Apple使用的drawInRect方法中的代码: CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, (__bridge void *)_context, NULL, &coreVideoTextureCashe); if (err) { NSAssert(NO, @"Error at CVOpenGLESTextureCacheCreate %d"); } CFDictionaryRef empty; // empty value for attr value. CFMutableDictionaryRef attrs2; empty = CFDictionaryCreate(kCFAllocatorDefault, // our empty IOSurface properties dictionary NULL, NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); attrs2 = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); […]