Tag: framebuffer

iOS GLKit并返回到默认帧缓冲区

我正在运行XCode为iOS的OpenGL项目创build的锅炉板OpenGL示例代码。 这设置了一个简单的ViewController,并使用GLKit来处理剩下的工作。 应用程序的所有更新/绘制function都在C ++中。 它是跨平台的。 有很多帧缓冲创build正在进行。 绘制阶段渲染到几个帧缓冲区,然后尝试将其设置回默认帧缓冲区。 glBindFramebuffer(GL_FRAMEBUFFER, 0); 这会生成一个GL_INVALID_ENUM。 只在iOS上。 为什么我完全被难住了。 代码在除iOS之外的所有主要平台上运行良好。 我想要责怪GLKit。 任何不使用GLKit的iOS OpenGL设置示例? UPDATE 以下代码片段让我看到GLKit正在使用的默认帧缓冲区。 出于某种原因它出现为“2”。 果然,如果我在我所有的glBindFrameBuffer调用中使用“2”,它就可以工作。 这是非常令人沮丧的。 [view bindDrawable ]; GLint defaultFBO; glGetIntegerv(GL_FRAMEBUFFER_BINDING_OES, &defaultFBO); LOGI("DEFAULT FBO: %d", defaultFBO); 究竟是什么原因会导致GLKit在0时不生成内部帧缓冲? 这是OpenGL使用的所有其他语义的语义,0是默认的FBO。

– 第二次失败?

我正在开发一个iOS的OpenGL ES应用程序。 我正在做通常的EAGLView / ES2Render的东西。 启动时,frambuffer创build成功,使用以下代码: – (BOOL) createFramebuffers { [EAGLContext setCurrentContext:_mainContext]; // [ A ] On-screen // 1. Framebuffer glGenFramebuffers(1, &_mainFramebuffer); bindFramebuffer(_mainFramebuffer); // 2. Color buffer glGenRenderbuffers(1, &_mainColorbuffer); bindRenderbuffer(_mainColorbuffer); // Adjust size to view's layer: CAEAGLLayer* layer = (CAEAGLLayer*)[_view layer]; if (![_mainContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer]) { // something went horribly wrong NSLog(@"-[ES2Renderer createFramebuffers]: Failed to […]

使用glReadPixel()与多重采样读取数据

目前我正在尝试从帧缓冲区中读取像素数据以捕获IOS中的屏幕。 使用下面的代码来设置帧缓冲区时,GlreadPixels命令工作正常。 //buffers // Create a depth buffer that has the same size as the color buffer. glGenRenderbuffersOES(1, &m_depthRenderbuffer); glBindRenderbufferOES(GL_RENDERBUFFER_OES, m_depthRenderbuffer); glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT24_OES, width, height); // Create the framebuffer object. glGenFramebuffersOES(1, &framebuffer); glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer); glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, m_colorRenderbuffer); glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, m_depthRenderbuffer); glBindRenderbufferOES(GL_RENDERBUFFER_OES, m_colorRenderbuffer); glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer); 但是当我使用深度缓冲区和颜色缓冲多采样glreadpixels()不捕获任何像素数据像以前的代码….多采样我使用以下代码: – glGenFramebuffersOES(1, &sampleFramebuffer); glBindFramebufferOES(GL_FRAMEBUFFER_OES, sampleFramebuffer); //GLuint sampleColorRenderbuffer; glGenRenderbuffersOES(1, […]