OpenGL - 与未来的上下文共享现有纹理?

2023-11-29

我有一个应用程序,可以使用 FBO 扩展将帧绘制到纹理上。

然后这些帧将显示到打开的不同窗口while应用程序正在运行。这意味着可以在创建任何新窗口的 OpenGL 上下文之前创建和池化纹理,并且wglShareLists叫做。

目前我必须做glReadPixels, glMapBufferRange and glTexSubImage将纹理移动到不同的窗口上下文中,这是相当低效的。

关于如何改进这一点有什么想法吗?我是否应该在程序启动期间创建多个(与任何时间的最大窗口数 ~4 一样多)OpenGL 上下文和隐藏窗口?这样做的开销是多少?

或者更好的是,有没有一种方法可以使现有和现有的纹理共享futureOpenGL 上下文?


OpenGL 上下文之间的共享列表也将共享封装缓冲区对象(纹理、顶点缓冲区对象、像素缓冲区对象)的所有数据,但不共享抽象集合对象(帧缓冲区对象、顶点数组对象)。在新上下文中创建任何新的命名对象之前,必须创建共享,因为在共享之前创建名称可能会导致命名空间冲突。已创建的对象是共享的。但这当然需要预防措施,因为如果上下文 A 和 B 都有 ID=1 的纹理会发生什么?然而,如果 A 有很多纹理而 B 没有,那么 A 的纹理名称可以很好地转移到 B。这就是警告。

但是,如果您只想渲染到多个窗口:只要它们的 PIXELFORMATDESCRIPTOR 兼容,就完全可以在任意数量的窗口上使用单个 OpenGL 上下文。这就是 wglMakeCurrent 的 HDC 参数的用途。如果上下文严格绑定到单个窗口,则 wglMakeCurrent 只有一个 HRC 参数。

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

OpenGL - 与未来的上下文共享现有纹理? 的相关文章

随机推荐

  • 打字稿错误:“对象”类型的参数无法分配给“{}[]”类型的参数

    我正在使用角度材质表组件像这样 this userService getUsers subscribe response gt this users new MatTableDataSource response 它可以工作 但是在编译时会
  • sscanf 修饰符 %Fd 扫描什么类型?

    我遇到过一些具有以下类型行的遗留代码 sscanf szBuff Fd Ff Fd Ff 有人见过 Fd 或 Ff 这样的修饰符吗 如果是这样 这意味着什么 我似乎找不到任何有关它的信息 代码编译并运行良好 C 说对于fscanf功能 C9
  • Python ctypes:访问冲突

    我正在尝试为第 3 方 C DLL 编写一个 Python 包装器 功能WolaInit初始化库并返回用于后续函数调用的句柄 import ctypes Load WOLA DLL into memory wolaDLL ctypes Wi
  • 将SQL文件导入mysql

    我有一个名为nitm 我还没有在那里创建任何表格 但我有一个 SQL 文件 其中包含数据库的所有必需数据 该文件是nitm sql这是在C drive 该文件大小约为 103 MB 我正在使用 wamp 服务器 我在 MySQL 控制台中使
  • 如何获取桌面位置?

    我在 Windows 上使用 Python 我希望脚本的一部分将文件从某个目录 我知道它的路径 复制到桌面 我用过这个 shutil copy txtName HOMEPATH desktop While txtName是 txt 文件的名
  • Pydantic 中的 parse_obj 字段是异构元组?

    在 Pydantic 类中 class Foo BaseModel bar str baz int 可以从元组导入 aaa 3 通过做类似的事情 key tr i for i key in enumerate fields TraceIte
  • qt qml 对象已经有一个 QQmlContext

    我想从本地获取 json 文件并使用以下命令将其发送到 QML include
  • 将二进制文件读入R

    我正在尝试将二进制文件读入 R 但该文件包含以二进制代码编写的数据行 因此 它没有属于一列的完整数据集 而是存储为数据行 我的数据如下所示 Bytes 1 4 int ID Byte 5 char response character By
  • 实体框架执行的精确sql查询

    这个问题似乎很清楚 但我会添加一个案例 using var context new MyEntities if context mytable Any row gt row myfield 2 do something here 我是实体框
  • 使用文件的内容将其重命名[重复]

    这个问题在这里已经有答案了 我有大约 20 MB 大小的二进制数据文件 文件名是随机的 全部以 AA 开头 在每个文件的内容中 它们在固定位置都有一个特定的字符串 在所有文件中从第 2086 个字节开始 我想读取由 2 个单词组成的字符串
  • 使用 Express,我可以自动修剪 req.body 中所有传入的 POSTed 字段吗?

    我开始使用表达形式使用我的 api Express 3 3 8 来修剪传入的 POSTed 字段的前导和尾随空白 但是 我相信要使用它 我必须将中间件中的表单字段和规则包含到我的路由中 如下所示 app post api test form
  • CSS 按钮永久按下状态

    我试图让一个按钮在点击时保持按下状态 然而 我正在使用的盒子阴影部分和 CSS 活动状态部分都让我感到困惑 我知道考虑到这段代码这是可行的 http jsfiddle net UEkBQ 这是我正在使用的代码 http jsfiddle n
  • 如何提取 Pandas 中的年、月、日? [复制]

    这个问题在这里已经有答案了 我有一个数据框 其中有一列名为 fecha dato 它存储日期如 2016 05 28 我想从 fecha dato 中以 int 形式提取 2016 05 和 28 作为名为年 月和日的新列 我使用迭代器方式
  • 切换变量以供外部使用

    The goal 在 a 中声明一些变量switch并在外部使用 问题 我不知道语法 我在想什么 为了解决我的问题 我想做这样的事情 但行不通 因为这只是一种哲学 public ActionResult Compare int id str
  • 在 C++ 中查找数组的模式(最常见的元素)

    我在面试问题中遇到过这个 我想看看 StackOverflow 将如何做到这一点 Bjarne Stroustrup 会怎么看待我的方式 有点罗嗦 但不幸的是我不知道如何让它变得更好 我知道你们会嘲笑我的愚蠢 template
  • 解析字符串antlr

    我将字符串作为解析器规则而不是词法分析器 因为字符串可能包含带有表达式的转义符 例如 The variable is variable string character character escapeSequence escapeSequ
  • CUDA 中的 std::vector 到数组

    有没有办法将 2D 矢量转换为数组以便能够在 CUDA 内核中使用它 它被声明为 vector
  • 比较 NSDate 的某些组件?

    我如何仅比较 2 的年月日组成部分NSDates 所以你应该这样做 NSCalendar calendar NSCalendar currentCalendar NSInteger desiredComponents NSDayCalend
  • 对于 React + TypeScript 变量:在组件的“props”中强制执行某些属性

    我想要一个变量 实际上是函数参数 但我简化了问题 它可以保存必须具有的 React 组件 例如aNumber number在它的属性之中 我不成功的尝试是 function MyComp props aNumber number aStri
  • OpenGL - 与未来的上下文共享现有纹理?

    我有一个应用程序 可以使用 FBO 扩展将帧绘制到纹理上 然后这些帧将显示到打开的不同窗口while应用程序正在运行 这意味着可以在创建任何新窗口的 OpenGL 上下文之前创建和池化纹理 并且wglShareLists叫做 目前我必须做g