Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <Windows.h>
- #include <glut.h>
- #include <iostream>
- float red = 1.0f, blue = 1.0f, green = 1.0f;
- float angle = 0.0f;
- void changeSize(int w, int h) {
- if (h == 0) h = 1;
- float ratio = w * 1.0 / h;
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glViewport(0, 0, w, h);
- gluPerspective(45.0f, ratio, 0.1f, 100.0f);
- glMatrixMode(GL_MODELVIEW);
- }
- void renderScene(void) {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glLoadIdentity();
- gluLookAt(0.0f, 0.0f, 10.0f,
- 0.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 0.0f);
- glRotatef(angle, 1.0f, 1.0f, 0.0f);
- glColor3f(red, green, blue);
- glOrtho(0.0, 35.0, 0.0, 35.0, -1.0, 1.0);
- glBegin(GL_TRIANGLES);
- glVertex2f(7, 7);
- glVertex2f(50, 7);
- glVertex2f(50, 50);
- glBegin(GL_TRIANGLES);
- glVertex2f(1, 20);
- glVertex2f(30, 20);
- glVertex2f(20, 25);
- glEnd();
- glFlush();
- glEnd();
- glFlush();
- angle += 0.1f;
- glutSwapBuffers();
- }
- void processSpecialKeys(int key, int x, int y) {
- switch (key) {
- case GLUT_KEY_F1:
- red = 0.44;
- green = 0.44;
- blue = 0.2; break;
- case GLUT_KEY_F2:
- red = 1.0;
- green = 1.5;
- blue = 0.5; break;
- case GLUT_KEY_F3:
- red = 1.0;
- green = 0.2;
- blue = 0.5; break;
- case GLUT_KEY_F4:
- red =0.4;
- green = 1.0;
- blue = 0.3; break;
- }
- }
- int main(int argc, char **argv) {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
- glutInitWindowPosition(100, 100);
- glutInitWindowSize(400, 400);
- glutCreateWindow("Шедевр");
- glutDisplayFunc(renderScene); //функция обновления окна
- glutReshapeFunc(changeSize); //изменение изображения в засимости от размера окна
- glutIdleFunc(renderScene); //функция для анимации, работает когда программа простаивает
- glutSpecialFunc(processSpecialKeys); //активация работы клавиш f1-f7 для переключения цвета
- glutMainLoop();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement