일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 대전맛집
- 몰입캠프
- 백준
- 자바스크립트
- 분리집합
- node.js
- 위상정렬
- 타입스크립트
- 프래그먼트
- MySQL
- glfw
- 우선순위큐
- 안드로이드스튜디오
- 리사이클러뷰
- 프로그래머스
- 자바
- DP
- 컴퓨터그래픽스
- computergraphics
- 카이스트맛집
- nodeJS
- html
- 알고리즘
- 궁동
- 후기
- 어은동맛집
- 몰입캠프후기
- 앱개발
- 카이스트
- BFS
- Today
- Total
소근소근
[컴퓨터그래픽스/OpenGL] rendering , 그리기 (glVertex , glColor , glBegin ) 본문
[컴퓨터그래픽스/OpenGL] rendering , 그리기 (glVertex , glColor , glBegin )
JJureng 2021. 8. 11. 20:48지난 글에서 올렸던 기본 코드에서 render함수 , 즉 본격적으로 화면에 렌더링 하는 함수를 작성해보자
[ComputerGraphics] - [컴퓨터그래픽스/CG/OpenGL] 시작하기
def render():
glClear(GL_COLOR_BUFFER_BIT)
glLoadIdentity()
glBegin(GL_TRIANGLES)
glVertex2f(0.0 , 1.0)
glVertex2f(-1.0,-1.0)
glVertex2f(1.0,-1.0)
glEnd()
삼각형을 그리는 코드이다.
glBegin(GL_TRAINGLES) 로 삼각형을 그릴 것 이라고 선언하고,
3개의 vertex를 지정해주고, glEnd()를 호출한다
OpenGL에서는 이렇게 도형은 vertex지정으로 그릴 수 있다.
NDC(normalized device coordinate)
위 실행 화면처럼 2d에 그려질 때 범위는 (-1,1) 에서 (1,1) 에 그려지고 이를 NDC라고 한다.
primitive types
glBegin(GL_TRAINGLES) 말고 다른 도형을 그리고 싶을 때는 매개변수를 그 도형에 맞게 주면 된다
vertex를 지정하면서 색을 줄 수도 있다.
def render():
glClear(GL_COLOR_BUFFER_BIT)
glLoadIdentity()
glBegin(GL_TRIANGLES)
glColor3f(1.0 , 0.0 , 0.0)
glVertex2f(0.0 , 1.0)
glColor3f(0.0 , 1.0 , 0.0)
glVertex2f(-1.0,-1.0)
glColor3f(1.0 , 1.0 , 0.0)
glVertex2f(1.0,-1.0)
glEnd()
색은 rgb 값으로 준다. 그러므로 위에서부터 빨간색, 파란색 , 노란색이 된다
State Machine
OpenGL은 state machine , 즉 상태를 한번 지정하면 바꾸기 전까지 유지된다.
만약 위의 코드에서 색 지정을 맨 위에서 한번만 빨간색으로 지정하면 그 뒤에 rendering하는 것은 다 빨간색으로 그려질 것이다.
함수 형태
glVertex3fv( ... )
3 : number of components , 즉 개수이다. 삼각형의 경우 꼭짓점이 3개이므로 3
f : data type : b(byte) , ub(unsigned byte) , s(short) , i(int) 등 데이터 타입을 지정할 수 있다. 위의 코드의 경우 f(float)이었다
v : vector , 만약 v가 없다면 위의 코드처럼 쓸 수 있다. v가 있다면 벡터 형식으로 써줘야 하는데,
glVertex2fv([0.0,1.0])
glVertex2fv((0.0,1.0))
glVertex2fv(np.array([1.0,0.0])
이런식으로 써주면 된다.