帧缓冲区对象VS调用TexCoord2f?

我现在正在学习使用lwjgl的OpenGL的基础知识,并且遵循一个指导,我已经有了可以在场景中移动的纹理四边形。

我一直在阅读关于帧缓冲区对象,我不清楚他们的目的和他们的好处。

我的理解是,我将创建一个具有我想要的纹理的FBO,加载FBO,绘制一个四边形,然后卸载FBO。 我目前正在做的纹理管理技术叫做什么,它与使用FBO有什么不同?

使用FBO有什么好处? 它如何适应事物的macros伟渲染scheme?

FBO对于简单地将静态纹理应用于模型是没有用的。 对于静态纹理,您可以在启动过程中使用glTexImage2D它们进行初始化,然后在渲染模型时使用纹理。 这大概是你现在正在做的。

当你想要一个不仅仅是从文件加载的静态图像,而是由GPUdynamic生成的纹理时,就使​​用帧缓冲区对象。 它们允许您捕获由GPU渲染的图像,然后使用该图像作为进一步渲染的纹理。 这个function也被称为“渲染到纹理”,通常用于高级渲染技术。

使用FBO的一个例子是在湖泊或海洋等水体中进行reflection。 您将创建一个纹理对象来保存reflection的图像并将其附加到一个FBO; 那么在渲染主场景之前,每一帧都要绑定FBO并渲染reflection; 所有的渲染输出将转到纹理而不是屏幕。 然后,您可以像平常一样解除绑定FBO并渲染场景,使用水着色器中的纹理产生reflection。 这样reflection会随着相机和其他物体的移动而dynamic更新。

其他使用FBO的例子包括阴影贴图,后期处理,延期着色以及许多其他高级渲染技术。 你可以在网上阅读所有关于这些(以及我刚刚描述的reflection技术的细节)。 FBO是高级OpenGL使用的关键部分,所以他们非常值得花费一些时间 – 但是可能直到您掌握了更基本的OpenGL用法。