2013-08-16 46 views
-2

我正在用OpenGl構建一個使用過量的學校項目,而且我的筆記本電腦(不在家時)和我的桌面上都工作。兩者都很好,但突然之間,當我在桌面上編譯代碼時,所有內容都是白色的,而同樣的代碼在我的筆記本上運行良好! 我需要它在我的桌面上工作,因爲當我在家中時,它更容易工作。OpenGl中的一切都是白色的,在另一臺機器上運行正常的代碼

截圖:

筆記本:http://imageshack.us/a/img580/9522/f9yx.jpg

桌面:http://imageshack.us/a/img821/8189/r51l.jpg

代碼:引​​擎收錄(點)的COM/keVyt55q

+3

沒有看到代碼,沒有人能夠幫助你。 – derhass

+1

我認爲這可能不是一個代碼問題,因爲它在一臺機器上工作得很好...... –

+2

這種觀察確實沒有消除錯誤的可能性。有成千上萬的方法來實現這種行爲。當然,它不一定是你的代碼的問題,可能是司機的問題等,但我們應該怎麼知道? – derhass

回答

3

嗯,這裏的問題:

GLfloat especularidade[COORDHOMO] = {10.0, 10.0, 10.0, 1.0};//<------here 
GLint especMaterial = 6000; 

glMaterialfv(GL_FRONT, GL_SPECULAR, especularidade); 
/* Define a concentração do brilho sobre os objetos */ 
glMateriali(GL_FRONT, GL_SHININESS, especMaterial); 

鏡面顏色是一樣的每隔一個顏色。如果您使用浮動,則每個組件都應該在0.0..1.0範圍內。也有可能,光澤度也太高,應該在0..128.0範圍內,我肯定會使用浮點數glMaterialf(GL_FRONT, GL_SHININESS, 25.0)什麼的。

您的筆記本電腦或臺式電腦都有不兼容的OpenGL驅動程序。固定功能OPenGL應該將光照計算的結果限制在0.0..1.0範圍內(這就是固定功能帶紋理的opengl場景可能會變暗的原因)。你的臺式電腦不這樣做。因此,明亮的白色場景。

P.S.強烈建議使用英文名稱作爲函數和變量。那麼,至少如果你想在以後得到你的代碼的幫助。

+0

我不認爲這是唯一的問題。我跟蹤了分配頂點顏色的順序與啓用GL_COLOR_MATERIAL時的順序,並且在設置光照之後實際調用inicializa(...)',否則'glColor(...)'不應該跟蹤材質顏色。我認爲桌面上有一個兼容的驅動程序,而筆記本沒有。 –

+0

@ AndonM.Coleman:你可以自由寫出自己的答案。如果我沒有記錯的話,OpenGL不應該有任何種類的「超標」。這不應該是可能的,但它發生在他的例子中。首先想到的是高光不正的事情。當您編寫着色器時,如果將鏡面反射鏡的光焦度設置得太低或鏡面反射的顏色太高,則可以獲得類似的效果。很難說哪個是這個特殊問題的原因,儘管... – SigTerm

+0

@ AndonM.Coleman這並不重要;您在設置照明之後繪製圖像。生成列表不應該對此產生影響。否則,這意味着要改變光線,你必須重新創建列表。 SigTerm是正確的,你的鏡面是borked。 – PeterT

相關問題