作者iamstudent (stu)
看板C_and_CPP
標題Re: [問題] OPENGL 光源
時間Thu Apr 28 14:37:23 2011
※ 引述《FY4 ()》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: DEV-C++
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: OPENGL
: 問題(Question):
: 自己嘗試寫了一顆骰子
: 幫立方體的每一個面 加入了黑色的點 骰子的每個面是白色
: 在沒開啟LIGHTING的情況下 骰子可以在3D中正常的顯示
: 但是在開啟後 在先不討論光源的屬性設置情況下
: 為什麼骰子上面的黑色點會和骰子的面合而一體??
: 骰子我是寫成一個.h檔.cpp檔 在用main去呼叫function
: 在呼叫此function的前面 已經有設置了這個骰子的各種吸收或反射光的特性
: 還是我應該去.h檔.cpp檔的裡面 個別的去幫骰子的每個面以及每個點
: 設置他的glMaterial的特性
: 骰子上面的點 我是用黑的圓面以距離很短的方法 貼在骰子的面上
: 不知道還有沒有更好的方法來實作??
一旦你用了lighting
原本的glColor就會失去效果(除非你又開了color material)
使用lighting
你要注意幾個東西要設定
material, normal
如果不設定的話,計算時會有問題
雖然你畫骰子之前有設定
但是畫每個點之前也要設定
而且應該是設定成不同的材質
否則會沿用你最後一次所設定的材質
就會跟骰子的面合而一體
距離很近的情況
可以修改深度比較的通過條件
原本預設是GL_LESS
改用glDepthFunc(GL_LEQUAL)設定成小於等於就通過
然後點比骰子晚畫
就不太會有問題了
再不行就要改Z值通過容忍度
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.210.62
推 FY4:謝謝 馬上來修改骰子的面與點數material 與 normal值 04/28 21:54
推 FY4:我骰子上的點數與骰子上面的面是用+0.001來做的 04/28 22:23
→ FY4:因為一開始做的時候 點數與面的 X,Y,Z都相同時 造成畫面重疊 04/28 22:24
→ FY4:的效果 變的好像點數融在面上 而不是貼在面上 04/28 22:25
推 Bencrie:不考慮貼 texture 嗎 XD 04/28 23:37
推 VictorTom:其實小弟我也覺得貼texture比較省事XD 不過原po可能才 04/28 23:56
→ VictorTom:從Vertex Processing開始, 還沒到Pixel Processing吧XD 04/28 23:56