关于glfrustum与hemicube的真实长度的关系

在做radiosity的过程中,碰到一个一直比较纠结的问题是关于glfrustum的nearplane是否应该恰好应该为hemicube的真实的最短边,现在想通说不用。

具体过程:通过设置glulookat和glfrustum为hemicube的side和top设置视图,然后通过glReadBuffer读取存储在frame buffer中的图像,然后存储进入数组colorbuf中,根据colorbuf中存储的值来判断是哪个面gather能量,因为每个gather的面都用唯一的颜色标识。

=>我们通过读取frame buffer中存储的图像,将其切割成winWithHeight份(即正方形的宽或者高),然后读取每一份,识别gather面片。

=>只要hemicube的side或者top的view能够刚好投影,即glfrustum设置在透视图中,不用一定要刚好在hemicube那里,因为一个场景还是划分为winWithHeight份,所以不影响结果。以side view为例,left,right,bottom,top,nearplane,farplane应为 -edgeWidth/2,edgeWidth/2, 0, edgeWidth/2, edgeWidth/2,farplane只要一个大一点的值就行,也就是说在这个glfrustum的左右上下以及nearplane值的比例为hemicube的比例即可,不用一定要恰好在shortest edge上。只要保证glulookat的方向正确,即方向必须垂直于最短边或者平行,在side view的时候;当top view的时候,方向为patch的法线。

这里值得注意的是一个场景还是划分为winWithHeight份,不能划分为太少份,因为如果每一份太大的话,可能包含两个或者多个gather的面,这样结果就不准确了。

 

 

 

 

转载于:https://www.cnblogs.com/qingsunny/archive/2013/05/03/3056362.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值