我在windows下配置了OpenGL环境,我使用的是VS2010。
当我编写此代码时:glLightfv(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5)
,我收到了警告类型不匹配消息。
我也有这个信息:
智能感知,“双重类型”真实参与“const GLfloat *”类型 参数与f:\ lirui \ project \ opengltest \不兼容 opengltest \ opengltest 22 50 opengltest CPP
答案 0 :(得分:2)
参数1.5
的类型为 double ,而glLightfv需要 const GLfloat *
。
当您将 pname 指定为GL_CONSTANT_ATTENUATION
时,文档说:
params是单个整数或浮点值...
因此,您应该使用 glLightf
(或glLighti
)代替 glLightfv
。
你可以给它一个 float (或一个整数)而不是 double 来避免不必要的演员:
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