今天帶大家來看兩個(gè)有關(guān)紋理的綜合應(yīng)用--大小球自轉(zhuǎn)與紋理隧道
大小球自轉(zhuǎn)案例:
主要步驟流程:
ChangeSize 中 設(shè)置視口焰轻,設(shè)置投影方式昆雀,將投影矩陣加載到投影矩陣堆棧,將投影矩陣堆棧和模型視圖矩陣對(duì)象設(shè)置到管道中
RenderScene 中 設(shè)置地板顏色揩懒,設(shè)置動(dòng)畫時(shí)間挽封,清除顏色緩存區(qū)和深度緩沖區(qū),壓入棧(棧頂)智亮,設(shè)置觀察者矩陣点待,壓棧(鏡面),添加反光效果(翻轉(zhuǎn)Y軸,鏡面世界圍繞Y軸平移一定間距)状原,指定順時(shí)針為正面苗踪,繪制地面以外其他部分(鏡面),恢復(fù)為逆時(shí)針為正面瓦呼,繪制鏡面测暗,恢復(fù)矩陣磨澡,開啟混合功能(繪制地板),指定glBlendFunc 顏色混合方程式稚字,綁定地面紋理,紋理調(diào)整著色器瘫想,開始繪制国夜,取消混合短绸,繪制地面以外其他部分,繪制完恢復(fù)矩陣醋闭,交換緩存區(qū),提交重新渲染
SpeacialKeys 中 特殊鍵位操作產(chǎn)生的變化
SetupRC 中?設(shè)置清屏顏色到顏色緩存區(qū)乐埠,初始化著色器管理器囚企,開啟深度測(cè)試/背面剔除,設(shè)置大球球扯罐,設(shè)置小球(公轉(zhuǎn)自轉(zhuǎn))歹河,設(shè)置地板頂點(diǎn)數(shù)據(jù)&地板紋理,隨機(jī)小球球頂點(diǎn)坐標(biāo)數(shù)據(jù)秸歧,命名紋理對(duì)象,將TGA文件加載為2D紋理
ShutdownRC 中?刪除紋理
紋理隧道案例:
紋理隧道流程:
ChangeSize 中 設(shè)置視口大小,生成透視投影
RenderScene 中?用當(dāng)前清除色今布,清除窗口,模型視圖壓棧部默,Z軸平移viewZ 距離傅蹂,紋理替換矩陣著色器算凿,綁定紋理氓轰,出棧浸卦,緩存區(qū)交換
SpecialKeys 中 ?移動(dòng)的是深度值,更新窗口储玫,即可回調(diào)到RenderScene函數(shù)里(重刷)
SetupRC ?中 設(shè)置背景色撒穷,初始化shaderManager,生成紋理標(biāo)記端礼,循環(huán)設(shè)置紋理數(shù)組的紋理參數(shù)(綁定紋理對(duì)象,加載tga文件,加載紋理蛤奥、設(shè)置過濾器和包裝模式,載入紋理 glTexImage2D,釋放原始紋理數(shù)據(jù))僚稿,設(shè)置幾何圖形頂點(diǎn)/紋理坐標(biāo)(上.下.左.右)
ShutdownRC 中 刪除紋理