在opengl中使用光线时颜色消失,

kpbwa7wx  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(131)
glLoadIdentity();               
glTranslatef(0.0f + deltaA - deltaD, 0.0f + deltaQ - deltaE, 0.0f + deltaW - deltaS);
glRotatef(_rotate_x, 1, 0, 0);
glRotatef(_rotate_y, 0, 1, 0);
glColor3f(1.0f, 0.0f, 0.0f);
glutSolidSphere(20, 15, 15);

如果我这样写代码,红色看起来不错。

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);

glLoadIdentity();               
glTranslatef(0.0f + deltaA - deltaD, 0.0f + deltaQ - deltaE, 0.0f + deltaW - deltaS);
glRotatef(_rotate_x, 1, 0, 0);
glRotatef(_rotate_y, 0, 1, 0);
glColor3f(1.0f, 0.0f, 0.0f);
glutSolidSphere(20, 15, 15);

glDisable(GL_LIGHTING);
glDisable(GL_LIGHT0);

但如果我用这样的灯,它是白色的。原因是什么?
我怎样才能解决这个问题?

abithluo

abithluo1#

请参见Basic OpenGL Lighting。当启用照明(GL_LIGHTING)时,渲染颜色将从材质参数(glMaterial)中获取。如果仍要使用当前颜色属性(由glColor设置),则需要启用GL_COLOR_MATERIAL并设置颜色材质参数(glColorMaterial):

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);

相关问题