OpenGL 上下文之间可以共享什么以及如何启用共享

2023-11-26

我正在制作一个 CAD 软件,它将为相似的视图创建不同的 OpenGL 上下文(如果它们没有显示相同的内容)。

我想在 OpenGL 上下文之间共享尽可能多的数据,尤其是 VBO 和着色器。

我想知道what我可以分享和how我分享它们,在一个跨平台方式并且可能使用普通的 OpenGL 3.2(无引擎)。


OpenGL 上下文唯一可以共享的就是对象。即便如此,“容器”对象无法共享。容器对象是其主要目的是附加其他对象的对象。具体来说,以下是容器对象:

  • 帧缓冲区对象
  • 顶点数组对象
  • 变换反馈对象
  • 程序管道对象

所有其他对象都可以共享。

共享对象是一项基于上下文的任务,通常作为创建上下文的一部分或之后立即完成。然而,由于这是在上下文本身上完成的,所以cannot是跨平台操作。 OpenGL只定义了上下文的行为,而不定义如何操作上下文对象。负责创建和管理上下文的特定于平台的 API 处理:GLX、WGL、EGL 等。

通常有两种处理方法。一种方法是上下文创建函数将另一个上下文作为参数;新创建的上下文将与给定上下文共享所有可共享对象。wglCreateContextAttribsARB是 WGL 上下文创建函数,它需要一个上下文来与新上下文共享。

其他方法是在创建上下文后立即使用函数。该函数采用两个上下文并在它们之间共享对象。但是,您应该在创建上下文后立即使用这样的函数;您不想在目标上下文中创建可能与源中已有的对象发生冲突的对象。 WGL 有一个较旧的函数,wglShareLists,在上下文之间共享对象。我知道它只讨论显示列表,但它共享所有可共享对象。

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

OpenGL 上下文之间可以共享什么以及如何启用共享 的相关文章

  • 纹理映射 C++ OpenGL

    我已经阅读了相关内容 包括 Nehe 和此处的解决方案 但我找不到具体的答案 我正在尝试加载一张名为stars jpg 的照片 我想通过使用 uv 坐标映射它来使其成为场景的背景 方法是 glBegin GL QUADS glTexCoor
  • 如何在 SceneKit 中以编程方式将 png 纹理包裹在立方体周围

    我是 SceneKit 的新手 试图让一些基本的东西工作 但到目前为止还没有取得多大成功 由于某种原因 当我尝试将 png 纹理应用于 CNBox 时 我最终除了黑色之外什么也没有 这是我在 viewDidLoad 中的简单代码片段 let
  • LibGDX纹理混合与OpenGL混合功能

    在 libGdx 中 我试图创建一个成形纹理 采用完全可见的矩形纹理并将其遮罩以获得成形纹理 如下所示 在这里我在矩形上测试它 但我想在任何形状上使用它 我调查过本教程 http www learnopengles com tag addi
  • glColor4f() - alpha 值的效果

    我正在使用 glColor4f 令人惊讶的是 更改 alpha 即第四个参数 不会导致透明度发生任何变化 代码段是 const GLfloat squareVertices 0 5 0 5 0 0 0 5 0 5 0 0 0 5 0 5 0
  • GLSL 中统一浮点行为和常量浮点行为的不同

    我正在尝试在 GLSL 中实现模拟双精度 并且观察到一种奇怪的行为差异 导致 GLSL 中出现细微的浮点错误 考虑以下片段着色器 写入 4 浮点纹理以打印输出 layout location 0 out vec4 Output unifor
  • 在 3D 场景中实现“抓取”相机平移工具

    在我的场景中 我有想要 抓取 的地形 然后在移动光标时让相机平移 其高度 视图向量 视野等全部保持不变 因此 最初的 抓取 点将是世界空间中的工作点 我希望在拖动时该点保留在光标下方 我当前的解决方案是获取前一个和当前的屏幕点 取消投影它们
  • glDeleteTextures在Windows上似乎没有释放纹理内存,有没有解决办法?

    我的 openGL 应用程序内存不足 遇到一些问题 我正在尝试找出我的问题 为此 我创建了一个小型测试程序 它基本上只是从调用 glDeleteTextures 的文件中加载一个巨大的纹理 然后再次加载它 如果我在 OSX 上运行这个测试程
  • OpenGL:始终相同的颜色

    我正在 Windows 上编写一个程序 使用c opengl 2 1 and SDL我在顶点颜色方面遇到了一些问题 我在用着glColor3f设置每个顶点集的颜色 但它似乎不起作用 无论我选择什么颜色 我都会将每个顶点绘制为红色 我检查了传
  • 延迟阴影映射 GLSL

    我目前正在实施延迟渲染管道 但我仍坚持使用阴影贴图 我已经成功地将其实施到前向管道中 我所做的步骤是 获取灯光视图中的位置 转换为光视图剪辑空间 使用 0 5 0 5 获取阴影纹理坐标 检查深度 编辑 使用新结果图像更新代码 float c
  • 如何在opengl中使用四元数绕屏幕中心旋转?

    我正在尝试实现轨迹球 轨迹球旋转 但我的中心有问题 回转 无论如何 我希望中心成为屏幕的中心 让我解释一下到目前为止我所做的事情 我创建了一个四元数 旋转轴 向量起点x向量结束 角度 向量起点 向量结束 从该四元数中 我创建了一个旋转矩阵
  • 如何在多采样纹理上渲染帧缓冲区对象?

    我目前有一个使用多个通道的渲染引擎 其中图像的各个部分在纹理上渲染 然后使用着色器进行组合 它有效 现在我想激活多重采样 我在这里读到 http www opengl org wiki Framebuffer Object Examples
  • 具有交错缓冲区的 openGL glDrawElements

    到目前为止 我只使用了 glDrawArrays 并希望转向使用索引缓冲区和索引三角形 我正在绘制一个有点复杂的对象 其中包含纹理坐标 法线和顶点坐标 所有这些数据都收集到一个交错的顶点缓冲区中 并使用类似于以下的调用进行绘制 假设所有血清
  • Qt 5.5 QOpenGLWidget 链接错误未链接任何 openGL 调用

    我尝试使用 Qt 5 5 1 构建一个简单的 OpenGL 应用程序 一切都很好 直到我尝试使用 glClearColor 等 openGL 本机函数调用 该小部件实际上编译并产生黑屏 但在我尝试使用任何 openGL 本机函数后 它甚至不
  • OpenSceneGraph 将相机设置在初始位置

    我是第一次使用 OpenSceneGraph 我有点迷失 因为文档确实不太清楚 所以 我有这段代码加载一个带有房子的 obj 文件 并且我在我想要的 人 所在的地方淹没了一个小盒子 所以现在 我不想把那个盒子放在那里 而是想把相机放在那里
  • 使用顶点缓冲区对象 (VBO) 渲染 Kinect 点云

    我正在尝试制作一个动态点云可视化工具 使用 Kinect 传感器每帧更新这些点 为了抓取帧 我使用 OpenCV 和 GLUT 来显示 OpenCV API 对于点 xyz 位置返回 640 x 480 float 对于 rgb 颜色数据返
  • OpenGL 与 OpenCL,选择哪个以及为什么?

    哪些功能使 OpenCL 能够独特地选择 OpenGL 和 GLSL 进行计算 尽管有与图形相关的术语和不实用的数据类型 OpenGL 是否有任何真正的警告 例如 可以通过使用其他纹理将 a 渲染到纹理来完成并行函数评估 减少操作可以通过迭
  • 如何在 OpenGL 中绘制镜像某些东西的镜子?

    根据我的理解 要在 OpenGL 中进行镜像 您基本上需要绘制场景 然后将所有内容翻转并再次绘制 只是使其通过镜子可见 从而在镜子中创建完美翻转的图像 但我看到的问题是 执行此操作时 唯一可以看到其他镜子的镜子是在前一个镜子之后渲染的镜子
  • 新显卡上的 nvoglv32.dll 中的绘制调用崩溃

    几天前 由于一些硬件更改 我设置了计算机并安装了新的 Windows 8 副本 其中 我将显卡从 Radeon HD 7870 更改为 Nvidia GTX 660 再次设置 Visual Studio 11 后 我从 Github 下载了
  • GLSL memoryBarrierShared() 有用吗?

    我想知道 memoryBarrierShared 的用处 事实上 当我查找屏障功能的文档时 我读到 对于计算着色器中任何给定的静态屏障实例 单个工作组内的所有调用都必须进入该实例 然后才能允许任何调用继续超出该实例 这确保了在给定的屏障静态
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲

随机推荐

  • 从 CMAKE 调用 MIDL 编译器

    我将使用 CMAKE 的 MIDL 编译器 但无法从 CmakeList 调用 MIDL 编译器 这是我用来实现我的目标的命令 add custom command OUTPUT CMAKE CURRENT BINARY DIR IFace
  • 哪个查询更好、更高效 - mysql

    我遇到以不同的方式编写查询 如下所示Type I SELECT JS JobseekerID JS FirstName JS LastName JS Currency JS AccountRegDate JS LastUpdated JS
  • 使用 PHP 和 MySQL 显示日语字符的问题

    我正在使用 PHP 连接到 MySQL 数据库来创建 XML 文件 除了字符编码之外 一切正常 我需要日语和英语字符 所以显然我选择使用 UTF 8 唯一的问题是数据库中的日语字符无法正确显示 数据库和表的排序规则设置为 UTF8 gene
  • 在 Mac OS X 上的 64 位进程中,中等大小的内存分配怎么会失败?

    我正在构建一个相册布局应用程序 该应用程序经常将 JPEG 图像解压缩到内存中的位图缓冲区中 图像的大小限制为 100 兆像素 但通常不超过 15 兆像素 有时这些缓冲区的内存分配会失败 NSMutableData alloc initWi
  • 如何从c#发送邮件

    我有代码 System Web Mail MailMessage oMailMessage new MailMessage oMailMessage From strFromEmaild oMailMessage To strToEmail
  • 传单:添加指向标记的链接

    非常简单的问题 如何使 Leaflet 中的地图标记可点击并将用户路由到其他页面 每个标记都有自己的页面 我尝试了以下方法但没有成功 不知何故 所有标记都指向同一页面 即最后分配的 URI var markers coords 51 505
  • 在 Python 中加速矩阵向量乘法和求幂,可能通过调用 C/C++

    我目前正在研究一个机器学习项目 其中 给定一个数据矩阵Z和一个向量rho 我必须计算的值和斜率逻辑损失函数 at rho 计算涉及基本的矩阵向量乘法和 log exp 运算 并采用避免数值溢出的技巧 在本节中进行了描述 上一篇文章 我目前正
  • 如何分配或返回受联合约束的通用 T?

    换句话说 如何为联合类型集中的不同类型实现特定于类型的解决方案 鉴于以下代码 type FieldType interface string int type Field T FieldType struct name string def
  • 无需刷新页面即可更改 HTML 代码

    有没有可能how to change HTML jsp 页面without refreshing it 用例是用户向文本区域写入一些内容 然后点击某个按钮 然后我需要将一些对象 即图片 添加到页面中先前定义的位置 gt 我需要更改 HTML
  • Opencv虚拟相机旋转/平移以获得鸟瞰图

    我有一个校准过的相机 我确切地知道内部和外部数据 相机的高度也是已知的 现在我想虚拟地旋转相机以获得鸟瞰图 这样我就可以用三个旋转角度和平移来构建单应性矩阵 我知道 2 个点可以通过单应性从一张图像转换为另一张图像 x K R t n d
  • .Rprofile 未来源

    我试图在 Rprofile 脚本中为 blogdown 包设置一些全局选项 但它们没有被获取 Rprofile 脚本如下所示 options blogdown ext Rmd blogdown author Maryam Khezrzade
  • INSERT AFTER 或 UPDATE AFTER 触发器内的回滚是否会回滚整个事务

    INSERT AFTER 或 UPDATE AFTER 触发器内的回滚是否回滚整个事务或仅回滚作为触发器原因的当前行 这与 Commit 相同吗 我尝试通过当前使用 MSTDC 进行事务的项目代码进行检查 看起来好像整个事务已中止 如果触发
  • 语义网框架

    有哪些语义 Web 框架 每个框架有哪些优点 缺点 我已经广泛使用了Jena 我看过Sesame简要地 还有其他我应该考虑的吗 Redland是一个很好的RDF框架 就像Andreas说的 我主要使用它的 Python 绑定 并通过 Mac
  • Laravel 变形关系

    我有一个关于在 Laravel 中保存多态关系的问题 这是我想在 laravel 中创建的模型 商店有很多产品 产品可以是 商品 活动 或 服务 我有以下表格 shops id user id name events id public t
  • 为 https 运行 Tomcat7

    当我在tomcat 7 0的server xml中更改https以进行安全连接时
  • 在加载时设置 Google 图表宽度

    我有这个我的网站上的谷歌图表 目前这是一个散点图 但我想要所有类型图表的解决方案 例如 如果您使用 700 像素宽的窗口加载网站 则图表尺寸不会响应 图表太宽 下面是我正在使用的代码 HTML div div CSS chart div w
  • 有检查 WCF 服务是否在线的示例吗? [复制]

    这个问题在这里已经有答案了 我将有一个使用 WCF 服务代理的客户端应用程序 该客户端将是一个 Windows 窗体应用程序 对某个地址的 N 个端点执行 basicHttpBinding 我想要解决的问题是 当任何 Windows 窗体应
  • Laravel 5 中的自定义分页视图

    拉拉维尔 4 2可以选择指定自定义视图app config view php例如 Pagination View This view will be used to render the pagination link output and
  • 如何在jsp文件中打印java字符串[重复]

    这个问题在这里已经有答案了 我正在尝试通过 jsp 文件打印字符串变量 这是我的代码
  • OpenGL 上下文之间可以共享什么以及如何启用共享

    我正在制作一个 CAD 软件 它将为相似的视图创建不同的 OpenGL 上下文 如果它们没有显示相同的内容 我想在 OpenGL 上下文之间共享尽可能多的数据 尤其是 VBO 和着色器 我想知道what我可以分享和how我分享它们 在一个跨