Opengl 类型与glLightfv不匹配

Opengl 类型与glLightfv不匹配,opengl,Opengl,我已经在windows下配置了OpenGL环境,我使用VS2010 当我写这段代码时:glLightfv(GL\u LIGHT1,GL\u CONSTANT\u衰减,1.5),我收到了一条警告类型不匹配的消息 我还得到了以下信息: 智能感知,“双类型”真实参与“常量GLfloat*”类型 参数与f:\lirui\project\opengltest不兼容\ opengltest\opengltest 22 50 opengltest CPP 参数1.5类型为double,但需要常量GLfloat

我已经在windows下配置了OpenGL环境,我使用VS2010

当我写这段代码时:
glLightfv(GL\u LIGHT1,GL\u CONSTANT\u衰减,1.5)
,我收到了一条警告类型不匹配的消息

我还得到了以下信息:

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


参数
1.5
类型为double,但需要
常量GLfloat*

当您将pname指定为
GL\u常量\u衰减
时,文档中会显示:

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
is,OP使用什么并不重要,
float
double
int
<代码>glLightf(…,1.0f)
glLightf(…,1.0)
glLightf(…,1)将产生相同的结果。@HolyBlackCat,我的错。习惯。这是我的错,我写了glLightfv而不是glLightf,谢谢lot@Orace