1
我想離屏幕使用的OpenGL ES 2.0和GLSL着色器
我設置FBO渲染使用,它似乎工作,除了有兩個問題
FBO的屏幕外着色慢
1)程序的進展約30 fps的,但所有的突然,它下降到20fps,然後再回到30fps,然後幾秒鐘後,再次下降到20fps,然後回到30fps,等等......(繼續這樣下去),我不知道是什麼原因這個隨機暫停/延遲
2)當我關閉應用程序時,它不響應一段時間。換句話說,似乎有一些數據需要清理或者有些延遲......所以當我關閉程序時,它幾秒鐘之後纔會這樣做。
我做錯了什麼?無論如何,我可以解決這些問題嗎?
這裏是我的代碼:
我初始化功能:
glGenFramebuffers(1,&frameBuf);
glGenRenderbuffers(1,&renderBuf);
glBindRenderbuffer(GL_RENDERBUFFER,renderBuf);
glRenderbufferStorage(GL_RENDERBUFFER,GL_RGBA4,640,480);
glBindRenderbuffer(GL_RENDERBUFFER,0);
glBindFramebuffer(GL_FRAMEBUFFER,frameBuf);
glFramebufferRenderbuffer(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_RENDERBUFFER,renderBuf);
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if(status != GL_FRAMEBUFFER_COMPLETE)
printf("GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT\n");
else
printf("COMPLETE\n");
glBindFramebuffer(GL_FRAMEBUFFER,0);
的我畫功能:
glBindFramebuffer(GL_FRAMEBUFFER, frameBuf);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
GLfloat vertices1[] = {
-1.0,-1.0,-1.0, 1.0,-1.0,-1.0, -1.0,1.0,-1.0,
1.0, 1.0,-1.0, -1.0,1.0,-1.0, 1.0,-1.0,-1.0
};
glVertexAttribPointer(vertexAttr1, 3, GL_FLOAT, GL_FALSE, 0, vertices1);
glEnableVertexAttribArray(vertexAttr1);
GLfloat texCoord[] = {
0.0f,0.0f, 1.0f,0.0f, 0.0f,1.0f,
1.0f,1.0f, 0.0f,1.0f, 1.0f,0.0f
};
glVertexAttribPointer(texCoordAttr1, 2, GL_FLOAT, GL_FALSE, 0, texCoord);
glEnableVertexAttribArray(texCoordAttr1);
glDrawArrays(GL_TRIANGLES, 0, 6);
glBindFramebuffer(GL_FRAMEBUFFER, 0);