일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리사이클러뷰
- 타입스크립트
- 안드로이드스튜디오
- 몰입캠프
- 프로그래머스
- 어은동맛집
- 대전맛집
- node.js
- BFS
- glfw
- nodeJS
- computergraphics
- html
- 컴퓨터그래픽스
- 우선순위큐
- 카이스트맛집
- 궁동
- 앱개발
- 몰입캠프후기
- 카이스트
- 분리집합
- 자바스크립트
- 프래그먼트
- 위상정렬
- DP
- MySQL
- 후기
- 자바
- 알고리즘
- 백준
- Today
- Total
소근소근
[컴퓨터그래픽스/OpenGL] rendering , 그리기 (glVertex , glColor , glBegin ) 본문
[컴퓨터그래픽스/OpenGL] rendering , 그리기 (glVertex , glColor , glBegin )
JJureng 2021. 8. 11. 20:48지난 글에서 올렸던 기본 코드에서 render함수 , 즉 본격적으로 화면에 렌더링 하는 함수를 작성해보자
[ComputerGraphics] - [컴퓨터그래픽스/CG/OpenGL] 시작하기
[컴퓨터그래픽스/CG/OpenGL] 시작하기
학교 수업으로 들었던 그래픽스를 정리해보고자 이렇게 블로그에도 올리게 되었다 ㅎㅎ 그래픽스 수업을 듣는 후배들이 구글링 할 때 도움이 되면 좋겠당 그래픽스에선 OpenGL(Open Graphics Library)
steptoprogrammer.tistory.com
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])
이런식으로 써주면 된다.