用OpenGL渲染场景,是不是多加一个光源,就要将场景中的几何体再渲染一遍? 5
1个回答
展开全部
不是.GL1.0固定管线我就不说了..
传统的光照算法在shader里面的处理 就是用一个for循环 ,处理每个顶点时,把所有的光照都处理一下.4个光就累加4次 ,16个光就累加16次....
但因为shader中寄存器数量有限制. 所以一般都会有个最大光源处理数量的限制.
但现在有种叫 延迟渲染 的技术,理论上可以处理无上限的光源效果.具体论文你可以查.步骤蛮烦得.
传统的光照算法在shader里面的处理 就是用一个for循环 ,处理每个顶点时,把所有的光照都处理一下.4个光就累加4次 ,16个光就累加16次....
但因为shader中寄存器数量有限制. 所以一般都会有个最大光源处理数量的限制.
但现在有种叫 延迟渲染 的技术,理论上可以处理无上限的光源效果.具体论文你可以查.步骤蛮烦得.
追问
谢谢~,那么在shader中加多个光照,在C++代码中绘制场景时是要有几个光源就循环几次吗?我只是在初始化里面初始化了两个光源,shader中也是加的2个,绘制场景只有一遍,测试时渲染时间与一个光源时完全一样,我就无奈了···
追答
c++里只要把每个光源的信息都放在寄存器数组里, 渲染前传进gpu就行了呀 ,我建议你去下载powervr出的opengles 的sdk.里面各种小demo都有
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询