我正在學習OpenGL並剛剛開始進入燈光。我使照明和光0,設置它的環境/漫反射/鏡面爲默認值在我的init方法,然後每幀我做這樣的事情:當我每幀更新其位置時,OpenGL燈閃爍
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// do my 3rd-person camera transforms and rotations
glLightfv(GL_LIGHT0, GL_POSITION, {0.1f, 0.0f, 0.0f});
(注意:如果是稍有不妥,我寫我的應用程序在Java中使用JOGL,所以我修剪了每行的gl和GL,以便爲所有C++人員提供更好的可讀性:))
然後我繼續繪製我的三角形等等,最後我做了一個glFlush()。
奇怪的問題是,當我運行我的應用程序時,指示燈閃爍。我在整個程序中沒有其他的glLightfv調用(除了上面提到的,在我的init方法中,我已經調試過,以確保它只能運行一次)。它閃爍得非常快,屏幕顯示撕裂。在我的場景繪圖中的任何一點,我也不會glDisable(GL_LIGHTING);不是我認爲這會導致點亮的物體閃爍。
爲了調試的目的,我還爲我的繪圖代碼註釋掉了一些塊,並且沒有任何東西似乎打破了燈光 - 當然,我編寫了所有這些並在燈光場景之前進行了測試,因此我看不到理由應該是錯的。
基本上我知道這並不多,但其他人有過這個問題嗎?有沒有我找不到的簡單解決方案?請索取任何可幫助您的其他信息。最後,如果我根本無法得到答案,那麼我可能需要分解並撰寫一個測試用例,我可以在此處發佈整個渲染代碼並演示問題。
Here is a really bad animated gif I tried to make...但它有點顯示我在說什麼,只要光是零星的。點燃的框架是它應該看起來像。另外,當我將其減慢到5fps時,它並沒有太多閃爍,更多的只是隨意地打開或關閉。我不明白...
謝謝!!
不是浪費時間!我的團隊花了幾個星期的時間試圖找出這個問題! – IDWMaster 2011-04-02 18:15:53