如何获取可靠的 QGLWidget 快照

2024-01-31

在我的应用程序中,我拍摄 QGLWidget 内容的快照有两个目的:

  • 当只有覆盖层发生变化时,不要一直重绘场景,而是使用缓存的像素图
  • Lat 用户截取特定绘图的屏幕截图(3D 场景)

我尝试的第一件事是grabFrameBuffer()。对于第一个应用程序来说,使用此功能是很自然的,小部件中当前可见的正是我想要缓存的内容。PROBLEM:在某些硬件上(例如Intel集成显卡、带有GeForce显卡的Mac OS X),获取的图像不包含当前屏幕内容,而是包含之前的内容。因此,如果场景被绘制两次,则在屏幕上您会看到第二次绘制,在图像中您会看到第一次绘制(这应该是后缓冲区的内容?)。

我尝试的第二件事是renderToPixmap()。这渲染使用paintGL(),但不使用paint()。我所有的东西都在里面paint(),因为我使用 Qt 的绘画功能,并且只有一小部分代码使用本机 GL (beginNativePainting(), endNativePainting()).

我还尝试了常规 QWidget 的快照功能(QPixmap::fromWidget(),或它的名称),但 GL 帧缓冲区是黑色的。

关于如何解决该问题并获得当前绘制场景的可靠描述有什么想法吗?


如何获取可靠的 QGLWidget 快照

将当前场景渲染到帧缓冲区,将帧缓冲区中的数据保存到文件。或者在 glFlush 之后获取当前的后备缓冲区。其他任何内容都可能包括伪影或不完整的场景。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取可靠的 QGLWidget 快照 的相关文章

  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • ASP.NET Core 在单例服务上调用异步初始化

    我有一个服务 可以通过名为的方法从文件中异步读取一些内容InitAsync public class MyService IService private readonly IDependency injectedDependency pu
  • 使用 python 通过迭代列表创建 XML 文件

    我正在尝试获取一个如下所示的 xml 文件 以便我可以将其导入到 Moodle 成绩册中
  • 如何确定递归代码的Big-O?

    我有以下代码 这是这个问题的答案 https leetcode com problems add digits https leetcode com problems add digits class Solution public int
  • 同一图中连续的 matplotlib 动画

    我有一个算法 它由两个不同的部分组成 我想依次可视化这两个部分 同时可能在动画 2 开始时在屏幕上保留动画 1 的最终状态 我可以通过调用分别可视化这两个部分animation FuncAnimation and plt show 由于这两
  • Heroku 资产文件始终为空

    首先 我做了很多谷歌搜索 甚至让 Heroku 上的东西正常工作 但似乎无论我是让 Heroku 在 slug 编译期间预编译我的资产 还是我自己预编译它们并提交它们 无论哪种方式 我的 Rails 4 应用程序的 application
  • 解码和理解汇编代码

    所以有一点背景 我是 c 和汇编代码的初学者 我们有一个 炸弹 分配 用 c 编写 它调用需要某些密码的方法 但代码不可见 我需要通过查看汇编代码来确定正确的密码 该代码表明此方法的密码是 6 个数字 该密码作为 输入 传递到方法第 2 阶
  • Google 云端硬盘文件 ID 是全球唯一的吗?

    Google 云端硬盘文件 ID 在全球范围内是唯一的吗 UUID 是否有可能使用生成NSUUID类将与 Google 驱动器文件 ID 相同吗 仅供参考 这不是重复的 Google 文档 驱动器资源 ID 是否全局唯一 https sta
  • 如何从转义闭包中更改 inout 参数?

    我试图从转义闭包中修改函数的参数 如下所示 var completion gt Void func addCompletion closure escaping gt Void completion append closure func
  • jQuery 文件上传显示剩余时间?

    嗨我正在使用jQuery 文件上传 https github com blueimp jQuery File Upload wiki 它工作正常 我向用户显示一个进度条 显示上传进度 代码如下 fileupload fileupload p
  • 让 CMake 使用 gccfilter

    GCC过滤器 http www mixtion org gccfilter 是一个简洁的 Perl 脚本 允许对 GCC 的输出进行着色 从而使调试变得更加有趣 更重要的是 速度更快 您可以通过调用 GCCFilter 与 CMake 生成
  • OpenSSL::SSL::SSLError 仅限 Ubuntu 12.04

    我正在使用 Evernote Ruby API 开发 Web 应用程序 使用 Rails 和 oauth 但是在 Ubuntu 12 04 中运行该应用程序时 我收到错误 SSL connect SYSCALL returned 5 err
  • 使用 applescript 我想将文件夹中的每个文件移动到根文件夹

    我一直在尝试制作一个脚本将文件夹中的每个文件移动到根文件夹以包含每个子文件夹 我不想创建新文件夹 只需将其移动到根文件夹即可 我希望能够选择文件夹 然后仅在该特定文件夹上完成操作 原因是为了组织 我的确切情况是我有超过 TB 的电影 并且文
  • 可以在创建时将字典传递给 django 模型吗?

    是否可以用 a 做类似的事情list dictionary或者是其他东西 data dict title awesome title body great body of text Model objects create data dic
  • jQuery 处理表单

    这是一个非常简单的问题 我希望 但由于只是学习 掌握 jQuery 我提前道歉 如果我有一个表格 例如
  • google docs share 上使用了哪些技术

    我需要理解并知道我该如何做某事 在我的项目中 我需要创建类似于谷歌文档上的技术的东西 当我与其他人共享文档并且他和我同时编辑时 我会看到他的更改 我不知道这是否称为反向ajax或其他类型的技术 有人可以向我解释一下这是一种什么样的发展吗 E
  • Google Play 商店:您需要修复高分辨率图标。这不是有效的图像

    这是我尝试在 Play 商店中为我的应用程序提供图像时收到的错误消息 这是图像 它是在 GIMP 中创建的 请帮忙 这使我无法启动我的应用程序 如 Google Play 商店开发者控制台所述 图标图像应为 512 512 32 bitPN
  • Chrome 不缓存预检

    我正在实现一个应该支持跨域请求的 REST API 我想使用 CORS 来实现这一目标 我的几乎所有请求都是 不简单 的 这意味着对于所有非 GET 请求 浏览器必须发送预检请求 为了限制预检 选项请求的数量 我尝试让浏览器缓存选项请求 这
  • 如何识别 Rails 应用程序中的路线

    我有这个非常基本的问题 我正在用这个仪表板导轨发动机 https github com gottfrois dashing rails 这给了我一个views layouts dashing dashboard html erb 这是仪表板
  • Lombok Builder 注释引发 UnsupportedOperationException

    我在我的项目中使用 Lombok 我的模型看起来像 Builder Data AllArgsConstructor public class ScreenDefinitionDTO Singular private List
  • 如何获取可靠的 QGLWidget 快照

    在我的应用程序中 我拍摄 QGLWidget 内容的快照有两个目的 当只有覆盖层发生变化时 不要一直重绘场景 而是使用缓存的像素图 Lat 用户截取特定绘图的屏幕截图 3D 场景 我尝试的第一件事是grabFrameBuffer 对于第一个