Framebuffer对象替代品?

时间:2014-09-14 13:15:10

标签: c++ opengl sdl

我最近决定开始学习OpenGL,我进入了LazyFoo教程。但是我遇到了通过帧缓冲对象as described here渲染纹理的问题,因为我的计算机只支持OpenGL 1.4(是的,我更新了我的驱动程序),它不支持像glGenFramebuffers()和glBindFramebuffer()这样的函数。

除了后退缓冲区之外,还有其他方法可以渲染到其他任何东西吗?

2 个答案:

答案 0 :(得分:1)

有一种较旧的屏幕外渲染机制叫做PBuffer(像素缓冲区)。

它与FBO的工作方式完全不同,因为创建PBuffer不是OpenGL API本身的一部分。您可以使用与平台相关的窗口系统界面创建PBuffer。例如,您将使用Windows下的WGL系列,基于Unix / Linux的系统上的GLX,Android上的EGL等功能来设置PBuffers。

与此相关,您还使用单独的上下文渲染到PBuffer。因此,您不能只在同一个上下文中切换渲染目标。至少有一些窗口系统接口允许您将PBuffer渲染的结果用作不同上下文中的纹理。

由于这是高度依赖平台的,我不会详细详细说明如何使用PBuffers(坦率地说,自从我使用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

答案 1 :(得分:0)

您是否尝试过使用累积缓冲液?

http://www.cse.msu.edu/~cse872/tutorial5.html