オフスクリーン レンダリングを行うためにフレーム バッファ オブジェクトを使用しています。これは私がFBOを初期化する方法です:
glGenFramebuffers(1, &fb);
glBindFramebuffer(GL_FRAMEBUFFER, fb);
glGenRenderbuffers(1, &color_rb);
glBindRenderbuffer(GL_RENDERBUFFER, color_rb);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, windowWidth, windowHeight);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, color_rb);
glGenRenderbuffers(1, &depth_rb);
glBindRenderbuffer(GL_RENDERBUFFER, depth_rb);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, windowWidth, windowHeight);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth_rb);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fb);
私のglutマウス機能では、メインウィンドウでクリックされた場所を使用して読み取り、FBOの対応するピクセル位置にマップして読み取ろうとしています。ただし、オフスクリーンでレンダリングされた FBO ではなく、メイン ウィンドウからピクセル データを取得しているようです。これが私の貪欲なマウス機能です:
Glubyte ピクセル;
glReadBuffer(GL_COLOR_ATTACHMENT0);
glReadPixels(x, windowHeight - y - 1, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, &pixel);
cout << "Pixel clicked: " << (int) pixel << endl;
メインウィンドウでクリック位置を使用して、FBOで対応するピクセル位置を読み取る方法を知っている人はいますか?