일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- selenium
- 청청구역
- BeautifulSoup
- 예쁜곳
- 유니코드 제거
- 파이썬
- 사각형변형
- 보라카이
- 오류
- 호주
- 크롤링
- 애니메이션
- 색상변경
- 가고싶은데
- 데이터전처리
- 너무오래됐다
- 빅데이터분석기사
- 정말
- OpenGL
- 필기후기
- 언제또가보지
- 마우스클릭
- 갈자신이없다
- 빅데이터분석기사필기
- 빅데이터분석기사후기
- 멜버른
- 방향변경
Archives
- Today
- Total
wisdiom 아니고 wisdom
[실습 03] 랜덤으로 여러 모양 나오기 본문
#include <gl/glut.h>
#include <time.h>
#include <stdlib.h>
GLvoid drawScene(GLvoid);
GLvoid Reshape(int w, int h);
void main()
{
srand((unsigned)time(NULL));
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(800, 600);
glutCreateWindow("Example2");
glutDisplayFunc(drawScene);
glutReshapeFunc(Reshape);
glutMainLoop();
}
GLvoid drawScene(GLvoid)
{
int width, height;
int count = 0;
int shape = rand() % 4; //0~3
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
width = 800 / 3; // 267 정도
height = 600 / 3; // 200
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 3; ++j)
{
if (count % 2)
{
glColor4f(0.8f, 0.8f, 0.8f, 1.0f);
glRectf(width * j, height* i, width * j + width, height * i);
glColor4f(0.5f, 0.5f, 1.0f, 1.0f);
if (shape == 0)
{
glBegin(GL_LINES); // 선
glVertex2i(20 + (width * j), 20 + (height * i));
glVertex2i(200 + (width * j), 100 + (height * i));
glEnd();
}
else if (shape == 1)
{
glBegin(GL_TRIANGLES); // 삼각형
glVertex2i(30 + (width * j), 30 + (height * i));
glVertex2i(100 + (width * j), 100 + (height * i));
glVertex2i(180 + (width * j), 25 + (height * i));
glEnd();
}
else if (shape == 2)
{
glBegin(GL_POLYGON); // 사각형
glVertex2i(20 + (width * j), 20 + (height * i));
glVertex2i(150 + (width * j), 20 + (height * i));
glVertex2i(150 + (width * j), 100 + (height * i));
glVertex2i(20 + (width * j), 100 + (height * i));
glEnd();
}
else if (shape == 3)
{
glBegin(GL_POLYGON); // 오각형
glVertex2i(80 + (width * j), 20 + (height * i));
glVertex2i(150 + (width * j), 20 + (height * i));
glVertex2i(200 + (width * j), 100 + (height * i));
glVertex2i(10 + (width * j), 150 + (height * i));
glVertex2i(20 + (width * j), 100 + (height * i));
glEnd();
}
}
else
{
glColor4f(0.9f, 0.9f, 0.9f, 1.0f);
glRectf(width * j, height* i, width * j + width, height * i + height);
glColor4f(0.5f, 0.5f, 1.0f, 1.0f);
if (shape == 0)
{
glBegin(GL_LINES);
glVertex2i(20 + (width * j), 20 + (height * i));
glVertex2i(200 + (width * j), 150 + (height * i));
glEnd();
}
else if (shape == 1)
{
glBegin(GL_TRIANGLES);
glVertex2i(20 + (width * j), 20 + (height * i));
glVertex2i(100 + (width * j), 100 + (height * i));
glVertex2i(180 + (width * j), 40 + (height * i));
glEnd();
}
else if (shape == 2)
{
glBegin(GL_POLYGON);
glVertex2i(20 + (width * j), 20 + (height * i));
glVertex2i(200 + (width * j), 20 + (height * i));
glVertex2i(200 + (width * j), 150 + (height * i));
glVertex2i(20 + (width * j), 150 + (height * i));
glEnd();
}
else if (shape == 3)
{
glBegin(GL_POLYGON);
glVertex2i(80 + (width * j), 20 + (height * i));
glVertex2i(180 + (width * j), 20 + (height * i));
glVertex2i(220 + (width * j), 120 + (height * i));
glVertex2i(110 + (width * j), 170 + (height * i));
glVertex2i(20 + (width * j), 120 + (height * i));
glEnd();
}
}
shape++;
shape = shape % 4;
count++;
}
}
glFlush();
}
GLvoid Reshape(int w, int h)
{
glViewport(0, 0, w, h);
glOrtho(0.0, 800.0, 0.0, 600.0, -1.0, 1.0);
}
반응형
'👩💻 > OpenGL' 카테고리의 다른 글
[실습 11] 화면에 사인, 코사인, 스프링, 직사각형 그리기 (0) | 2021.06.30 |
---|---|
[실습 05] 실습 04 변형 - 사각형 튀기기 (0) | 2021.06.30 |
[실습 04] 사각형 변형 애니메이션 만들기 (색상, 방향) (0) | 2021.06.30 |
[실습 02] 랜덤 바둑판 모양 그리기 (0) | 2021.06.30 |
[실습 01] 화면 출력하기 (0) | 2021.06.30 |
Comments