OpenGL로 시계 그리기
일단 구현하라는 내용만
-----------------------------------------------------------------
문제
1) 시계 바탕 그리기
1.1 삼각형 그리기
관측공간을 (-2.0, -2.0) 과 (2.0, 2.0)을 모서리로 하는 사각형으로 설정
삼각형을 그리는 프로그램 작성[ void tick_mark(void) ]
1.2 삼각형을 회전해서 바탕 그리기
함수 [void draw_plate(void)]를 작성하고 display에서 호출한다.
-----------------------------------------------------------------
#include<GL/glut.h>
#include<stdio.h>
void myinit(void)
{
glClearColor(0.0, 0.3, 0.5, 1.0);
glColor3ub(157, 209, 255);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-2.0,-2.0,2.0,2.0);
glScalef(0.5f, 0.5f, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void tick_mark(void)
{
glBegin(GL_TRIANGLES);
glVertex2f(-0.1,0.0);
glVertex2f(0.0,0.02);
glVertex2f(0.0,-0.02);
glEnd();
}
void draw_plate()
{
for(int i=0;i<60;i++)
{
glPushMatrix();
glRotatef(i*6,0,0,1);
glTranslatef(1.55,0,0);
if(i%5 == 0) glScalef(2.0f, 1.0f, 1.0f);
tick_mark();
glPopMatrix();
}
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
draw_plate();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(0, 0);
glutCreateWindow("base");
glutDisplayFunc(display);
myinit(); glutMainLoop();
}
1.1은 만드는 거 일도 아니고(단지 좀 짱났던 건 PPT에 제시된 색상 찾느라 포토샵 스포이드로 배경색과 화살표색을 찾아 돌아다닌 정도), 1.2는 myinit이랑 본함수에서 꽤나 오랜 시간 헤맸다.
이중훼이크 즐염.