How can I generate FBO in IMX8?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How can I generate FBO in IMX8?

Jump to solution
1,314 Views
wooyeoljun
Contributor I

Hi I want to use off-screen rendering in opengles or I want to render to cpu-memory(use rendering result without copy).

I am using Imx8mqevk(wayland).

When I generate Frame Buffer Object(FBO) using glGenFramebuffers (GLsizei n, GLuint *framebuffers), the framebuffer IDs are -256, 0, 1635200867. I think the ID should be 1, 2, 3 like texture ID. 

Also, the return value of glCheckFramebufferStatus() is not GL_FRAMEBUFFER_COMPLETE. 

below is my code. Could you let me know if I'm wrong or suggest another method for rendering to cpu-memory. 

Thank you.

-----------------------------------------------------------------------------------CODE-----------------------------------------------------------------

GLuint fboHandle, depthBuffer, fboTex;
glGenRenderbuffers(1, &depthBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24_OES, 1280, 720);
glBindRenderbuffer( GL_RENDERBUFFER, 0 );

glGenTextures(1, &fboTex);
glBindTexture(GL_TEXTURE_2D, fboTex);
glTexImage2D( GL_TEXTURE_2D,
0,
GL_RGBA,
1280, 720,
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
NULL);
glBindTexture(GL_TEXTURE_2D, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

glGenFramebuffers(1, &fboHandle);
cout << "fboHandle: " << fboHandle << endl;
glBindFramebuffer(GL_FRAMEBUFFER, fboHandle);


glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER_APPLE, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fboTex, 0);
glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER_APPLE, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer);

// FBO status check
GLenum status;
status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
switch(status) {
case GL_FRAMEBUFFER_COMPLETE:
cout<<"fbo complete"<<endl;
break;

case GL_FRAMEBUFFER_UNSUPPORTED:
cout<<"fbo unsupported"<<endl;
break;

default:
/* programming error; will fail on all hardware */
cout<<"Framebuffer Error"<<endl;
break;
}

---------------------------------------------------------------------------------------------------------------------------------------------------

0 Kudos
1 Solution
1,020 Views
igorpadykov
NXP Employee
NXP Employee

Hi wooyeol 

please check attached i.MX Graphics User's Guide document.

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

View solution in original post

0 Kudos
1 Reply
1,021 Views
igorpadykov
NXP Employee
NXP Employee

Hi wooyeol 

please check attached i.MX Graphics User's Guide document.

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos