首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么GL_SPECULAR不能工作?

为什么GL_SPECULAR不能工作?
EN

Stack Overflow用户
提问于 2011-05-18 19:01:03
回答 1查看 2.9K关注 0票数 1

我已经从NeHe教程下载了代码,这是关于照明的。原始代码没有包含镜面光,我只是简单地添加了它。我定义了一个自由的颜色照明阵列,并将其他灯光排除在外。

代码语言:javascript
复制
GLfloat LightBlack[] = { 0.0f, 0.0f, 0.0f, 1.0f };
GLfloat LightGreen[] = { 0.0f, 1.0f, 0.0f, 1.0f };

...

glLightfv(GL_LIGHT1, GL_AMBIENT, LightBlack);       // add lighting. (ambient)
glLightfv(GL_LIGHT1, GL_SPECULAR, LightGreen);      // THIS IS WHAT I ADDED
glLightfv(GL_LIGHT1, GL_DIFFUSE, LightBlack);       // add lighting. (diffuse).
glLightfv(GL_LIGHT1, GL_POSITION, LightPosition);   // set light position.

...

glutSolidTeapot(0.8f);

然而,结果似乎所有的灯都关了,根本没有灯。看起来GL_SPECULAR不工作了。为什么会这样呢?

glDisable(GL_LIGHTING);

glDisable(GL_LIGHTING);

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-18 19:18:39

还需要调整材质的镜面反射(与灯光的镜面反射相乘)和反光度(调整聚光区的衰减)属性。这些参数的默认值为0。试试这个:

代码语言:javascript
复制
GLfloat white[] = { 1.0f, 1.0f, 1.0f, 1.0f };

glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, white);
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 80.0f);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6043609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档