replace old code completely, removed unnecessary blit

This commit is contained in:
SamGondelman 2016-06-29 18:09:46 -07:00
parent 335ed667bb
commit 40d584021a
3 changed files with 6 additions and 20 deletions

View file

@ -647,12 +647,14 @@ void OpenGLDisplayPlugin::withMainThreadContext(std::function<void()> f) const {
}
QImage OpenGLDisplayPlugin::getScreenshot() const {
QImage result;
using namespace oglplus;
QImage screenshot(_compositeFramebuffer->size.x, _compositeFramebuffer->size.y, QImage::Format_RGBA8888);
withMainThreadContext([&] {
static auto widget = _container->getPrimaryWidget();
result = widget->grabFrameBuffer();
auto windowSize = toGlm(_container->getPrimaryWidget()->size());
Framebuffer::Bind(Framebuffer::Target::Read, _compositeFramebuffer->fbo);
Context::ReadPixels(0, 0, _compositeFramebuffer->size.x, _compositeFramebuffer->size.y, enums::PixelDataFormat::RGBA, enums::PixelDataType::UnsignedByte, screenshot.bits());
});
return result;
return screenshot.mirrored(false, true);
}
uint32_t OpenGLDisplayPlugin::getSceneTextureId() const {

View file

@ -38,20 +38,6 @@ QRect HmdDisplayPlugin::getRecommendedOverlayRect() const {
return CompositorHelper::VIRTUAL_SCREEN_RECOMMENDED_OVERLAY_RECT;
}
QImage HmdDisplayPlugin::getScreenshot() const {
using namespace oglplus;
QImage screenshot(_compositeFramebuffer->size.x, _compositeFramebuffer->size.y, QImage::Format_RGBA8888);
auto windowSize = toGlm(_container->getPrimaryWidget()->size());
_compositeFramebuffer->Bound(Framebuffer::Target::Read, [&] {
Context::BlitFramebuffer(
0, 0, _compositeFramebuffer->size.x, _compositeFramebuffer->size.y,
0, 0, windowSize.x, windowSize.y,
BufferSelectBit::ColorBuffer, BlitFilter::Nearest);
Context::ReadPixels(0, 0, _compositeFramebuffer->size.x, _compositeFramebuffer->size.y, enums::PixelDataFormat::RGBA, enums::PixelDataType::UnsignedByte, screenshot.bits());
});
return screenshot.mirrored(false, true);
}
bool HmdDisplayPlugin::internalActivate() {
_monoPreview = _container->getBoolSetting("monoPreview", DEFAULT_MONO_VIEW);

View file

@ -27,8 +27,6 @@ public:
void setEyeRenderPose(uint32_t frameIndex, Eye eye, const glm::mat4& pose) override final;
bool isDisplayVisible() const override { return isHmdMounted(); }
QImage getScreenshot() const override;
QRect getRecommendedOverlayRect() const override final;
virtual glm::mat4 getHeadPose() const override;