理解OpenGL中帧缓存FrameBuffer & 渲染缓存RenderingBuffer

操作都是在默认帧缓冲的渲染缓冲上进行的。默认的帧缓冲是在你创建窗口的时候生成和配置的(GLFW帮我们做了这些)。

帧缓存帮助我们离屏渲染,提高渲染速度

unsigned int captureFBO;
glGenFramebuffers(1, &captureFBO);
glBindFramebuffer(GL_FRAMEBUFFER, captureFBO);

unsigned int captureRBO;
glGenRenderbuffers(1, &captureRBO);
glBindRenderbuffer(GL_RENDERBUFFER, captureRBO);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, 512, 512);

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER,captureRBO);
。
。
。
最后一件事就是将纹理附加到帧缓冲上了
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, texture_name, 0);

另外想在这里记录一下易忘知识点:

如果我们加载很多纹理图像,怎么样让shader知道我们是想渲染哪个纹理呢?

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture_name);

然后再使用

Shader_name.use();(learnopenngl造的小轮子,等同于glUseProgram(ID))

这样就可以调用shader去处理我们想要渲染的纹理数据了

https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/05%20Framebuffers/

猜你喜欢

转载自blog.csdn.net/qq_41598072/article/details/106812700
今日推荐