분류 전체보기 (289) 썸네일형 리스트형 [OpenGL] 타이머 콜백 / 2022.10.24 * 출처 : OpenGL로 배우는 3차원 컴퓨터 그래픽스, 한빛아카데미 일정한 시간 간격이 지나면 발생하는 이벤트가 타이머 이벤트이며, 타이머 콜백은 이 이벤트에 대응하는 콜백 함수다. void glutTimerFunc(unsigned int msecs, void(*func)(int value), int value); - unsigned int msecs : 얼마 후에 이벤트를 발생시킬 것인지, msec 단위 - void(*func)(int value) : 타이머 이벤트 발생 시에 호출되어야 할 함수명 - int value : 이벤트 발생 시에 콜백 함수에 넘겨줄 파라미터 예제를 통해 알아보자. #include #include #include #include unsigned char PALETTE[16].. [OpenGL] 아이들 콜백 / 2022.10.23 * 출처 : OpenGL로 배우는 3차원 컴퓨터 그래픽스, 한빛아카데미 GLUT은 매우 짧은 시간 간격으로 이벤트 루프를 돌기 때문에 어떤 경우에는 큐에 새로운 이벤트가 아직 하나도 안 들어가 있는 때도 있다. 아이들 콜백을 정의하면 이 경우에도 콜백 함수를 만들어 필요한 일을 할 수 있다. 예제를 통해서 알아보자. #include #include #include GLfloat Delta = 0.0; void MyDisplay() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); glColor3f(0.0, 0.5, 0.8); glVertex3f(-1.0 + Delta, -0.5, 0.0); glVertex3f(0.0 + Delta, -0.5, 0.0); glV.. [OpenGL] 메뉴 콜백 / 2022.10.23 * 출처 : OpenGL로 배우는 3차원 컴퓨터 그래픽스, 한빛아카데미 1. 콜백 함수를 사용하여 메뉴를 만드는 방법을 알아보자. #include #include #include GLboolean IsSphere = true; void MyDisplay() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.5, 0.0, 0.5); if (IsSphere) // IsSphere가 true라면 glutWireSphere(0.2, 15, 15); //원구를 그림 else // false라면 glutWireTorus(0.1, 0.3, 40, 20); // 원환체를 그림 glFlush(); } void MyMainMenu(int entryID) { if (entryID == 1) Is.. [OpenGL] 마우스 콜백 / 2022.10.23 * 출처 : OpenGL로 배우는 3차원 컴퓨터 그래픽스, 한빛아카데미 마우스 이벤트는 마우스 버튼을 누를 때 또는 마우스가 움직일 때 발생한다. 예제를 통해서 알아보자. 1. 마우스 움직임 따라 사각형 그리기 #include #include #include // 눌러진 위치의 좌표 & 현재의 마우스 위치 좌표 // 마우스 콜백 함수와 디스플레이 콜백 함수 사이의 변수 공유를 위해 전역변수로 선언 GLint TopLeftX, TopLeftY, BottomRightX, BottomRightY; void MyDisplay() { glViewport(0, 0, 300, 300); glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.5, 0.5, 0.5); glBegin(GL_POLYGO.. [OpenGL] 리셰이프 콜백 / 2022.10.23 * 출처 : OpenGL로 배우는 3차원 컴퓨터 그래픽스, 한빛아카데미 리셰이프 이벤트는 1. 처음 윈도우를 열 때 2. 윈도우 위치를 옮길 때 3. 윈도우 크기를 조절할 때 발생한다 아래 코드는 원래 뷰 포트의 중심과 변경된 뷰 포트의 중심을 일치시키면서도 물체 크기와 종횡비를 그대로 유지하는 방법이다. 1. 흰색 바탕에 회색 사각형을 그리는 프로그램을 통해 설명해보자 #include #include #include void MyDisplay() { glClear(GL_COLOR_BUFFER_BIT); // 컬러 버퍼에 초기화 색을 가함 glColor3f(0.5, 0.5, 0.5); //회색 glBegin(GL_POLYGON); //사각형 glVertex3f(-0.5, -0.5, 0.0); glVert.. [OpenGL] 백색 사각형 그리기 / 2022.10.22 * 출처 : OpenGL로 배우는 3차원 컴퓨터 그래픽스, 한빛아카데미 1. 흑색 바탕에 백색 사각형 그리기 #include #include #include void MyDisplay() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); // 4개의 정점으로 이루어진 다각형 glVertex3f(-0.5, -0.5, 0.0); glVertex3f(0.5, -0.5, 0.0); glVertex3f(0.5, 0.5, 0.0); glVertex3f(-0.5, 0.5, 0.0); glEnd(); glFlush(); // 현재까지 쌓인 명령어 모두를 프로세서에 전달 } int main() { glutCreateWindow("OpenGL Drawing Example"); .. 벡터 그래픽 / 2022.10.22 * 출처 : OpenGL로 배우는 3차원 컴퓨터 그래픽스, 한빛아카데미 1. 벡터 그래픽 장치 - 벡터 그래픽 장치 (Vector Display, Calligraphic Display, Stroke Display, Random Display) - 화소 개념이 없음 -> 해상도 무한대 -> 에일리어싱이 일어나지 않음 - 화면 전체에 인이 칠해져 있어 래스터 장치처럼 화면 면적 단위로 밝혀지는 것이 아니라 전자총이 닿는 부분마다 밝혀지게 됨 - 벡터 그래픽 장치는 화소 개념이 없기 때문에 프레임 버퍼를 사용하지 않고 디스플레이 리스트라는 메모리에 해당 물체를 그리기 위한 명령어를 저장함 -> 용량 면에서 훨씬 유리하다 2. 래스터 그래픽 대 벡터 그래픽 래스터 그래픽 : https://cow-kite24.t.. 래스터 그래픽 / 2022.10.22 * 출처 : OpenGL로 배우는 3차원 컴퓨터 그래픽스, 한빛아카데미 1. 컴퓨터 모니터의 기본 원리 - 필라멘트 : 일종의 전자총, 필라멘트에 전류가 흐르면 전자가 방출됨 - 진공관 모니터는 유인된 전자가 쉽게 가속할 수 있도록 음극선관 내부를 진공으로 만듬 -> 공기 분자의 저항이 줄어듬 - 제어 그물 : 전자총에서 비롯된 연속적인 전자흐름의 양 조절 -> 화면에 보이는 밝기 조절 - 집속 양극 : 정확히 가운데로 향하지 않는 전자빔들을 차단하는 역할 - 수직 편향판, 수평 편향판 : 전자빔의 방향을 각각 상하, 좌우로 휘는 데 사용함 2. 래스터 그래픽 장치 2-1) 컬러 모니터 - 모니터 크기는 화면의 대각선 길이를 기준으로 19인치, 27인치 등으로 나타냄 - 화면 종횡비 (Aspect Rat.. 이전 1 ··· 8 9 10 11 12 13 14 ··· 37 다음