일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 그레이시
- 2018 정보처리기사
- 실기
- 정보처리기사 공부법
- 언어 순위
- 정처기 필기
- 개발 언어
- 순위
- 정처기 후기
- 프로그래밍 언어 순위
- 정처기 공부법
- 정처기
- 프로그래밍 언어
- 2018 정처기
- 시나공
- 필기
- 브라이언 오르테가
- 말의품격 이기주 힐링 책 도서
- 정처기 실기
- 주짓수
- 정보처리기사 후기
- 2017
- 프로그래밍
- 점유율
- 2017티스토리결산
- 언어
- Language
- 개발 언어 순위
- 정보처리기사
- 변화
- Today
- Total
Enjoy what you do!
OpenGL glLogicOp란 ? 고무줄 기법, Rubber banding 본문
1. OpenGL glLogicOp란 ?
glLogicOp 함수는 컬러 인덱스 렌더링을 위한 논리적 픽셀 연산을 한다.
glLogicOp는 들어오는 색상 RGBA 색상과 프레임 버퍼의 해당 위치에서 RGBA 색상간에 적용되는 논리적 연산을 한다.
다음은 매개변수 옵션들 몇가지이다.
GL_CLEAR 0
GL_SET 1
GL_COPY s
GL_NOOP d
GL_XOR s ^ d
s represents the incoming color and d represents the color in the frame buffer.
여기서 s는 그리는 색이고, d는 프레임 버퍼 그러니까 배경색이다.
그리는 색과 배경색을 논리 연산하는거다.
그리는 색인 흰색 RGB(1,1,1)와 배경이 노란색 RGB(1,1,0) 라면 XOR 는 파란색(0,0,1) 이 나온다.
-보색 개념-
2. 고무줄 기법, Rubber banding
마우스 드래그를 통해 선분을 그려줄때 드래그 중일때 선분이 동적으로 늘어났다 줄어들었다 그려지도록 하는걸
고무줄 기법 이라함
그렇다면 드래그 중일때 무수한 선분을 그릴텐데 마우스 포인터가 움직일때 마다 이전의 선분은 지워주고 새로운 선 한개만 그려줘야한다.
이걸 어떻게 구현할까?
답은 XOR이다.
XOR연산을 두번하면 결국 첫번째 소스값이 나온다. X^Y 에 또 Y를 XOR하면?
즉 X^Y^Y = X 이다. XOR 두번하면 원래 값이 되버린다. 이게 선분을 지워주는 원리이다.
선분을 그리고 거기다 똑같이 또 그려주면... 그러니까 배경색의 보색으로 그린거에 또 배경색의 보색으로 그리니
결국에는 배경색이 되어 선분이 없어지는거다.
그래서 고무줄 기법에 glLogicOp을 사용한다.
glLogicOp를 사용함으로써 편리하게 XOR할수 있고 XOR함으로써 편하게 선을 지워줄수가 있다.
요약 : XOR를 통해 선을 다시 그려줌으로써 이전의 선을 지워줄수 있다. 이게 XOR 쓰는 이유다.
참고 서적
http://www.scitech.co.kr/upload/book_image/s_001/Angel%204e-pdf2.PDF
https://www.opengl.org/discussion_boards/showthread.php/152209-Rubberbanding-with-XOR
http://egloos.zum.com/ingraphics/v/2759840
'컴공 여러가지 > OpenGL' 카테고리의 다른 글
opengl glMatrixMode 모드 3가지 (0) | 2018.04.11 |
---|---|
OpenGL 3D 회전 (0) | 2018.04.11 |
선형 독립, 차원, span, 기저 (0) | 2018.04.04 |
opengl 정사영투시 reshape 해주기 (0) | 2018.03.26 |
visual studio glut, glaux 라이브러리 추가, glut.dll 추가하기 (0) | 2018.03.07 |