我正在实施渲染到纹理的概念,并且对 FBO 的范围有疑问。在我完成对默认 FBO 的 glDrawArrays 调用并渲染到纹理后,我将删除纹理和非默认 FBO。然后我调用 glReadPixels 来读取默认 FBO 上的内容。所以,我的问题是我做得对吗?我的意思是我应该在删除 FBO 和纹理之前调用 readpixel 吗?
我假设在默认 FBO 上绘制后,我们不需要非默认 FBO 和纹理,但后来一些 OpenGL 开发人员告诉我,我在上面提到的应用程序中做了一些奇怪的事情。请帮助我理解这一点。
以下是我正在遵循的步骤:
- 创建一个帧缓冲区对象并附加一个合适的纹理作为颜色附件
- 绑定和清除FBO
- 渲染一些原语
- 取消绑定 FBO 从而切换回系统 FBO
- 绑定用作颜色附件的纹理
- 使用上面创建的纹理在系统 FBO 上渲染。
- 删除创建的纹理和 FBO。
- 来自系统 FBO 的 glReadpixel。
现在,正如我在系统 FBO 上渲染的那样。为什么我们仍然需要该纹理和其他用作纹理的 FBO?
注意:我使用术语系统 FBO 来区分两个 FBO,这是我的术语。