2015-04-07 138 views
0

我在windows下配置了OpenGL環境,我使用VS2010。類型與glLightfv不匹配

當我寫這個代碼:glLightfv(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5),我得到了一個警告類型不匹配消息。

我也有這樣的信息:

智能感知, 「雙師型」 真正參與 「常量GLfloat *」 型 參數不使用f兼容:\黎瑞\項目\ opengltest \ opengltest \ opengltest 22 50 opengltest CPP

回答

2

參數1.5類型爲glLightfv需要const GLfloat *

當您指定PNAMEGL_CONSTANT_ATTENUATION,該文件說:

params爲一個整數或浮點數值...

所以,你應該用glLightf (或glLighti)而不是glLightfv

你可以給它一個浮動(或整數),而不是,以避免不必要的轉換:

glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5); // what you want 
glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5f); // what you want (avoid a cast) 
glLighti(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1); // what you may want 
+0

對於'glLightf'是沒有真正的問題是什麼OP使用,'float' ,'double'或'int'。 'glLightf(...,1.0f);','glLightf(...,1.0);'和'glLightf(...,1);'會產生相同的結果。 – HolyBlackCat

+0

@HolyBlackCat,我的不好。 C#習慣。 – Orace

+0

這是我的錯,我寫了glLightfv而不是glLightf,非常感謝@ Orace – Radio