用OpenGL渲染场景,是不是多加一个光源,就要将场景中的几何体再渲染一遍? 5

 我来答
archmageee4
2015-04-03 · TA获得超过1516个赞
知道大有可为答主
回答量:1581
采纳率:78%
帮助的人:925万
展开全部
不是.GL1.0固定管线我就不说了..
传统的光照算法在shader里面的处理 就是用一个for循环 ,处理每个顶点时,把所有的光照都处理一下.4个光就累加4次 ,16个光就累加16次....
但因为shader中寄存器数量有限制. 所以一般都会有个最大光源处理数量的限制.

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

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式