遇到个问题:当我放大图形的时候,真个图形都变暗了,缩小的时候又会变亮
这是不是因为光源的位置问题?
具体程序:
GLfloat Light_ambient[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat Light_diffuse[] = { 0.7f, 0.7f, 0.7f, 1.0f };
GLfloat light_Pos[] = { 500.f, 500.0f, 1000.0f, 1.0f }; glEnable(GL_DEPTH_TEST); // Hidden surface removal
glFrontFace(GL_CCW); // Counter clock-wise polygons face out
glEnable(GL_CULL_FACE); // Do not calculate inside of jet
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT0,GL_AMBIENT,Light_ambient);
glLightfv(GL_LIGHT0,GL_DIFFUSE,Light_diffuse);
glLightfv(GL_LIGHT0,GL_POSITION,light_Pos);
glEnable(GL_LIGHT0);
.
.
.
.
.
glScaled(m_scaling, m_scaling, m_scaling);
绘图怎样让光源随着视点运动?
这是不是因为光源的位置问题?
具体程序:
GLfloat Light_ambient[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat Light_diffuse[] = { 0.7f, 0.7f, 0.7f, 1.0f };
GLfloat light_Pos[] = { 500.f, 500.0f, 1000.0f, 1.0f }; glEnable(GL_DEPTH_TEST); // Hidden surface removal
glFrontFace(GL_CCW); // Counter clock-wise polygons face out
glEnable(GL_CULL_FACE); // Do not calculate inside of jet
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT0,GL_AMBIENT,Light_ambient);
glLightfv(GL_LIGHT0,GL_DIFFUSE,Light_diffuse);
glLightfv(GL_LIGHT0,GL_POSITION,light_Pos);
glEnable(GL_LIGHT0);
.
.
.
.
.
glScaled(m_scaling, m_scaling, m_scaling);
绘图怎样让光源随着视点运动?
glLoadIdentity();
GLfloat Light_ambient[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat Light_diffuse[] = { 0.7f, 0.7f, 0.7f, 1.0f }; // Setup and enable light 0
glLightfv(GL_LIGHT0,GL_AMBIENT,Light_ambient);
glLightfv(GL_LIGHT0,GL_DIFFUSE,Light_diffuse);
GLfloat light_Pos[] = { 50.f, 50.0f, 100.0f, 1.0f };
glLightfv(GL_LIGHT0,GL_POSITION,light_Pos);
glEnable(GL_LIGHT0);
glPopMatrix();
绘图
发现结果还是一样啊,放大缩小仍然会变暗变亮
:(
还是没有完全理解
//将光源设置为平行光 试一下
GLfloat light_Pos[] = { 1.0f, 1.0f, 1.0f, 0.0f };
glLoadIdentity好像应该放在glPushMatrix外面.