键入与glLightfv不匹配

时间:2015-04-07 00:48:48

标签: opengl

我在windows下配置了OpenGL环境,我使用的是VS2010。

当我编写此代码时:glLightfv(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5),我收到了警告类型不匹配消息。

我也有这个信息:

  智能感知,“双重类型”真实参与“const GLfloat *”类型   参数与f:\ lirui \ project \ opengltest \不兼容   opengltest \ opengltest 22 50 opengltest CPP

1 个答案:

答案 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