问题标签 [pbo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
579 浏览

c++ - 我什么时候可以发布源 PBO?

我正在使用 PBO 在我的 cpu 和 gpu 之间异步移动数据。

从 GPU 移动时,我知道我可以在 PBO 上调用 glMapBuffer 后删除源纹理。

然而,反过来呢?我什么时候知道从 PBO 到纹理 (glTexSubImage2D(..., NULL)) 的传输完成并且我可以安全地释放或重新使用 PBO?是我绑定纹理还是其他什么?

0 投票
2 回答
25425 浏览

opengl - 使用像素缓冲区对象 (PBO) 从帧缓冲区对象 (FBO) 读取像素值

我可以使用像素缓冲区对象(PBO)直接从 FBO 读取像素值(即使用 glReadPixels)(即,当 FBO 仍然连接时)?

如是,

  1. 使用 PBO 和 FBO 的优缺点是什么?
  2. 以下代码有什么问题

{

以下 glReadPixels 工作正常

以下 glReadPixels 不起作用:(

0 投票
3 回答
1587 浏览

android - Android NDK OpenGL ES 2.0 纹理间距

有什么方法可以在opengl es 2.0中以不同于其宽度的间距对纹理进行blit。通常我会通过使用 PBO 或通过 glPixelStore 调整 GL_PACK_ROW_LENGTH 来解决这个问题。但是,Android 平台上似乎既不存在用于将缓冲区绑定到的 GL_PIXEL_UNPACK_BUFFER 也不存在 GL_PACK_ROW_LENGTH。

glTex(Sub)Image2D 不支持这个。

有小费吗?

0 投票
1 回答
14658 浏览

c++ - 需要 OpenGL/PBO 像素绘图示例

我需要在屏幕上快速绘制像素。

我发现了这个有趣的页面 快速像素绘图库

作者发布:“使用 OpenGL 纹理和 PBO 似乎是最好的选择。谢谢。”

我想 OpenGL/PBO 是我需要的。

我在这里http://www.opengl.org/registry/specs/ARB/pixel_buffer_object.txt 和这里http://www.songho.ca/opengl/gl_pbo.html阅读了有关 PBO 的信息, 但我不明白。 ..

有人可以提供简单的例子,如何在具有 PBO 扩展的 2D 纹理的位图上绘制像素?

0 投票
1 回答
442 浏览

opengl - 使用 opengl/CUDA 互操作性时是否需要重新创建纹理?

我想使用 CUDA 操作我在 opengl 中使用的纹理。知道我需要为此使用 PBO,我想知道每次对 PBO 进行如下更改时是否必须重新创建纹理:

glTexSubImage2D 等是否从 PBO 复制数据?

0 投票
2 回答
4100 浏览

opengl - Opengl 非同步/非阻塞地图

我刚刚找到了以下OpenGL 规范ARB_map_buffer_range

我想知道是否可以使用此扩展进行非阻塞地图调用?

目前在我的应用程序中,我正在渲染到一个 FBO,然后我将其映射到一个主机 PBO 缓冲区。

但是,这样做的问题是它在传输数据时会阻塞渲染线程。

我可以通过流水线渲染来减少这个问题,但延迟是我的应用程序中的一个大问题。

我的问题是我是否可以将 map_buffer_range 与 MAP_UNSYNCHRONIZED_BIT 一起使用并等待映射操作在另一个线程上完成,或者在渲染线程渲染下一帧时推迟同一线程上的映射操作。

例如

或者

我不确定的是我如何知道映射操作何时准备就绪,规范仅提到“其他同步技术以确保正确操作”。

有任何想法吗?

0 投票
2 回答
908 浏览

opengl - opengl视频冻结

我有一个 IDS ueye cam 并通过 PBO 继续捕获到 OpenGL (OpenTK)。在我的开发人员 PC 上效果很好,但在速度较慢的机器上,视频会在一段时间后冻结。

通过 opengl 分配内存并映射到 ueye 的代码,因此相机将处理后的图像保存在此处:

要将图像从 pbo 复制到纹理(已创建纹理并且可以):

也许有人可以看到错误......大约 6 秒后,ueye 事件不再提供任何图像。当我删除 TexSubImage2D 它运行良好,但当然没有图像出现。是否有来自opengl的锁或其他东西?在此先感谢 - 托马斯

0 投票
1 回答
2164 浏览

opengl - 如何使用像素缓冲区对象从 GPU 内存中读取 3D 纹理

我正在从片段着色器中将数据写入 3D 纹理,并且我需要将所述数据异步读回系统内存。异步启动打包操作到缓冲区对象的唯一方法似乎是glReadPixels()使用NULL指针调用。但是这个函数坚持要传递一个定义要读回的区域的矩形。现在我不知道在使用 PBO 时是否会忽略这些参数,但我认为不会。在这种情况下,我不知道传递什么给这个函数以获得整个 3D 纹理。即使必须读回单个切片(这将是一种愚蠢的 IMO),我仍然不知道如何与 OpenGL 通信以读取哪个切片。我错过了什么吗?

顺便说一句,我可以为每个切片使用单独的 2D 纹理,但如果我没记错的话,那会搞砸(3D-)mipmapping。我想使用 3D mipmap 来有效地在生成的 3D 纹理中找到感兴趣的区域。

PS 对次优标签感到抱歉,显然之前没有人问过 3d 纹理,因为我不允许创建新标签......

0 投票
1 回答
729 浏览

qt - 将 RGBA32 像素直接存储到 OpenGL ES 纹理中

我正在使用一个库,它为我提供了我必须在屏幕上闪烁的帧。我分配了一个缓冲区,这个库直接写入这个缓冲区。当我需要时,我必须将此缓冲区的指定部分blit 到屏幕上。我正在使用带有 OpenGL/ES 绘制引擎的 Qt 进行渲染。

问题是:blit 到屏幕的最快方法是什么?我目前正在QImage使用接受数据指针的构造函数将缓冲区加载到 a 中。这应该避免任何副本。然后,我使用 blit 的drawImage()方法QPainter到屏幕正确的区域。我猜这个方法会将该区域的副本加载到 GPU 内存中,然后使用 OpenGL 纹理将其传送到屏幕上。

是否有可能避免此副本以加快进程?例如,是否可以直接在 OpenGL 纹理中绘制,这样我就不必转移到 GPU 上?我读过像素缓冲区对象。这可能是一个解决方案吗?我可以为此目的使用 aQGLFramebufferObject吗?

0 投票
1 回答
2346 浏览

opengl-es-2.0 - 在 OpenGL ES 2.0 中使用 PBO 将像素直接复制到 GPU 内存中

我读到应该可以使用像素缓冲区对象直接在 GPU 内存中传输像素数据。我不明白的是 OpenGL ES 2.0 是否支持 PBO。我发现了不连贯的信息。OpenGL ES 2.0 是否支持 PBO?

如果没有,OpenGL ES 2.0 是否有其他方法可以将数据(RGBA32)直接放入纹理中?