xyl*_*per 12 opengl benchmarking fbo textures copy
将像素从纹理复制到纹理的最佳方法是什么?
我找到了一些方法来实现这一目标.例如,有一个方法,glCopyImageSubData()但我的目标版本是OpenGL 2.1,所以我不能使用它.另外,由于性能非常重要,glGetTexImage2D()不是一种选择.由于我将视频帧作为纹理处理,因此我必须每秒复制大约30~60次.
我找到的可用选项是下一个:
您可以忽略创建fbo的成本,因为fbo只会创建一次.
请不要发布像'取决于'的东西.做你的基准.'.我不只针对一个GPU.如果有的话请,请让我知道它取决于什么.
此外,因为测量OpenGL调用的时间非常困难,所以我想知道的不是定量结果.我需要一些关于我应该避免哪种方法的建议.
如果您知道更好的复制纹理方法,请告诉我.
谢谢你的阅读.
xyl*_*per 19
由于我不知道计时器查询,我没有想到基准测试.现在,我可以做自己的基准测试.我测量了每100次操作的次数并重复了五次.创建FBO的成本不包括在内.
- S=source texture, D=destination texture, SF=FBO of S, DF=FBO of D
- operation=copying texture to texture
- op/s = how many operations for one second(average), larger is better
Run Code Online (Sandbox Code Playgroud)
使用简单的passthrough着色器创建DF并将S渲染为DF
创建SF并对D使用glCopyTexSubImage2D()
创建DF和SF并使用glBlitFramebuffer()
创建DF和SF并使用glCopyPixels()
passthrough shader ~ glCopyTexSubImage2D > glBlitFramebuffer >> glCopyPixels
Run Code Online (Sandbox Code Playgroud)
因此,简单的passthrough着色器显示复制纹理的最佳性能.glCopyTexSubImage2D比passthrough着色器略慢.fbo-blitting足够快但比着色器和glCopyTexSubImage2D更糟糕.glCopyPixels,我没有预料到好的结果,表现出最差的表现作为我的期望.
| 归档时间: |
|
| 查看次数: |
8917 次 |
| 最近记录: |