类型与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 *

当您指定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