内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

基于Qt的OpenGL可編程管線學(xué)習(xí)(8)-探照燈-創(chuàng)新互聯(lián)

關(guān)于探照燈的效果如下圖所示:

成都創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計,網(wǎng)站設(shè)計,企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為成百上千家服務(wù),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣服務(wù)!

基于Qt的OpenGL可編程管線學(xué)習(xí)(8)- 探照燈

基于Qt的OpenGL可編程管線學(xué)習(xí)(8)- 探照燈

探照燈需要傳入光源的位置,光源的方向以及夾角的大?。▕A角為光源覆蓋的夾角的一半)

計算思路:

用光源到點的距離與光源的方向的單位向量做點乘,得到夾角的cos,用計算的夾角cos與

傳入的角度的cos做比較,確定光線照射的范圍。邊緣不部分計算的cos做基底,然后給定一個冪,

就可以做到漸變的效果;探照燈的計算時也要算上衰減

Shader中的相關(guān)代碼如下:

vec3 light = M_LightPos.xyz;
float distanceLight = 0.0;      // 距離光源的距離
float attenuation = 1.0;         // 衰減系數(shù)

// 衰減因子
float constantFactor = 0.9;           // 常亮衰減常數(shù)
float linerFactor = 0.0;                 //  線性衰減系數(shù)
float expFactor = 0.0;                  //  平方衰減系數(shù)
// 點光源
if (M_LightPos.w != 0.0)
{
    light = M_LightPos.xyz - M_WordPos;
    distanceLight = length(light);
    attenuation = 1.0 / (constantFactor + linerFactor * distanceLight + expFactor * distanceLight * distanceLight);
}
vec3 LightNormal = normalize(light);       // 指向光源的單位向量
vec3 NormalNormal = normalize(M_normal);      //  法線的單位向量

light = M_LightPos.xyz - M_WordPos;
vec3 spotLightPointDirection = normalize(-light);
vec3 spotLightDirection = normalize(M_SpotLightDirection.xyz);
float spotDegreeCos = dot(spotLightPointDirection, spotLightDirection);
float spotCutoffCos = cos(M_SpotLightCutoff * 3.14 / 180.0);
float diffuseIntensity = 0.0;
if (M_SpotLightDirection.w > 0 && M_SpotLightCutoff > 0)
{
    if (spotDegreeCos > spotCutoffCos)
    {
        diffuseIntensity = pow(max(0.0, spotDegreeCos), M_SpotLightDirection.w) * 2;
    }
}
else
{
    diffuseIntensity = max(0.0, dot(NormalNormal, LightNormal));
}
vec4 diffuseColor = M_DiffuseLightColor * M_DiffuseMaterial * 
                    diffuseIntensity * attenuation;

CPU中的設(shè)置

// 光源位置
float nLightPos[4] = {0.0f, 0.0f, -2.0f, 1.0f};
OpenGLCore->glUniform4fv(m_LightPos, 1, nLightPos);
// 探照燈方向及角度
float nSpotLightDirection[4] = {0.0f, 0.0f, -1.0f, 128.0f};
OpenGLCore->glUniform4fv(m_SpotLightDirection, 1, nSpotLightDirection);
float nSpotLightDegree = 30.0f;
OpenGLCore->glUniform1f(m_SpotLightCutoff, nSpotLightDegree);

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當前文章:基于Qt的OpenGL可編程管線學(xué)習(xí)(8)-探照燈-創(chuàng)新互聯(lián)
標題鏈接:http://www.rwnh.cn/article40/gdjeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站營銷型網(wǎng)站建設(shè)、定制網(wǎng)站定制開發(fā)、企業(yè)建站、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
九寨沟县| 高碑店市| 年辖:市辖区| 通许县| 蒲江县| 赣榆县| 大姚县| 曲阳县| 黄山市| 乡宁县| 东方市| 息烽县| 丰顺县| 黑山县| 吉隆县| 涪陵区| 施秉县| 灵川县| 东丰县| 泰和县| 文昌市| 襄垣县| 康平县| 西平县| 万山特区| 日喀则市| 皋兰县| 连云港市| 收藏| 札达县| 高平市| 沽源县| 油尖旺区| 吉木萨尔县| 灵石县| 平谷区| 漠河县| 安庆市| 桂林市| 万盛区| 商南县|