c++ - 帧缓冲区对象替代品?

标签 c++ opengl sdl

我最近决定开始学习 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/

相关文章:

opengl - 为什么剪刀测试要落后于片段操作?

Makefile 中的 C : Unix SDL2 library : undefined reference, 问题?

c - SDL2 - 如何使用一个缓冲区而不是两个进行渲染?

c++ - C++中的多重继承和多态性

c++ - 在重载函数中按引用传递对象与按值传递对象

c++ - 任何人都可以解释这个简单逻辑背后的逻辑吗?我迷路了

c++ - 使用 glMapBuffer 用一个缓冲区渲染多个对象?

opengl - 从深度缓冲区读取深度值的有效方法

c++ - 编译发布

c++ - 使用 C++ 从文件中读取数据并在命中特定行(字符串)后对特定列求和