OpenGL共享对象和多上下文 Shared Objects and Multiple Contexts

本文详细阐述了OpenGL中的对象共享机制,涉及对象类型、删除行为、容器对象的概念,以及对象内容的传播规则,强调了在多上下文环境中处理共享对象的注意事项和示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章主要描述了多个OpenGL上下文之间共享对象的特殊注意事项,包括删除行为以及如何在不同上下文间传播对共享对象所做的更改。

可以在多个上下文之间共享的对象类型包括:缓冲区对象、程序和着色器对象、渲染缓冲对象、采样器对象、同步对象以及纹理对象(除了名称为零的纹理对象)。

其中一些对象可能包含其他对象数据存储部分或全部的不同视图。例如,纹理缓冲对象包含对缓冲对象数据存储的视图,而纹理视图则包含对另一个纹理对象数据存储的视图。这些视图被视为对被查看对象的引用。

包含对其他对象引用的对象包括帧缓冲对象、程序管道对象、变换反馈对象和顶点数组对象。这类对象被称为容器对象,它们是不可共享的。

实现可能会允许在实现不同版本OpenGL或同一版本不同配置文件之间的上下文间进行共享(参见附录E)。然而,当共享对象的某些方面和/或行为在一个以上版本或配置文件中不适用或未被明确描述时,可能会导致依赖于实现的行为差异。这意味着,在跨版本或跨配置文件共享对象时,需要格外注意与特定版本或配置文件相关的功能限制和行为一致性问题。

对象删除行为 Object Deletion Behavior

共享上下文销毁的副作用

共享列表是一组共享对象的所有上下文集合。如果一个共享对象未被明确删除,那么在该列表中的任何单个上下文被销毁时,除非它是该共享列表中唯一剩下的上下文,否则对这个对象不会产生影响。一旦共享列表中的最后一个上下文被销毁,所有共享对象以及为该上下文或整个共享列表分配的所有其他资源都将在尽可能快的时间内被删除,并由实现重新回收。

删除对象后的自动解绑定

当缓冲区、纹理或渲染缓冲区对象被删除时,它们会从当前上下文中任何与其绑定的绑定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值