问题标签 [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.
asynchronous - Opengl 异步 PBO 读取
我正在开发一个需要从 openGL 帧缓冲区读回整个帧的应用程序。
为了提高性能,我将异步 glReadPixels 与多个 PBO 一起使用:
在阅读了一些教程后,我执行以下操作(例如,使用 2 个 PBO):
- 并条框 N (glDrawArrays)
- 开始从缓冲区异步读取 PBO N(见上文)
- 画框 N+1 (glDrawArrays)
- 从缓冲区开始异步读取 PBO N+1(见上文)
- 同步 PBO 读取 N (glMapBuffer)
- 进程 N
- 画框 N+2 (glDrawArrays)
- ...
这似乎工作正常,但我对管道有些担心。
通常,帧 N+1 (3) 上的绘图操作在帧 N (2) 的异步读取完成之前完成。
帧缓冲区是否被绘图操作覆盖?
如果 glReadPixels 异步运行 (2),帧 N 是否被此覆盖破坏?
opengl - 当内存地址已经固定时使用 PBO?
我正在尝试优化从 CPU 内存到 OpenGL 的纹理上传。
最初我使用glTexImage2D
并且有效,但显然没有使用 DMA,所以我正在尝试使用 PBO。
不幸的是,我必须使用提供纹理数据的 API 为它们分配 CPU 内存并返回一个指针。我无法控制它在内存中放置数据的位置。
如果我创建一个 PBO 然后对其进行映射,我必须“手动”将我的数据移动到 PBO 分配的内存中,或者glBufferData
在调用之前使用纹理数据对其进行初始化glTexImage2D
。这似乎比完全不使用 PBO 慢得多。
我可以尝试任何其他技术,或者这只是 PBO 工作方式的限制?
c++ - 如何使用 QOpenGLBuffer:: PixelUnpackBuffer
我无法弄清楚如何正确地从QOpenGLBuffer:: PixelUnpackBuffer
.
- 写入 PBO 之前的正确设置是什么?
QOpenGLBuffer::write
无法使用简单的QImage.bits()
,或glReadPixels()
将 FBO 渲染传递到 PBO。它必须是特定类型的数据吗?- 您如何使用书面 PBO 和
Texture::setData()
? 一个简单的Texture.setData(*format*, *pixel_type*, pubo, nullptr)
就够了吗?
这里有一些代码来举例说明我在做什么:
opengl - 用 pbo 生成 mipmap 太慢?
我正在开发一个类似视频的应用程序。
为了加快贴图上传的速度,我使用pbo来增加它。
为了处理锯齿伪影,我使用 mipmap 来帮助解决这个问题。
好吧,让我给你看主要代码
结果是帧率显着下降。
我认为原因是生成 mipmap 会破坏使用 pbo 异步上传纹理的优势。
据我所知,没有任何方法可以在纹理上传完成时自动生成 mipmap。
有没有提前?
opengl-es - 在 OpenGL ES Adreno GPU 中使用 PBO 从 FBO 纹理读回
我正在 Adreno GPU 上的 OpenGL-ES 3.0 应用程序中工作。
使用 FBO 的 Render-to-Texture,我在屏幕外渲染了一个图像数据。
我使用 PBO 更快地读回数据,以便在 CPU 中进行进一步处理。
代码是:
但是我没有通过使用 PBO 获得任何性能提升,而且 glMapBufferRange() 返回 NULL。
在这里处理 PBO 有什么问题?
c++ - 使用 PBO 从 SFML 纹理中读取像素
我在 SFML 中创建渲染纹理(sf::RenderTexture
用于离屏渲染),绘制到它并尝试使用 PBO 异步读取像素。这是我正在做的一个最小的例子:
我没有从glGetError()
. 但是我从来没有进入条件,即。像素数组始终为空。我无法弄清楚代码有什么问题以及为什么我没有从纹理中获取像素,我是否在某处错过了绑定?