类型与glLightfv不匹配
问题描述:
我在windows下配置了OpenGL环境,我使用VS2010。类型与glLightfv不匹配
当我写这个代码:glLightfv(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5)
,我得到了一个警告类型不匹配消息。
我也有这样的信息:
智能感知, “双师型” 真正参与 “常量GLfloat *” 型 参数不使用f兼容:\黎瑞\项目\ opengltest \ opengltest \ opengltest 22 50 opengltest CPP
答
参数1.5
类型为双而glLightfv需要const GLfloat *
。
当您指定PNAME是GL_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
对于'glLightf'是没有真正的问题是什么OP使用,'float' ,'double'或'int'。 'glLightf(...,1.0f);','glLightf(...,1.0);'和'glLightf(...,1);'会产生相同的结果。 – HolyBlackCat
@HolyBlackCat,我的不好。 C#习惯。 – Orace
这是我的错,我写了glLightfv而不是glLightf,非常感谢@ Orace – Radio