首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏字节流动

    OpenGL 使用 PBO 零拷贝替换 glReadPixels

    前倾回顾: PBO 是什么 OpenGL PBO(Pixel Buffer Object),被称为像素缓冲区对象,主要被用于异步像素传输操作。 OpenGL PBO(像素缓冲区对象) 类似于 VBO(顶点缓冲区对象),PBO 开辟的也是 GPU 缓存,而存储的是图像数据。 使用 PBO 可以在 GPU 的缓存间快速传递像素数据,不影响 CPU 时钟周期,除此之外,PBO 还支持异步传输。 使用 PBO 加载纹理 如上图所示,文件中的图像数据可以直接加载到 PBO 中,这个操作是由 CPU 控制。 将图像数据加载到 PBO 后,再将图像数据从 PBO 传输到纹理对象中完全是由 GPU 控制,不会占用 CPU 时钟周期。

    1.8K10编辑于 2024-04-24
  • 来自专栏字节流动

    NDK OpenGL ES 3.0 开发(二十二):PBO

    PBO 是什么 OpenGL PBO(Pixel Buffer Object),被称为像素缓冲区对象,主要被用于异步像素传输操作。 使用 PBO 加载纹理 如上图所示,文件中的图像数据可以直接加载到 PBO 中,这个操作是由 CPU 控制。 所以,当我们使用多个 PBO 时,通过交换 PBO 的方式进行拷贝和传送,可以实现这两步操作同时进行。 PBO1 传送到纹理对象,同时 CPU 将新的图像数据复制到 PBO2 中。 和不使用 PBO 加载图像数据到纹理对象的耗时差别: 使用 2 个 PBO 加载图像数据的耗时 不使用 PBO 加载图像数据的耗时 使用两个 PBO 从帧缓冲区读回图像数据 使用两个 PBO 从帧缓冲区读回图像数据

    3.2K51发布于 2020-06-01
  • 来自专栏阿利民

    PBO是OpenGL最高效的像素拷贝方式吗?

    也正因为这个特性,使得在使用单个PBO的情况下,性能提升并不明显,所以通常需要两个PBO配合使用。    于此同时,去取出第二个PBO的数据(如果已经准备好),PBO数据的读取主要通过glMapBufferRange(内存映射)的方式。 图片出自OpenGL Pixel Buffer Object (PBO)。 正确使用PBO的方式是,首先判断是否支持PBO,如果支持,则还是先使用glReadPixels进行读取测试,记录平均耗时,然后再使用PBO进行读取测试,记录平均耗时,最后对比两个方式的耗时,选择最快的一个 虽然ImageReader有对齐的问题,但是它却可以让你忽略PBO的兼容性。它使用简单标准;它天然支持多级缓存;它不需要OpenGL ES 3.0;它比PBO更为稳定和通用。

    2.8K20编辑于 2022-05-16
  • 来自专栏字节流动

    Android OpenGL 渲染图像读取哪家强?

    PBO 仅用于执行像素传输,不连接到纹理,且与 FBO (帧缓冲区对象)无关。 PBO 类似于 VBO(顶点缓冲区对象),PBO 开辟的也是 GPU 缓存,而存储的是图像数据。 PBO 可以在 GPU 的缓存间快速传递像素数据,不影响 CPU 时钟周期,除此之外,PBO 还支持异步传输。 PBO 类似于“以空间换时间”策略,在使用一个 PBO 的情况下,性能无法有效地提升,通常需要多个 PBO 交替配合使用。 ? 2 个 PBO read pixels 如上图所示,利用 2 个 PBO 从帧缓冲区读回图像数据,使用 glReadPixels 通知 GPU 将图像数据从帧缓冲区读回到 PBO1 中,同时 CPU 关于 PBO 的详细使用可以参考文章:OpenGL ES 3.0 开发连载(22):PBO , 这里不再赘述。

    5.5K10发布于 2020-11-03
  • 来自专栏关键帧Keyframe

    音视频面试题集锦第 21 期

    2、 使用 OpenGL PBO 为什么能提高效率? 例如,当更新纹理时,可以先将数据复制到 PBO,然后由 GPU 直接从 PBO 读取,而不是每次都从 CPU 内存中复制。 双缓冲或多缓冲技术:通过使用两个或多个 PBO,可以在一个 PBO 进行 GPU 操作的同时,使用 CPU 填充另一个 PBO,从而实现更高效的流水线操作。 双 PBO 例如上图所示,利用 2 个 PBO 从帧缓冲区读回图像数据,使用 glReadPixels 通知 GPU 将图像数据从帧缓冲区读回到 PBO1 中,同时 CPU 可以直接处理 PBO2 中的图像数据 通过交换 PBO 的方式进行拷贝和传送,可以实现这两步操作同时进行。

    54511编辑于 2024-05-08
  • 来自专栏字节流动

    熟悉 OpenGL VAO、VBO、FBO、PBO 等对象,看这一篇就够了

    PBO 仅用于执行像素传输,不连接到纹理,且与 FBO (帧缓冲区对象)无关。 PBO 类似于 VBO(顶点缓冲区对象),PBO 开辟的也是 GPU 缓存,而存储的是图像数据。 PBO 可以在 GPU 的缓存间快速传递像素数据,不影响 CPU 时钟周期,除此之外,PBO 还支持异步传输。 PBO 类似于“以空间换时间”策略,在使用一个 PBO 的情况下,性能无法有效地提升,通常需要多个 PBO 交替配合使用。 2 个 PBO read pixels 如上图所示,利用 2 个 PBO 从帧缓冲区读回图像数据,使用 glReadPixels 通知 GPU 将图像数据从帧缓冲区读回到 PBO1 中,同时 CPU 可以直接处理 PBO2 中的图像数据。

    12.3K85发布于 2021-10-27
  • 来自专栏关键帧Keyframe

    音视频面试题集锦第 19 期 | 读取纹理数据

    3、介绍一下 PBO(Pixel Buffer Object)? 1)PBO 基础介绍。 OpenGL PBO(Pixel Buffer Object),被称为像素缓冲区对象,主要被用于异步像素传输操作。PBO 仅用于执行像素传输,不连接到纹理,且与 FBO (帧缓冲区对象)无关。 OpenGL PBO(像素缓冲区对象) 类似于 VBO(顶点缓冲区对象),PBO 开辟的也是 GPU 缓存,而存储的是图像数据。 PBO 就是为了解决这个访问慢的问题而产生的。 不使用 PBO 加载纹理: 使用 PBO 加载纹理: 2) PBO 如何使用? PBO2 中的图像数据。

    1K11编辑于 2024-03-25
  • 来自专栏字节流动

    面试中经常被问到的 OpenGL ES 对象,你知道的有哪些?

    PBO 仅用于执行像素传输,不连接到纹理,且与 FBO (帧缓冲区对象)无关。 PBO 类似于 VBO(顶点缓冲区对象),PBO 开辟的也是 GPU 缓存,而存储的是图像数据。 PBO 可以在 GPU 的缓存间快速传递像素数据,不影响 CPU 时钟周期,除此之外,PBO 还支持异步传输。 PBO 类似于“以空间换时间”策略,在使用一个 PBO 的情况下,性能无法有效地提升,通常需要多个 PBO 交替配合使用。 ? 2 个 PBO read pixels 如上图所示,利用 2 个 PBO 从帧缓冲区读回图像数据,使用 glReadPixels 通知 GPU 将图像数据从帧缓冲区读回到 PBO1 中,同时 CPU 关于 PBO 的详细使用可以参考文章:OpenGL ES 3.0 开发连载(22):PBO , 这里不再赘述。

    2.7K50发布于 2020-12-15
  • 来自专栏拓端tecdat

    Matlab古代玻璃制品化学成分数据鉴别:K近邻回归、聚类、决策树、随机森林、卡方检验、相关性分析

    (-0.798)呈强负相关;PbO与BaO(0.835)呈强正相关;未风化铅钡玻璃:SiO₂与PbO(-0.805)、SiO₂与BaO(-0.783)呈强负相关;Fe₂O₃与SnO(0.756)呈强正相关 核心结论:氧化铅(PbO)是最关键的分类指标——当PbO含量<5.46时,判定为高钾玻璃;当PbO含量≥5.46时,判定为铅钡玻璃,模型训练集与测试集准确率均为100%。 下图为包含PbO特征的决策树判定图,可直接通过PbO含量划分类型:若剔除PbO特征,决策树显示氧化钡(BaO)为首要特征(重要性69.8%),其次是二氧化硫(SO₂,21.2%)、氧化铝(Al₂O₃,9.1% =47.47%(低硅高铅);聚点2:SiO₂=25.40%,BaO=25.83%(低硅高钡);聚点3:SiO₂=58.93%,PbO=20.12%(高硅低铅)。 :高钾玻璃:金属氧化物(Fe₂O₃、MgO、Al₂O₃)间关联性强,推测制作时可能采用同类矿物原料;铅钡玻璃:助熔剂成分(PbO、BaO)间关联性强,符合古代“铅钡共生”的冶炼工艺特点。

    17310编辑于 2026-02-12
  • 来自专栏关键帧Keyframe

    音视频知识图谱 2022.04

    PBO(Pixel Buffer Object,像素缓冲区对象) OpenGL ES 3.0 才支持,在 Android 上有兼容性问题。 PBO 类似于 VBO(顶点缓冲区对象),开辟的也是 GPU 缓存,而存储的是图像数据。PBO 不连接到纹理,且与 FBO (帧缓冲区对象)无关。 PBO 可以在 GPU 的缓存间快速传递像素数据,不影响 CPU 时钟周期,支持异步,主要用于异步像素传输。 以空间换时间,通常需要多个 PBO 交替配合使用来提升性能。 性能和实现选择 大分辨率情况,ImageReader、PBO、HardwareBuffer 明显优于 glReadPixels 方式。 一般 HardwareBuffer、ImageReader、PBO 三种方式性能相差不大,HardwareBuffer 理论上性能最优。

    1K30编辑于 2022-06-13
  • 来自专栏若尘的技术专栏

    OpenGL ES 对象

    PBO 仅用于执行像素传输,不连接到纹理,且与 FBO (帧缓冲区对象)无关。 PBO 类似于 VBO(顶点缓冲区对象),PBO 开辟的也是 GPU 缓存,而存储的是图像数据。 PBO 可以在 GPU 的缓存间快速传递像素数据,不影响 CPU 时钟周期,除此之外,PBO 还支持异步传输。 PBO 类似于“以空间换时间”策略,在使用一个 PBO 的情况下,性能无法有效地提升,通常需要多个 PBO 交替配合使用。 2 个 PBO read pixels 如上图所示,利用 2 个 PBO 从帧缓冲区读回图像数据,使用 glReadPixels 通知 GPU 将图像数据从帧缓冲区读回到 PBO1 中,同时 CPU 可以直接处理 PBO2 中的图像数据。

    2.2K54发布于 2021-11-24
  • 来自专栏IDC杂谈

    铅酸电池:工作、构造和充电/放电过程

    该 SO 4与阳极的 PbSO 4 反应生成过氧化铅 PbO 2和硫酸(H 2 SO 4)。能量通过增加硫酸的重力和增加电池电位来储存。如上所述,在充电过程中,阳极和阴极会发生以下化学反应。 在阴极PbSO4 + 2e - => Pb + SO4 2-在阳极PbSO4 + 2H2O => PbO2 + SO4 2- + 4H- + 2e-结合以上两个方程,整体化学反应将是2PbSO4 + 2H2O => PbO2 + Pb + 2H2SO 4图片有多种方法可用于对铅酸电池进行充电。 氢离子与 PbO 2反应生成PbO 和水 H 2 O。PbO 开始与 H 2 SO 4反应生成 PbSO 4和 H 2 O。 PbO2 + Pb + 2H2SO4 => 2PbSO4 + 2H2O图片由于阳极和阴极之间的电子交换,板间的电子平衡受到影响。

    3.7K50编辑于 2022-11-02
  • 来自专栏蓄电池

    7-HK-182阀控密封式铅酸蓄电池说明

    放电过程 正极: PbO2+ 2e- + 4H+SO42-=PbSO4+2H2O (还原反应) 负极: Pb+SO42- + 2e-=PbSO4 (氧化反应) 总反应: Pb+PbO2+H2SO42 =2PbSO4+2H2O 充电过程 阴极: PbSO4 + 2e- = Pb + SO42-(还原反应) 阳极: PbSO4 - 2e- + 2H2O = PbO2 + 4H+ + SO42-(氧化反应 ) 总反应: 2PbSO4 + 2H2O = Pb + PbO2 + 2H2SO4电池的容量 1.电池在一定放电条件下所能输出的电量称为电池的容量,以符号“C”表示,常用的单位为安培•小时,简称安时

    53110编辑于 2025-10-10
  • 来自专栏量化投资与机器学习

    【量化核武】美丽的回测——教你定量计算过拟合概率

    回测中过拟合的概率 PBO 的定义为样本内最优参数 n* 在样本外的夏普率小于所有 N 组参数在样本外夏普率的中位数的概率。 有了 PBO 的定义,下面马上来介绍计算 PBO 的框架。 第五步:上一步后会得到 λ 的经验分布 f(λ),由此就可以求出 PBO: 通过考察 PBO 的大小,就能够定量的评价一个策略是否靠谱:真正有效的策略的 PBO 应该较小。 整个求解 PBO 的过程是 model-free 以及 non-parametric 的;它得到 λ 的经验分布 f(λ),进而计算出过拟合的概率,不需要对 PBO 的模型或者参数做任何假设。 将上述过程重复 250 次,得到 250 个训练集、测试集配对,然后计算 λ 的经验分布 f(λ) 以及 PBO。 一个靠谱的策略的 PBO 不应该这么高。因此,在使用双均线构建趋势策略时必须格外小心。 本节的例子说明使用 CSCV 这个框架能够方便的计算出 PBO,从而评价一个策略是不是靠谱。

    2.4K41发布于 2018-10-25
  • 来自专栏SD

    SAP S4 HANA业务伙伴工具集(BDT)

    在功能组中创建屏幕(类型子屏幕)、PBO和PAI模块以及事件的功能模块(对于每个应用程序、表和视图)。PBO模块仅调用服务功能模块BUS_PBO来执行字段状态。 程序逻辑: •每个应用程序的事件(读取数据、检查数据、保存数据) •表事件(应用程序/功能组之间的通信 •每个视图的事件 o用于准备表(排序等)的PBC事件 o数据输入前的PBO事件从定制表中读取文本、 它是配置(定制对象)和工作台对象(如PBO/PAI功能模块)之间的连接。视图定义字段收集在一个视图中,如果: •具有相同的上下文 •检查是相同的 视图中的字段位于子屏幕上,每个视图都分配给技术子屏幕。 查看属性事件功能模块 1 输出前(PBO):例如,选择并显示文本 2 输入后(PAI):字段检查 3 屏幕调用(PBC)之前:排序表,显示第一个条目 仅在以下情况下显示视图 1 视图应用程序处于活动状态 2 视图被分配给要维护的对象 子屏幕的流程逻辑 1 在PBO中调用功能模块BUS_PBO(字段修改,消息) 2 在PAI中调用功能模块BUS_PAI(确定光标位置) 数据集的特殊重要性另一个有趣的点是如何处理角色和技术元素之间的连接

    1.5K30编辑于 2023-10-11
  • 来自专栏SAP Technical

    SAP 系统的消息类型分析 MESSAGE TYPE

    Messages with the type "E" or "W" (except those for PBO and LOAD-OF-PROGRAM) are displayed as a dialog The latter also applies to messages of the type "I" for PBO and LOAD-OF-PROGRAM.

    1.4K20发布于 2020-11-26
  • 来自专栏拓端tecdat

    Python古代文物成分分析与鉴别研究:灰色关联度、岭回归、K-means聚类、决策树分析

    105.987 - 0.532×Na₂O - 0.777×K₂O - 1.717×CaO - 1.094×MgO - 0.15×Al₂O₃ - 0.913×Fe₂O₃ - 0.715×CuO - 0.574×PbO 双模态分类体系的创新构建 主分类决策树的核心机制 通过决策树算法发现氧化铅(PbO)含量是区分高钾玻璃与铅钡玻璃的决定性指标,最优分裂阈值为6.965: 该决策树采用信息熵作为分裂标准,训练过程中通过网格搜索优化参数 决策树提取关键分类特征: 高钾玻璃亚类由CuO和CaO主导: 类别2:CuO>0.595且CaO<3.715 类别3:CuO>0.595且CaO>3.715 铅钡玻璃亚类由SiO₂、BaO、SrO、PbO -氧化铜(0.87) 氧化钾-五氧化二磷(0.84) 关联度矩阵热力图: 实际应用验证与技术创新 未知样本鉴别案例 对8件未知类别样本的鉴别过程: 特征提取:采用标准化后的14种化学成分 主分类:基于PbO 47.815 灵敏度检验与稳定性分析 采用Pearson相关系数评估分类指标的灵敏度: 高钾亚类关键指标: CuO:r=0.75(p<0.01) CaO:r=0.75(p<0.01) 铅钡亚类关键指标: PbO

    31900编辑于 2025-06-19
  • 来自专栏SAP Technical

    ABAP Subscreen and tabstrip controls

    为了使用subscreen,你必须在main screen的PBO和PAI中调用它,CALL SUBSCREEN <subscreenarea>用来告诉system把subscreen的PBO和PAI processing block作为main screen PBO和PAI的一部分。 这保证了在subscreen的PBO之前,subscreen已经得到了需要的数据。在main screen的PAI中,顺序是相反的。 这一过程分为两个步骤: l PAI中,通过用户选择的tabtitle决定哪个page element应当active l 在PBO中程序来显示相应的screen。 在PBO,在subscreen调用之前必须有一个module用来根据ACTIVETAB的值为subscreen相应的variable赋值。

    1.1K20发布于 2020-11-27
  • 来自专栏24K纯开源

    OpenGL与CUDA互操作方式总结

    一般这种情况下注册的是VBO和PBO,VBO一般用于存储顶点坐标、索引等数据;PBO则一般用于存储图像数据,因此称作Pixel Buffer Object。 Object CUDA锁定资源,获取操作资源的指针,在CUDA核函数中进行处理 CUDA释放资源,在OpenGL中使用Buffer Object 下面就以代码为例,讲讲两种方式的异同: (1)OpenGL PBO Texture对象,因此使用了不同的API: cudaGraphicsGLRegisterImage(); cudaGraphicsSubResourceGetMappedArray();   VBO/PBO

    2.6K61发布于 2018-01-18
  • 来自专栏TAB的coding生活

    ABAP随笔-面试回忆 望大家 需求不增 人天飙升

    时不建议使用,一定要使用请每次使用3000,循环的方式使用 (3)该语句自动去重,使用时尽量多的带出主键(不清楚的时候全带出来就行) 2.Dialog 对话框的事件和逻辑流 (1) 调用时首先出发PBO ->子画面PBO,然后显示dynpro画面,当在dynpro点击按钮时,会触发PAI->触发子PAI,触发完之后又会执行PBO->子PBO:如下图 如果你还能说一下另外2个事件就更好: PROCESS SCREEN XXXX 为添加一层调用,执行完毕之后会执行CALL SCREEN XXXX之后的代码语句 (2)LEAVE TO SCREEN XXXX 直接中断当前屏幕的PAI,直接执行XXXX的PBO

    1K20编辑于 2022-06-27
领券