首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glReadPixels对glGetTexImage

glReadPixels对glGetTexImage
EN

Stack Overflow用户
提问于 2016-07-01 08:24:10
回答 1查看 4.4K关注 0票数 2

我需要从一个大的纹理(2048x2048)中提取一个小矩形(200x200),并将RGBA像素放在内存中。似乎有两种方法可以做到这一点:

( a)使用glGetTexImage并传入接收整个纹理的缓冲区,并从该缓冲区读取适当的像素。

b)创建一个框架缓冲区,使用只需要部分的纹理将其绘制进去,并提取glReadPixels生成的像素。

我猜( b)是更快的,但我是相对新手,我想知道我是否朝正确的方向前进。)更容易编写代码,所以我想知道可能的速度命中是否可以忽略不计。

史蒂夫

EN

回答 1

Stack Overflow用户

发布于 2016-07-01 14:56:58

考虑到图像数据在纹理中,有几种可能的解决方案。从最想要的到最少的:

  • 使用glGetTextureSubImage (需要OpenGL 4.5或ARB_get_texture_sub_image)直接完成这项工作。
  • 使用glCopyImageSubData (需要OpenGL 4.3或ARB_copy_image。或NV_copy_image.后者是在更多硬件上实现,而不仅仅是NVIDIAs),将复制所需的矩形转换成合适大小的纹理,然后在此基础上使用glGetTexImage
  • 将大纹理附加到FBO,然后将小纹理附加到另一个FBO。使用glBlitFramebuffer (需要OpenGL 3.0或ARB_framebuffer_objects) 将所需的大纹理部分复制到小纹理。然后在小纹理上使用glGetTexImage

只有在非常老的OpenGL实现下才需要将纹理呈现到具有三角形的框架缓冲区。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38140527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档