25.2简单阴影


25.2 简单阴影 在OpenGL中获取DepthTexture很简单,只需要将场景渲染到FBO,并且设置DepthTarget为Texture。 但是实际想去使用它,却颇为困难。 还是先看下本小节实现的效果吧,Alt+鼠标左键旋转,可以看到飞机投影到后面的墙壁上。 FBO Stack 在上一节,将整个场景渲染到FBO,然后在ImGUI中显示出来DepthTexture,似乎很简单,这是只使用1个FBO的情况。 但这一节,我们使用Shadow Mapping,来实现阴影。 首先需要将场景渲染到FBO,得到DepthTexture,这个FBO先称之为FBODepthTexture。 然后再正常渲染一次场景到FBO,用于在Editor中显示,这个FBO称之为FBOEngine。 那么如何去管理这...

25.2 简单阴影 在OpenGL中获取DepthTexture很简单,只需要将场景渲染到FBO,并且设置DepthTarget为Texture。 但是实际想去使用它,却颇为困难。 还是先看下本小节实现的效果吧,Alt+鼠标左键旋转,可以看到飞机投影到后面的墙壁上。 FBO Stack 在上一节,将整个场景渲染到FBO,然后在ImGUI中显示出来DepthTexture,似乎很简单,这是只使用1个FBO的情况。 但这一节,我们使用Shadow Mapping,来实现阴影。 首先需要将场景渲染到FBO,得到DepthTexture,这个FBO先称之为FBODepthTexture。 然后再正常渲染一次场景到FBO,用于在Editor中显示,这个FBO称之为FBOEngine。 那么如何去管理这多个FBO呢? 我们知道FBO其实是个虚拟的屏幕,当Bind一个FBO,后续所有的Draw结果都存储到了这个FBO里。 所以要按照先使用,先Bind的规则,依次对FBO进行Bind操作,然后再取消Bind。 先进先出,所以用Stack来存储。 两个FBO的使用规则如下图: 主要代码如下: 压入FBO...

发布者: 作者: 转发
评论区 (0)
U