【发布时间】:2014-03-21 06:28:13
【问题描述】:
好吧,让我们看看我是否理解阴影映射背后的想法。
- 创建多个点亮的 FBO(最多 8 个)
- 为这些 FBO 创建相同数量的深度纹理(阴影贴图)
- 为每个 FBO 执行离屏渲染(渲染到纹理,从每个灯光的角度绘制场景,最多 8 次)
这对吗?
但是我如何渲染带有阴影的最终场景呢?我必须为每个阴影贴图渲染整个场景吗?
int main() {
//Number of lights = 8;
glUseProgram(programa);
glUniformli(shadowM0,4);
glActivateTexture(GL_TEXTURE4);
glBindTexture(GL_TEXTURE_2D,depthT0);
//Draw Escene?
glUniformli(shadowM1,5);
glActivateTexture(GL_TEXTURE5);
glBindTexture(GL_TEXTURE_2D,depthT1);
//Draw Escene?
glUniformli(shadowM2,6);
glActivateTexture(GL_TEXTURE6);
glBindTexture(GL_TEXTURE_2D,depthT2);
//Draw Escene?
...
glUseProgram(0);
...
}
如果没有,我应该如何进行场景的最终渲染?
如果我遗漏了某些内容或任何有关使用前向渲染改进想法的建议,我将不胜感激对上述步骤的任何更正。
【问题讨论】:
-
全向光需要多个阴影贴图。
-
好的,只有我使用点光源。但是那么这段代码是对的吗?对于相同数量的灯光 (8),我可以使用更少的 FBO 或更少的纹理对象吗?谢谢。
-
点光源确实向各个方向发光,是吗?
-
确实如此。抱歉,我指的是定向灯。