Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <GL/glut.h>
- void draw();
- void init()
- {
- glClearColor(1, 1, 1, 0);
- glEnable(GL_LIGHTING);
- }
- void reshape(int width, int height)
- {
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-800, 800, -800, 800, -800, 800);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- }
- int main(int argc, char **argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
- glEnable(GL_DEPTH_TEST);
- glutInitWindowSize(1000, 1000);
- glutInitWindowPosition(140, 0);
- glutCreateWindow("OGL");
- init();
- glutDisplayFunc(draw);
- glutReshapeFunc(reshape);
- glutMainLoop();
- }
- void draw()
- {
- glClearColor(0, 0, 0, 0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- gluLookAt(-300, 100, 800, 0, 0, 0, 0, 1, 0); //смотрим на шарик
- GLfloat pos[4] = { -250, 200, 200, 1 }; // если последняя координата равна 0, то свет удаленный
- GLfloat mat[4] = { 0, 1, 0, 1 }; // 1-й свет - зеленый
- GLfloat amb[4] = { 0.5, 0.2, 0.7, 1 };
- GLfloat kek = 0.9;
- glEnable(GL_LIGHT0);
- glLightfv(GL_LIGHT0, GL_POSITION, pos); // позиция
- glLightfv(GL_LIGHT0, GL_DIFFUSE, mat); // GL_DIFFUSE - цвет рассеянного излучения источника света
- glLightfv(GL_LIGHT0, GL_AMBIENT, amb); // GL_AMBIENT - цвет фонового излучения(вокруг рассеянного света на шарике)
- //glLightfv(GL_LIGHT0, GL_CONSTANT_ATTENUATION, &kek);
- GLfloat dir[] = { 0, 0, -1 };
- GLfloat pose[4] = { 50, 200, 400, 1 };
- GLfloat mate[4] = { 1, 0, 0, 1 }; // 2-й свет - красный
- glEnable(GL_LIGHT1);
- glLightfv(GL_LIGHT1, GL_DIFFUSE, mate); // цвет рассеянного излучения
- glLightfv(GL_LIGHT1, GL_POSITION, pose);
- glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 90);//угол между осью и стороной конуса(он же половина угла при вершине)
- glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, dir); // направление прожектора
- glutSolidSphere(300, 50, 50);
- glDisable(GL_LIGHT0);
- glDisable(GL_LIGHT1);
- glutSwapBuffers();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement