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 上下文之间可以共享什么以及如何启用共享 的相关文章

  • 渲染具有透明度的纹理时,OpenGL 不需要的像素

    我已经为这个问题苦苦挣扎了一段时间了 当我使用 OpenGL 渲染 2D 纹理 在无透明度和部分透明度之间的过渡上具有透明度值 时 我得到了一些烦人的灰色像素 我认为这是像素值插值的产物 关于如何改进这一点有什么想法吗 I m attach
  • matplotlib:渲染到缓冲区/访问像素数据

    我想使用 matplotlib 生成的图作为 OpenGL 中的纹理 到目前为止 我遇到的 matplotlib 的 OpenGL 后端要么不成熟 要么已经停止使用 所以我想避免使用它们 我当前的方法是将图形保存到临时 png 文件中 并从
  • 纹理采样:根据LOD值计算BIAS值

    GL ES 2 0 中的功能纹理2DLod在片段着色器中不可用 我需要移植 GLSL 着色器 在 GL ES 2 0 中我只能使用二维纹理 sampler2D 采样器 vec2 坐标 浮点数bias 告诉我如何计算 a 的值bias相当于已
  • WGL:没有双缓冲 + 多重采样 = 失败?

    我通常使用创建像素格式wglChoosePixelFormatARB 与这些论点 除其他外 WGL DOUBLE BUFFER ARB GL TRUE WGL SAMPLE BUFFERS ARB GL TRUE WGL SAMPLES A
  • 为什么 cudaGLSetGLDevice 失败,即使它是在 main 函数的第一行中调用的

    我想使用 OpenGL 和 CUDA 之间的互操作性 我知道 正如一些教程所说 第一步是选择设备 但是 当我在主函数的第一行中调用 cudaGLSetGLDevice 0 时 程序退出并显示信息 cudaSafeCall 运行时 API 错
  • OpenSceneGraph 将相机设置在初始位置

    我是第一次使用 OpenSceneGraph 我有点迷失 因为文档确实不太清楚 所以 我有这段代码加载一个带有房子的 obj 文件 并且我在我想要的 人 所在的地方淹没了一个小盒子 所以现在 我不想把那个盒子放在那里 而是想把相机放在那里
  • OpenGL纹理渲染与原始不匹配

    我正在尝试使用 OpenGL 渲染纹理 我用作测试的纹理是白色背景上的一堆黑色矩形 如下所示 然而 在渲染时 纹理似乎被复制并叠加在其自身之上多次 我使用以下方法设置场景 std string vertexSource ShaderLoad
  • 使用普通画布/文本输出更新LayeredWindow

    有没有一种方法可以使用画布在表单上绘图 然后使用 updatelayeredwindow 这样表单就不可见 但文本可见 就像只显示文本的半透明表单一样 如果没有 那么有没有办法只用画布 opengl directx 制作某种半透明形式 我想
  • 之前对 GL.Color3 的调用使我的纹理使用了错误的颜色

    制作 2D OpenGL 游戏 渲染帧时 我需要首先绘制一些计算的四边形几何体 然后绘制一些纹理精灵 当我的渲染方法主体仅绘制精灵时 一切正常 但是 当我尝试在精灵之前绘制几何四边形时 精灵的纹理会更改为之前使用的最后一个 GL Color
  • nVidia 和 ATI 之间的 OpenGL 渲染差异

    最近 我将 ATI 驱动程序 我使用的是 HD7970 更新为最新版本 但我的 OpenGL 项目的一些对象停止工作 更重要的是 他们适用于 nVidia 最新驱动程序 在 960m 上测试 ATI 和 nVidia 渲染管道之间有什么我应
  • 如何在 OpenGL 中绘制镜像某些东西的镜子?

    根据我的理解 要在 OpenGL 中进行镜像 您基本上需要绘制场景 然后将所有内容翻转并再次绘制 只是使其通过镜子可见 从而在镜子中创建完美翻转的图像 但我看到的问题是 执行此操作时 唯一可以看到其他镜子的镜子是在前一个镜子之后渲染的镜子
  • 开启TK onRenderFrame和onUpdateFrame的区别?

    我目前正在使用 OpenTK 框架和 OpenGL 用 C 编写 Jump n Run 游戏 Open TK 提供预设功能 例如GameWindow Run or GameWindow onUpdateFrame onRenderFrame
  • GLSL memoryBarrierShared() 有用吗?

    我想知道 memoryBarrierShared 的用处 事实上 当我查找屏障功能的文档时 我读到 对于计算着色器中任何给定的静态屏障实例 单个工作组内的所有调用都必须进入该实例 然后才能允许任何调用继续超出该实例 这确保了在给定的屏障静态
  • sRGB 纹理。它是否正确?

    我最近阅读了一些有关 sRGB 格式以及它们如何允许硬件自动对典型显示器执行色彩校正的文章 作为我阅读的一部分 我发现您可以使用普通纹理和返回结果上的 pow 函数来模拟此步骤 无论如何 我想问两个问题 因为我以前从未使用过此功能 首先 有
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

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

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前
  • 光照不适用于 gluSphere

    这是一个简单的问题 我有点羞于寻求帮助 我正在对 gluSphere 进行简单调用来渲染球体 但是 即使我很确定我正确添加了法线和照明 它也无法正确照亮 但是 如果我添加纹理 模型会正常点亮 但它似乎总是平滑的 并且我无法将其更改为平面 这
  • 使用 OpenGL 进行子弹调试抽屉

    我已经摆弄了子弹一段时间 现在我想绘制调试 我有一个 opengl 世界 具有有效的子弹物理和一切 我尝试过的是这样的 我创建了一个像这样的 GLDebugDrawer 类 include LinearMath btIDebugDraw h
  • GCC、字符串化和内联 GLSL?

    我想使用宏字符串化来声明内联 GLSL 着色器字符串 define STRINGIFY A A const GLchar vert STRINGIFY version 120 n attribute vec2 position void m
  • Opengl 简单片段着色器在纹理上覆盖半透明三角形条

    我有一个带纹理的三角形条 形成一个四边形 当您单击它时 我希望周围的区域用半透明的四边形标记 这样您仍然可以看到下面的纹理 我的四边形显示正确 但它们根本不透明 并且完全覆盖了下面的任何内容 我有一个非常简单的片段着色器 我认为可以使用它g

随机推荐

  • 从 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我分享它们 在一个跨