- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从大纹理 (2048x2048) 中提取一个较小的矩形 (200x200),并将 RGBA 像素放入内存中。似乎有两种方法可以做到这一点:
a) 使用 glGetTexImage 并传入接收整个纹理的缓冲区,并从中读取适当的像素
b) 创建一个帧缓冲区,使用仅包含所需部分的纹理将其绘制到其中,并提取使用 glReadPixels 生成的像素。
我猜 b) 更快,但我是相对新手,我想知道我是否正朝着正确的方向前进。 a) 更容易编码,所以我想知道可能的速度影响是否可以忽略不计。
史蒂夫
最佳答案
鉴于图像数据在纹理中,有几种可能的解决方案。从最需要到最不想要的顺序:
使用 glGetTextureSubImage
(需要 OpenGL 4.5 或 ARB_get_texture_sub_image)直接完成工作。
使用 glCopyImageSubData
(需要 OpenGL 4.3 或 ARB_copy_image。或 NV_copy_image。后者是 implemented on more hardware than just NVIDIAs )到 copy the desired rectangle放入适当大小的纹理中,然后在其上使用 glGetTexImage
。
将大纹理附加到一个 FBO,然后将小纹理附加到另一个 FBO。使用 glBlitFramebuffer
(需要 OpenGL 3.0 或 ARB_framebuffer_objects)to copy the desired section of the large texture to the small one .然后在小纹理上使用 glGetTexImage
。
只有在非常旧的 OpenGL 实现下工作时才需要将纹理渲染到带有三角形的帧缓冲区。
关于opengl - glReadPixels 与 glGetTexImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38140527/
我需要从大纹理 (2048x2048) 中提取一个较小的矩形 (200x200),并将 RGBA 像素放入内存中。似乎有两种方法可以做到这一点: a) 使用 glGetTexImage 并传入接收整个
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 10 个月前
我对 OpenGL 和 glGetTexImage() 有疑问。 我想获取我之前创建的纹理的像素代码如下: glGenTextures(1, &texture); glBindTexture(GL_T
我正在尝试通过 glGetTexImage 检索纯 alpha 纹理的像素信息。 问题是,glGetTexImage-Call 似乎比它应该读取的数据多,导致内存损坏和 delete[]-Call 崩
我在某些 ATI 卡(Radeon X1650、X1550 + 等)上遇到了难题。 消息是:“模块'atioglxx.dll'中地址6959DD46的访问冲突。读取地址00000000” 它发生在这一
在了解到我必须使用 FBO 之后从着色器读取 float 据,我试过这个但没有运气: glGenTextures( 1, &renderTex ); glBindTexture( GL_TEXTU
我无法将立方体贴图读回 CPU。当我将数据传递给 glTexImage2D 中的立方体贴图时调用,可以毫无问题地读回此数据。但是当我渲染到立方体贴图时,只有立方体贴图的正 x 侧包含敏感数据。其他一切
我写了一些代码,太长无法粘贴到这里,它通过使用无绑定(bind) imageLoad 和 imageStore 的片段着色器渲染到 3D 1 组件浮点纹理。 该代码绝对有效。 然后我需要解决一些 GL
我使用该函数从显卡获取我的纹理,但出于某种原因,如果 miplevel > 0,它不会在某些卡上返回任何内容 这是我用来获取图像的代码: glGetTexImage(GL_TEXTURE_2D, mi
我是一名优秀的程序员,十分优秀!