ビューアから画像をキャプチャする必要があり、後処理を行って表示する必要があります。今はその最初の部分にもっと興味があります。それはビューアから画像をキャプチャすることです。
OSG を調べているときに、ScreenCaptureHandler に出会いました。しかし、そこから画像を取得できません。
私はまだそれを成し遂げるために取り組んでいますが、他の方法でそれを行う方法や、共有できるスクリーンキャプチャハンドラの例がある場合に備えて.
ビューアから画像をキャプチャする必要があり、後処理を行って表示する必要があります。今はその最初の部分にもっと興味があります。それはビューアから画像をキャプチャすることです。
OSG を調べているときに、ScreenCaptureHandler に出会いました。しかし、そこから画像を取得できません。
私はまだそれを成し遂げるために取り組んでいますが、他の方法でそれを行う方法や、共有できるスクリーンキャプチャハンドラの例がある場合に備えて.
レンダリングされたビューを画像にキャプチャするには、カスタム osg::Camera::DrawCallback を使用します。
任意の時点でビューをキャプチャするには、カメラに drawCallback を設定し、レンダリングを強制し、NULL コールバックに復元します。
次のコードは、カスタム ビューアーのメンバー関数の一部であることに注意してください (これはおそらくあなたの場合ではありません)。
osgViewer::View::getCamera()->setFinalDrawCallback(new ViewCaptureCallback(img));
osgViewer::Viewer::renderingTraversals();
osgViewer::View::getCamera()->setFinalDrawCallback(NULL);
ViewCaptureCallback は基本的に image->readPixels() を使用してバックバッファから読み取ります。
glReadBuffer( GL_BACK );
osg::GraphicsContext* gc = renderInfo.getState()->getGraphicsContext();
// Here you should process the backbuffer's size and format
image->readPixels(0, 0, gc->getTraits()->width, gc->getTraits()->height, pixelFormat, GL_UNSIGNED_BYTE);
それが役に立てば幸い