Opengl 类型与glLightfv不匹配
我已经在windows下配置了OpenGL环境,我使用VS2010 当我写这段代码时: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
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