3

ビューアから画像をキャプチャする必要があり、後処理を行って表示する必要があります。今はその最初の部分にもっと興味があります。それはビューアから画像をキャプチャすることです。

OSG を調べているときに、ScreenCaptureHandler に出会いました。しかし、そこから画像を取得できません。

私はまだそれを成し遂げるために取り組んでいますが、他の方法でそれを行う方法や、共有できるスクリーンキャプチャハンドラの例がある場合に備えて.

4

1 に答える 1

3

レンダリングされたビューを画像にキャプチャするには、カスタム 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);

それが役に立てば幸い

于 2013-07-10T09:47:36.413 に答える