Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Picking using glReadPixels & glBindFramebuffer

112 views
Skip to first unread message

redho...@gmail.com

unread,
Aug 9, 2018, 1:18:41 PM8/9/18
to
I'm trying to implement picking using a framebuffer generated using glGenFramebuffers, but glReadPixels returns invalid enum whenever I have called glBindFramebuffer():


Picking code:

int data[4];
glBindFramebuffer(GL_FRAMEBUFFER, picking_fb);
draw_scene();
glReadPixels(x, height - y, 1, 1,
GL_RGBA, GL_INT,
(GLvoid *) data);

What combinations of type and format works with what texture format? I would like to use a non-byte format, as I need to fit more data per pixel than 4 bytes...


Code to generate the FB

glGenTextures(1, &color_tex);
glBindTexture(GL_TEXTURE_2D, color_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_RGBA16, overlay_attr.width, overlay_attr.height, 0, GL_RGBA, GL_FLOAT, NULL);
glGenFramebuffers(1, &picking_fb);
glBindFramebuffer(GL_FRAMEBUFFER, picking_fb);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, color_tex, 0);
glGenRenderbuffers(1, &depth_rb);
glBindRenderbuffer(GL_RENDERBUFFER, depth_rb);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, 256, 256);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth_rb);
glBindFramebuffer(GL_FRAMEBUFFER, picking_fb);

Any ideas?

zhuyu...@gmail.com

unread,
Aug 22, 2018, 10:18:45 PM8/22/18
to
GL_INT ? Try to check it maybe...
0 new messages