glReadPixels是否可用于从GL_TEXTURE_3D读取图层?

问题描述 投票:1回答:1

我正在尝试读取使用FBO渲染的3D纹理。此纹理太大,由于glGetTexImage驱动程序未能为中间存储分配内存[[*(我想避免在发生错误时更改目标缓冲区),导致GL_OUT_OF_MEMORY导致nvidia错误) 。

因此,我想到了渲染每一层后,使用glReadPixels逐层获取此纹理的方法。但是glReadPixels没有图层索引作为参数。实际上将其作为将I / O定向到特定层的东西的唯一地方是几何着色器中的gl_Layer输出。那是写作阶段,而不是阅读阶段。

当渲染每一层后,无论如何我只是尝试对glReadPixels进行调用,我只得到了第0层的纹理像素。因此glReadPixels至少不会失败

something。

但是问题是:我可以使用glReadPixels获得3D纹理的任意层吗?如果没有,鉴于上述内存限制,我应该改用什么?我是否必须在着色器中从3D纹理采样图层以将结果渲染为2D纹理,然后读取

此2D纹理


*

这不是猜测,实际上是从nvidia驱动程序的共享库中跟踪到失败的malloc调用(以纹理的大小作为参数)。
opengl textures fbo
1个回答
0
投票
因此,一旦获得3D纹理,就可以执行此操作:
© www.soinside.com 2019 - 2024. All rights reserved.