首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PBO是否在OpenGL上下文中共享?

PBO是否在OpenGL上下文中共享?
EN

Stack Overflow用户
提问于 2018-07-16 16:54:26
回答 2查看 800关注 0票数 0

PBO或任何类型的缓冲区对象是否在OpenGL中的多个上下文中共享(例如纹理)?

我的最佳猜测是NO,因为下面的代码不起作用:

代码语言:javascript
复制
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, lastFrame->pbo);
glDrawPixels(lastFrame->width, lastFrame->height, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, NULL);

lastFrame->pbo是由另一个GL上下文创建的缓冲区。PBO的大小是4*lastFrame->width*lastFrame->height。如果不是绑定PBO,而是从内存中上传数据(大小相同),那么它可以正常工作。

glDrawPixels命令正在抛出GL_INVALID_OPERATION

编辑:lastFrame->pboGLuintwidthheightu_int32_t

编辑2:我在上下文中使用GLFW。

EN

回答 2

Stack Overflow用户

发布于 2018-07-16 17:12:05

OpenGL规范4.6在其第5章中说:

可以在上下文中共享的对象包括缓冲区对象、程序和着色器对象、渲染缓冲区对象、取样器对象、同步对象和纹理对象(名为零的纹理对象除外)。

包含对其他对象的引用的对象包括帧缓冲区、程序管道、查询、转换反馈和顶点数组对象。这些对象称为容器对象,不共享。

像素缓冲对象(PBO)是一个缓冲对象。因此,共享的。

您的GL_INVALID_OPERATION错误可能来自于没有将使用gl-调用的上下文设置为当前。或者尝试同时将相同的上下文设置为两个不同的线程。

票数 2
EN

Stack Overflow用户

发布于 2018-07-16 19:19:52

问题是,一个PBO对象或任何类型的缓冲区对象是否在OpenGL中的多个上下文中共享(例如纹理)。

正如@Ripi2 2的答复所指出的,GL规范允许在上下文之间共享缓冲区和纹理对象。但这并不意味着它们是自动共享的。必须创建共享GL上下文才能使其工作。

我在上下文中使用glfw

上下文共享在GLFW文件中进行了解释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51366693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档