yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2010-1-23, PM 10:09 星期六 文章主題: 3D遊戲程式設計入門第7章心得 |
|
|
前言:此乃補丁文。只講解心得,不提供完整教學,有興趣的人請自行購買此書。
代碼: | 書名:3D遊戲程式設計入門-使用DirectX 9.0實作
作者:Frank D. Luna
譯者:黃聖峰
出版社:博碩文化 |
此書範例程式MtrlAlpha有個bug
在Display函式中
原程式碼為:
代碼: | // increase/decrease alpha via keyboard input
if( ::GetAsyncKeyState('A') & 0x8000f )
TeapotMtrl.Diffuse.a += 0.01f;
if( ::GetAsyncKeyState('S') & 0x8000f )
TeapotMtrl.Diffuse.a -= 0.01f; |
這樣是不行的
我是不知道當初作者測試時用的電腦有多爛
但我用我家的爛電腦都會造成更新過快使得茶壺瞬隱瞬現的狀況
沒有那種混合透明的過程
所以code應該要改成跟timeDelta有關係才行
代碼: | // increase/decrease alpha via keyboard input
if( ::GetAsyncKeyState('A') & 0x8000f )
TeapotMtrl.Diffuse.a += 1.0f * timeDelta;
if( ::GetAsyncKeyState('S') & 0x8000f )
TeapotMtrl.Diffuse.a -= 1.0f * timeDelta; |
像這樣才能使此範例不管在多快或多慢的電腦上執行都維持一定的混合速度
也才能夠觀察 |
|