问题标签 [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.
macos - 带有 GL_PIXEL_UNPACK_BUFFER 的 glTexSubImage2D 给出 GL_INVALID_OPERATION
目前我正在尝试使用 PBO 将视频数据获取到纹理。我不确定我想要做的事情是否可能,或者如果可能的话,这是一个很好的方法......我有 3 个 GL_RED 格式的纹理(每个通道一个,目前不使用 Alpha) . 所有这三个都将在对外部库的一次调用中填写。
这是绑定缓冲区等:
这是为 3 个纹理完成的,然后缓冲区由外部库填充。然后我尝试将它们推到纹理上,如下所示:
浏览可能产生错误的原因列表,这就是我所知道的:
- 纹理数组已定义
- 类型正确
- 数据参数(偏移量)为 0
- 未在 glBegin/glEnd 之间执行
这个我不确定:
- 如果非零缓冲区对象名称绑定到 GL_PIXEL_UNPACK_BUFFER 目标并且数据将从缓冲区对象中解包,从而导致所需的内存读取将超过数据存储大小,则会生成错误。
这似乎是一个问题,但我不知道如何处理这个问题:
- 如果非零缓冲区对象名称绑定到 GL_PIXEL_UNPACK_BUFFER 目标并且当前映射缓冲区对象的数据存储,则会生成错误。
我是否正确地说这个 glUnmapBuffer 正在取消映射最后映射的缓冲区,所以仍然映射了正确的缓冲区?
GL版本是3.2
我将不胜感激任何帮助,谢谢!
java - LWJGL 使用 PBO 读取像素失败
我正在尝试从帧缓冲区异步读取,但 glReadPixels() 会生成 INVALID_OPERATION 错误。
我已经阅读了可能导致此错误的原因,但我的代码中没有发现任何问题:
c++ - OpenGL PBO 纹理上传怪事
我的测试基于这个流行的 PBO 示例(请参阅http://www.songho.ca/opengl/gl_pbo.html中的 pboUnpack.zip )。根据示例在 PBO 模式 1 上进行测试。
运行原始示例,我发现在我的 NVIDIA 560GTX PCIe x16(驱动程序 v334.89 Win7 PRO x64 Core i5 Ivy Bridge 3.6GHz)上,glMapBufferARB()
即使glBufferDataARB()
前面是为了防止它阻塞(即丢弃 PBO),也会阻塞 15ms。
然后我将图像大小从原来的 1024*1024 更改为 400*400,我认为这肯定会减少阻塞时间。令我惊讶的是,它保持在 15 毫秒!CPU 利用率仍然很高。
进一步实验,我将图像大小增加到 4000*4000,我再次感到惊讶——glBufferDataARB 从 15 毫秒减少到 0.1 毫秒,同时 CPU 利用率也大大降低。
我无法解释这里发生了什么,我希望熟悉此类问题的人能够提供一些启示。
感兴趣的代码:
opengl - glReadPixels 有效,但在使用 PBO 时返回 INVALID_OPERATION
我很困惑,因为我的工作代码给了我带有 glreadpixels 的 INVALID_OPERATION 我的猜测是它导致/将导致性能问题,即使它没有我想知道它是否可能导致不可靠的代码。
我正在对 FBO 进行屏幕外渲染,然后从 PBO 读取系统内存。
glReadPixels 返回 INVALID_OPERATION 但除第一帧外的每一帧。不知何故,它第一次没有给出错误,但从那时起它就抱怨了。我必须强调,尽管有这个错误,但代码工作正常。
我的代码如下所示:
初始化(仅在启动时调用):
离屏渲染(每帧调用一次):
android - Android 4.3 PBO 不工作
我PBO
用来截屏。但是,结果图像全黑。没有PBO
. 在这样做之前我需要注意什么吗?
我什至尝试渲染到 aFBO
然后使用GLES30.glReadBuffer(GLES30.GL_COLOR_ATTACHMENT0)
,没有希望
opengl - How to copy/render a Pixel Buffer to the back buffer in OpenGL 3.X
I am trying to perform something like the old glDrawPixels: I have a Pixel buffer created with text and I would like to apply it to the back buffer (where all the scene is already rendered).
Most tutorial[1] seem to copy the pixel buffer to a texture and then apply this texture to a quad, but this solution seem to perform lot of unnecessary operations: copy the data, create filtering for the texture, draw a quad (which mean a new VBO), etc...
Other answers[2] speak about "Blitting", but I am unable to get it working.
Also, most information about OpenGL still use glDrawPixels which is deprecated (and unavailable) for OpenGL 3.X.
c++ - 使用 PBO 上传 OpenGL 纹理?
我正在使用 OpenGL2.1 开发一个 OpenGL 应用程序,并希望通过线程上传纹理。
到目前为止我做了什么:
- 创建第二个上下文并在两者之间共享
- 在线程中上传纹理数据
一切正常,除了纹理上传发生时我注意到一个小的“滞后”!我知道这是因为驱动程序必须同步两个上下文。问题是我希望它流式传输纹理。我不想稍后更新纹理。我只想在后台加载纹理,同时显示“几乎平滑”的加载动画,而不会停止整个应用程序。
这就是我搜索并发现PBO可以用于像素数据的DMA数据传输的点。是否可以使用 PBO 进行纹理上传?如果是这样,怎么做?
android - 从 FBO 读取像素到 PBO 时出现错误 0x0502
我试图一起使用 FBO 和 PBO,从 FBO 读取像素到 PBO,每一帧。代码如下:
它在 PC 上运行良好。但无法在我的安卓手机上运行,在 glReadPixels 之后出现错误 0x0502(GL_INVALID_OPERATION)。
我相信我的代码与此链接的底部答案相同: Reading the pixel values from the Frame Buffer Object (FBO) using Pixel Buffer Object (PBO)
有人有线索吗?我哪里做错了?
opengl - 使用 PBO 上传 OpenGL 平铺纹理
我正在使用 PBO,如下所示:
而且,我正在使用 textureId 显示在屏幕上。顺便说一句,g_fb_addr,它是图像的来源,具有平铺的内存布局。因此显示的图像在水平轴上呈条纹状。
我的问题是,有没有办法将平铺图像上传到 PBO?
c++ - PBO 在集成 GPU 中无法正常工作
出于基准测试的目的,让我们采用这个著名的 PBO 回读代码。
问题:
- 使用 PBO 在我的 PC 中没有效果。即使使用最新的驱动程序更新和正确的像素格式 BGRA。
更新 1:我也尝试了 3 个 PBO 的相同示例。但即使那样也没有区别。
注:Intel(R) Core(TM) i5-3470S CPU @ 2.90GHz,2901 Mhz,4 Core(s),显卡:Intel(R) HD Graphics 2500
更新 2:PBO 在外部 GPU 和 Intel i-7 系列中正常工作。
PC配置:Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz, 3400 Mhz, 4 Core(s), 8 Logical Processor(s), Video Card: Geforce 210. 所以它原来是问题集成 GPU 和外部 GPU。我相信这对于许多想知道为什么他们的代码不起作用的人来说将是一个有用的提示!