Some code:
glBindFramebuffer(GL_FRAMEBUFFER, sceneFBO); { glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); glCullFace(GL_BACK); if(coreManager->getStateManager()->getCurrentState()->getPerspectiveCamera()) coreManager->setActiveCamera(coreManager->getStateManager()->getCurrentState()->getPerspectiveCamera()); displayScene(true, false, lightView, lightDir); doPicking(); } glBindFramebuffer(GL_FRAMEBUFFER, 0);
void GenericManager::doPicking(){ int x = 0; int y = 0; if(this->coreManager->getStateManager()->getCurrentState()) this->coreManager->getStateManager()->getCurrentState()->getMousePos(x,y); GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); y = viewport[3] - y; //port to opengl coords unsigned char pixel[3]; glReadBuffer(GL_COLOR_ATTACHMENT1); glReadPixels((GLint)x, (GLint)y, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, pixel);}