osgViewer.ScreenCaptureHandler 是一个 OpenSceneGraph (OSG)的屏幕截图处理程序类。
class ScreenCaptureHandler : public osgGA::GUIEventHandler
osgGA::GUIEventHandler#include <osgViewer/ScreenCaptureHandler>
ScreenCaptureHandler(const std::string& format = "png", const std::string& filename = "capture")
构造一个图像格式和文件名的屏幕截图处理程序实例。
format:图像格式,默认为 "png"filename:文件名,默认为 "capture"bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa)
处理事件。
ea:事件适配器,包含事件的信息。aa:事件执行适配器,可以访问事件的目标场景图。void startCapture(osgViewer::ViewerBase& viewer)
开始截图。
viewer:视图器,用于获取场景图。void captureNextFrame()
捕获下一帧。
void stopCapture()
停止截图。
void setCaptureOperation(osgViewer::ScreenCapture::CaptureOperation* co)
设置捕捉操作对象。
co:捕捉操作对象实例。void setCaptureOperation(osgViewer::ScreenCapture::CaptureOperation::Type type, const std::string& filename = "", const std::string& extension = "", bool overrideExistingFile = false, unsigned int numFramesToCapture = 1, unsigned int startFrameNumber = 0, int validExtentX = 0, int validExtentY = 0, int validExtentWidth = 0, int validExtentHeight = 0)
设置捕捉操作。
type:捕捉操作类型,参见 CaptureOperation::Type。filename:文件名。extension:文件扩展名。overrideExistingFile:是否覆盖现有文件。numFramesToCapture:捕捉的帧数。startFrameNumber:起始帧数。validExtentX、validExtentY、validExtentWidth、validExtentHeight:有效区域的的坐标和宽度、高度。void setFileName(const std::string& filename)
设置文件名。
filename:文件名。void setFormat(const std::string& format)
设置图像格式。
format:图像格式。void setCaptureOperationType(osgViewer::ScreenCapture::CaptureOperation::Type type)
设置捕捉操作类型。
type:捕捉操作类型,参见 CaptureOperation::Type。#include <osgViewer/Viewer>
#include <osgViewer/ScreenCaptureHandler>
int main(int argc, char** argv)
{
osgViewer::Viewer viewer;
viewer.setSceneData(...);
osgViewer::ScreenCaptureHandler* capHandler =
new osgViewer::ScreenCaptureHandler();
viewer.addEventHandler(capHandler);
while (!viewer.done())
{
viewer.frame();
}
capHandler->startCapture(viewer);
capHandler->captureNextFrame();
capHandler->stopCapture();
return 0;
}
osgViewer::ScreenCaptureosgViewer::ScreenCaptureHandlerHelper宋健源(Jianyuan Song)
OpenSceneGraph 3.4.1
OSGPL (OpenSceneGraph Public License)