我最近决定开始学习 OpenGL,并且学习了 LazyFoo 教程。但是我遇到了通过帧缓冲区对象渲染到纹理的问题 as described here ,因为我的电脑最多只支持 OpenGL 1.4(是的,我更新了我的驱动程序),它不支持 glGenFramebuffers() 和 glBindFramebuffer() 等函数。
除了后备缓冲区,我还有其他方法可以渲染吗?
最佳答案
有一种较旧的离屏渲染机制称为 PBuffer(像素缓冲区)。
它的工作方式与 FBO 完全不同,因为创建 PBuffer 不是 OpenGL API 本身的一部分。您使用依赖于平台的窗口系统接口(interface)创建 PBuffer。例如,您将使用 Windows 下的 WGL 系列函数、基于 Unix/Linux 的系统上的 GLX、Android 上的 EGL 等来设置 PBuffers。
与此相关,您还使用单独的上下文来渲染到 PBuffer。所以你不能只是在同一上下文中的渲染目标之间切换。至少一些窗口系统接口(interface)允许您将 PBuffer 渲染的结果用作不同上下文中的纹理。
由于这是高度依赖于平台的,所以我不会尝试详细阐述PBuffers的使用方法(坦白说,我也有很长时间没有使用它们了,所以内存模糊)。但这里有一些帮助您入门的提示:
https://www.opengl.org/sdk/docs/man2/xhtml/glXCreatePbuffer.xml http://developer.download.nvidia.com/opengl/specs/WGL_EXT_pbuffer.txt https://www.khronos.org/registry/egl/sdk/docs/man/html/eglCreatePbufferSurface.xhtml
关于c++ - 帧缓冲区对象替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25833644/