· 6 years ago · Nov 17, 2019, 04:58 PM
1// Template1.cpp : Defines the entry point for the console application.
2//
3
4#include "stdafx.h"
5#include <Windows.h>
6#include "include\GL\GL.H"
7#include "include\GL\GLU.H"
8#include "include\GL\glut.h"
9
10// Include GLFW
11#include <GLFW\glfw3.h>
12GLFWwindow* window;
13
14// Include GLM
15#include <glm\glm.hpp>
16#include <glm\gtc\matrix_transform.hpp>
17using namespace glm;
18
19GLfloat angleX = 0.0f;
20GLfloat angleY = 0.0f;
21GLfloat test = 0.0f;
22GLboolean reachedMaxRange = false;
23GLboolean reachedMinRange = true;
24int refreshmill = 1;
25
26void timer(int value) {
27 glutPostRedisplay();
28 glutTimerFunc(refreshmill, timer, 0);
29 angleX -= 0.02;
30 angleY += 0.02;
31
32 if (test >= 1.0f) { reachedMinRange = false; reachedMaxRange = true; }
33 if (test <= 0.0f) { reachedMinRange = true; reachedMaxRange = false; }
34
35 if (/*test < 1.0*/ reachedMinRange == true && reachedMaxRange == false) test += 0.0005f;
36 else test -= 0.0005f;
37}
38
39void drawTriangle(GLfloat x, GLfloat y, GLint color, GLfloat degrees) {
40 glPushMatrix();
41 switch (color)
42 {
43 case 1:
44 glColor4f(0.0f, 0.0f, 1.0f, 1.0f);//blue
45 glRotatef(angleX - degrees, 0.0f, 0.0f, 1.0f);
46 glTranslatef(test, 0.0f, 1.0f);
47 break;
48 case 2:
49 glColor4f(0.0f, 1.0f, 0.0f, 1.0f);//green
50 glRotatef(angleY - degrees, 0.0f, 0.0f, 1.0f);
51 glTranslatef(test, 0.0f, 1.0f);
52 break;
53 case 3:
54 glColor4f(1.0f, 0.0f, 0.0f, 1.0f);//red
55 glRotatef(angleX - degrees, 0.0f, 0.0f, 1.0f);
56 glTranslatef(test, 0.0f, 1.0f);
57 break;
58 case 4:
59 glColor4f(1.0f, 1.0f, 0.0f, 1.0f);//yellow
60 glRotatef(angleX - degrees, 0.0f, 0.0f, 1.0f);
61 glTranslatef(test, 0.0f, 1.0f);
62 break;
63 case 5:
64 glColor4f(1.0f, 0.65f, 0.0f, 1.0f);//orange
65 glRotatef(angleY - degrees, 0.0f, 0.0f, 1.0f);
66 glTranslatef(test, 0.0f, 1.0f);
67 break;
68 case 6:
69 glColor4f(1.0f, 0.0f, 1.0f, 1.0f);//pink
70 glRotatef(angleX - degrees, 0.0f, 0.0f, 1.0f);
71 glTranslatef(test, 0.0f, 1.0f);
72 break;
73
74 }
75 glBegin(GL_POLYGON);
76
77 glVertex2f(x, y);
78 glVertex2f(x + 1, y);
79 glVertex2f(x, y + 1);
80 glEnd();
81
82 glPopMatrix();
83}
84
85void drawQuarters(GLint step, GLint maxDegree){
86 for (int deg = 0; deg <= maxDegree; deg += step) {
87
88 //glPushMatrix();
89
90 drawTriangle(0.0, 0.0, 1, deg * 1.0);
91
92 drawTriangle(0.0, 1.0, 2, deg * 1.0);
93
94 drawTriangle(0.0, 2.0, 3, deg * 1.0);
95
96 drawTriangle(1.0, 1.0, 4, deg * 1.0);
97
98 drawTriangle(1.0, 0.0, 5, deg * 1.0);
99
100 drawTriangle(2.0, 0.0, 6, deg * 1.0);
101
102 //glPopMatrix();
103 }
104}
105
106
107void MyDisplay(void) {
108 // The new scene
109 glm::mat4 Projection;
110 glm::mat4 View;
111 glm::mat4 Model;
112 glm::mat4 MVP;
113
114 //initMVP(Projection, View, Model);
115
116 glLoadIdentity();
117 //do {
118 glClear(GL_COLOR_BUFFER_BIT);
119 Model = glm::mat4(1.0f);
120
121 //CENTER
122 //drawTriangle(0.0, 0.0, 1, 0.0);
123
124 //drawTriangle(0.0, 0.0, 1, 90.0);
125
126 //drawTriangle(0.0, 0.0, 1, 180.0);
127
128 //drawTriangle(0.0, 0.0, 1, 270.0);
129
130 drawQuarters(90, 270);
131
132
133
134 glFlush();//start processing buffered OpenGL routines
135} // Check if the ESC key was pressed or the window was closed
136//while (glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS &&
137// glfwWindowShouldClose(window) == 0);
138//}
139void MyInit(void) {
140 glClearColor(0.0, 0.0, 0.0, 0.0);//select clearing (background) color
141 /* initialize viewing values */
142 glViewport(0, 0, 300, 300);//window origin and size
143 glMatrixMode(GL_PROJECTION);//
144 glLoadIdentity();//=1
145 gluOrtho2D(-3.0, 3.0, -3.0, 3.0);
146 glMatrixMode(GL_MODELVIEW);
147 glLoadIdentity();//=1
148}
149
150int main(int argc, char** argv) { //<- for normal API
151 glutInit(&argc, argv);
152 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//single buffer and RGBA
153 glutInitWindowSize(1024, 768);//initial window size
154 glutInitWindowPosition(100, 100);
155 glutCreateWindow("My window");//create widnow, hello title bar
156 MyInit();
157 glutDisplayFunc(MyDisplay);//
158 glutTimerFunc(0, timer, 0);
159 glutMainLoop();//enter main loop and process events
160 return 0;
161}