C++ 推迟讨论的问题
我只是有一些关于延迟着色的问题。我已经到了可以从多个渲染目标获得颜色、位置、法线和纹理的地步。我的问题与我下一步做什么有关。为了确保从纹理中获得正确的数据,我在屏幕上放置了一个平面,并将纹理渲染到该平面上。我不明白的是如何操纵这些纹理,以便最终输出使用灯光进行着色。我是否需要渲染占据屏幕的平面或四边形,并将所有计算应用于该平面?如果我这样做,我会有点困惑,我如何才能让多个灯光以这种方式工作,因为“平面”将是一个可渲染对象,因此对于每个灯光,我需要重新渲染平面。我想得不对吗?您需要渲染一些几何体来表示灯光覆盖的区域。灯光的每个像素的照明项累积到目标渲染目标中。这将为您提供lit结果 有多种方法可以做到这一点。要启动并运行,一个简单/容易(而且速度非常慢)的方法是为每个灯光渲染一个全屏四元 基本上:C++ 推迟讨论的问题,c++,opengl,deferred-shading,C++,Opengl,Deferred Shading,我只是有一些关于延迟着色的问题。我已经到了可以从多个渲染目标获得颜色、位置、法线和纹理的地步。我的问题与我下一步做什么有关。为了确保从纹理中获得正确的数据,我在屏幕上放置了一个平面,并将纹理渲染到该平面上。我不明白的是如何操纵这些纹理,以便最终输出使用灯光进行着色。我是否需要渲染占据屏幕的平面或四边形,并将所有计算应用于该平面?如果我这样做,我会有点困惑,我如何才能让多个灯光以这种方式工作,因为“平面”将是一个可渲染对象,因此对于每个灯光,我需要重新渲染平面。我想得不对吗?您需要渲染一些几何体来
- 设置:将所有对象渲染到g缓冲区中,存储各种对象属性(反照率、镜面反射、法线、, 深度,无论你需要什么)
- 照明:对于每个灯光:
- 渲染一些几何体以表示灯光将在屏幕上覆盖的区域
- 为计算照明贡献所需的数据采样g缓冲区(可以使用vpos寄存器查找uv)
- 将照明项累积到目标渲染目标中(对于简单的情况,backbuffer可以很好地执行此操作)
这些天来,延迟着色有很多不同的倾斜,但这里完全介绍了原始技术:我刚刚想到了这一点,我是否要制作最终纹理并对该纹理进行所有计算?有道理…嗯,我会试试的谢谢!我会接受这个答案。我问这个问题主要是因为我似乎无法使最终的渲染工作,我想知道我是否误解了如何达到这一点。当我试图渲染我的点光源并从中计算数据时,我发现我只是绑定了错误的顶点数据。谢天谢地,我找到了它,可以继续这样做。我真不敢相信我在画图之前没有绑定顶点数组