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);
但如果我用这样的灯,它是白色的。原因是什么?
我怎样才能解决这个问题?
1条答案
按热度按时间abithluo1#
请参见Basic OpenGL Lighting。当启用照明(
GL_LIGHTING
)时,渲染颜色将从材质参数(glMaterial
)中获取。如果仍要使用当前颜色属性(由glColor
设置),则需要启用GL_COLOR_MATERIAL
并设置颜色材质参数(glColorMaterial
):