类型与 glLightfv 不匹配

Type mismatch with glLightfv

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

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

我也得到了这些信息:

IntelliSense, "double type" real participation "const GLfloat *" type parameter is not compatible with f: \ lirui \ project \ opengltest \ opengltest \ opengltest 22 50 opengltest CPP

参数 1.5double 类型,而 glLightfv 需要 const GLfloat *

当您将 pname 指定为 GL_CONSTANT_ATTENUATION 时,文档说:

params is a single integer or floating-point value...

所以你应该使用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