אם אתה מתעקש:
glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glDepthMask(GL_TRUE); const static int lights[8] = {GL_LIGHT0, GL_LIGHT1, GL_LIGHT2, GL_LIGHT3, GL_LIGHT4, GL_LIGHT5, GL_LIGHT6, GL_LIGHT7}; GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; for (int i=0; i<8; i++){ if (m_bArrLightEnabled){ if (m_bArrLightViewspace){ glGetDoublev(GL_MODELVIEW_MATRIX, transforms_mat[activeFrame]); glLoadIdentity(); if (m_nView == ID_VIEW_PERSPECTIVE) glTranslated(0.0, 0.0, -perspective_d/2); } if (m_iArrLightType == DIRECTIONAL){ m_fArrLightDirection[0] *= -1; m_fArrLightDirection[1] *= -1; m_fArrLightDirection[2] *= -1; m_fArrLightDirection[3] = 0; glLightf(lights, GL_SPOT_CUTOFF, 180); } else if (m_iArrLightType == SPOT){ m_fArrLightDirection[3] = 1; glLightf(lights, GL_SPOT_CUTOFF, spotAngel); glLightfv(lights, GL_SPOT_DIRECTION, m_fArrSpotDir); glLightf(lights, GL_SPOT_EXPONENT, spotExponent); } else { m_fArrLightDirection[3] = 1; glLightf(lights, GL_SPOT_CUTOFF, 180); } glLightf(lights, GL_CONSTANT_ATTENUATION, attenuations[0]); glLightf(lights, GL_LINEAR_ATTENUATION, attenuations[1]); glLightf(lights, GL_QUADRATIC_ATTENUATION, attenuations[2]); glLightfv(lights, GL_POSITION, m_fArrLightDirection); m_fArrLightColor[3] = 1; lightsAmbientColor[3] = 1; glLightfv(lights, GL_AMBIENT, lightsAmbientColor); glLightfv(lights, GL_DIFFUSE, m_fArrLightColor); glLightfv(lights, GL_SPECULAR, m_fArrLightColor); glEnable(lights); if (m_iArrLightType == DIRECTIONAL){ m_fArrLightDirection[0] *= -1; m_fArrLightDirection[1] *= -1; m_fArrLightDirection[2] *= -1; } if (m_bArrLightViewspace){ if (m_nView == ID_VIEW_PERSPECTIVE) glTranslated(0.0, 0.0, perspective_d/2); glMultMatrixd(transforms_mat[activeFrame]); } } else { glDisable(lights); } } glLightModelfv(GL_LIGHT_MODEL_AMBIENT, mat_ambient); glShadeModel ((m_nLightShading == ID_LIGHT_SHADING_FLAT) ? GL_FLAT : GL_SMOOTH); glEnable(GL_LIGHTING);