简单Opengl时钟时钟源代码 可以运行.doc
文本预览下载声明
#pragma comment(lib, glut32.lib)
#pragma comment(lib, glu32.lib)
#pragma comment(lib, opengl32.lib)
#include GL/glut.h
#includemath.h
#define PI 3.14159
GLfloat m_rotAngle=0.0;
void Display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLineWidth(5);
GLfloat i,angle;
GLint circle_points = 100;
GLint circle_point = 60;
glBegin(GL_LINE_LOOP); //绘制闹钟的外圆
for (i = 0; i circle_points; i++) {
angle = 2*PI*i/circle_points;
glVertex2f(100*cos(angle), 100*sin(angle));
}
glEnd();
glBegin(GL_LINE_LOOP); //绘制原点小圆
for (i = 0; i circle_points; i++) {
angle = 2*PI*i/circle_points;
glVertex2f(cos(angle), sin(angle));
}
glEnd();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPointSize(1);
glBegin(GL_POINTS); //绘制秒针刻度
for (i = 0; i circle_point; i++) {
angle = 2*PI*i/circle_point;
glVertex2f(95*cos(angle), 95*sin(angle));
}
glEnd();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPointSize(5);
glBegin(GL_POINTS); //绘制时针刻度
for (i = 0; i 12; i++) {
angle = 2*PI*i/12;
glVertex2f(95*cos(angle), 95*sin(angle));
}
glEnd();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(1.f,1.f,0.f);
glPushMatrix(); //绘制秒针
glRotatef(m_rotAngle, 0.0f, 0.0f, 1.0f);
glTranslatef(0.0f, 10.0f, 0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0, -100, 0);
glVertex3f(1, 0, 0);
glVertex3f(-1, 0, 0);
glEnd();
glPopMatrix(); //绘制分针
glColor3f(1.f,0.f,0.f);
glPushMatrix();
glRotatef(m_rotAngle/60, 0.0f, 0.0f, 1.0f);
glTranslatef(0.0f, 10.0f, 0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0, -80, 0);
glVertex3f(1, 0, 0);
glVertex3f(-1, 0, 0);
glEnd();
glPopMatrix();
glColor3f(0.f,0.f,1.f);
glPushMatrix(); //绘制时针
glRotatef(m_rotAngle/3600, 0.0f,
显示全部