Skip to content

Latest commit

 

History

History

47_deferred_shading

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

延迟渲染

position

image-20211214103822785

normal

image-20211214103902674

获取position和normal就可以通过这些缓冲里的数据计算光照

延迟渲染需要关闭混合

// // 启用混合
// glEnable(GL_BLEND);
// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

计算光照

image-20211214104241964

延迟渲染结合正向渲染

需要将gBuffer的深度缓冲复制到默认缓冲中,否则会出现后面绘制的物体无法显示或者深度信息不正确的问题

// 延迟结合正向渲染
glBindFramebuffer(GL_READ_FRAMEBUFFER, gBuffer);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); // 指定默认的帧缓冲为写缓冲
// 复制gbuffer的深度信息到默认帧缓冲的深度缓冲
glBlitFramebuffer(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, GL_DEPTH_BUFFER_BIT, GL_NEAREST);
glBindFramebuffer(GL_FRAMEBUFFER, 0);

绘制灯光物体

image-20211214110812713

参考

https://learnopengl-cn.github.io/05%20Advanced%20Lighting/08%20Deferred%20Shading/#_1