본문 바로가기
반응형

컴퓨터그래픽21

모델변환과 시점변환 (2)기하변환 기하 변환 기하변환 (Geometric Transformation) 물체 변환 또는 좌표계 변환의 기본 행렬로 표현됨 이동, 회전, 크기 조절 등 더보기 기하 변환(geometric transformation)은 3차원 공간 상에 있는 도형의 모양이나 위치를 바꾸는 변환(transformation) 기술. 예를 들어, 도형을 회전, 이동, 확대/축소하거나 기울이는 등의 변환을 통해 다양한 모양을 만들어 낼 수 있음. OpenGL에서 모델뷰 변환(Modelview ransformation)과 투영 변환 (Projection transformation)으로 구분됨. 모델뷰 변환은 객체의 위치, 크기, 방향 등을 조절하며, 투영 변환은 화면에 어떻게 보일지를 결정함. 모델뷰 변환 : glTranslatef().. 2023. 4. 13.
OpenGL 기본 틀 : 정점배열 정점배열 육면체 그리기 GLfloat MyVertices[8][3] = {{-0.25, -0.25, 0.25}, {-0.25, 0.25, 0.25}, {0.25, 0.25, 0.25},{0.25, -0.25, 0.25}, {-0.25, -0.25, -0.25}, {-0.25, 0.25, -0.25}, {0.25, 0.25, -0.25}, {0.25, -0.25, -0.25}}; GLfloat MyColors[8][3]={{0.2, 0.2, 0.2}, {1.0, 0.0, 0.0}, {1.0, 1.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}, {1.0, 0.0, 1.0}, {1.0, 1.0, 1.0}, {0.0, 1.0, 1.0}}; 정점 0, 3, 2, 1으로 구성된 면 (반.. 2023. 4. 11.
OpenGL 기본틀 : Callback 프로그래밍 (2)Menu Callback, Idle Callback, Timer Callback Menu Callback Menu Callback #include GLboolean IsSphere = true; //IsSphere 변수 선언하고 True로 초기화 : 메뉴에서 선택된 도형을 결정하는데 사용 void MyDisplay() {//화면에 도형을 그리는 함수 glClear(GL_COLOR_BUFFER_BIT);//컬러버퍼 초기화 glColor3f(0.5, 0.0, 0.5);//그릴 도형의 색상 지정 if (IsSphere)//IsSphere가 참이면 구 그리기 glutWireSphere(0.2, 15, 15); else//거짓이면 도넛을 그리기 glutWireTorus(0.1, 0.3, 40, 20); glFlush();//그리기 명령 실행 } void MyMainMenu(int entryI.. 2023. 4. 11.
OpenGL 기본틀 : Callback 프로그래밍 (1)Reshape Callback, Keyboard Callback, Mouse Callback Reshape Callback #include void MyDisplay() {//사각형을 그리기 위한 함수 glClear(GL_COLOR_BUFFER_BIT); //컬러버퍼에 초기화 색을 가함 glColor3f(0.5, 0.5, 0.5); //그리는 도형의 색상 설정 : 회색 (R,G,B가 같으면 회색) glBegin(GL_POLYGON); //도형을 그리기 위한 시작 지점 설정, 사각형 그리기 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); //.. 2023. 4. 10.
OpenGL 기본 틀 (5)_더블 버퍼링 Dual-Port 프레임 버퍼 2중 포트 구조 Read Port, Write Port 버퍼를 읽어서 화면에 뿌리는 것은 거의 동시 버퍼에 기록하는 것은 상대적으로 느림 애니메이션에서 문제가 됨 더보기 프레임 버퍼랑 양쪽으로 연결된 2중 포트 구조. 그래픽 프로세서가 프레임 버퍼에 물체 영상을 쓰고, 비디오 컨트롤러는 쓰인 내용을 읽어서 화면에 뿌림. 한쪽 버퍼에는 화면에 보여지는 내용을 저장하고, 다른 한쪽 버퍼는 그림을 그리는 데 사용된다는 개념 이때 두 개의 속도차가 발생함. 비디오 컨트롤러가 읽는 속도 ≫ 그래픽 프로세서가 쓰는 속도 이로 인해 깜빡거림 등의 문제가 발생함. 이를 해결하기 위한 것 "더블 버퍼링" 애니메이션시의 문제 (아래 그림) 아직 새로운 내용이 완전히 기록되지 않는 도중에 비디.. 2023. 4. 9.
OpenGL 기본 틀 (4)_윈도우와 뷰포트 윈도우와 뷰포트 윈도우를 분할 그리기가 뷰포트(Viewport) 내부로 제한됨 왜곡 (Distortion) 뷰포트 미 설정시 기본값으로 윈도우 = 뷰포트 윈도우 크기조절에 따라 뷰포트 내부 그림도 자동으로 크기조절 별도 뷰포트 설정에 의해 왜곡 방지 (종횡비를 보존) 더보기 경우에 따라서는 주어진 윈도우의 일부만 사용하기도 함. 뷰 포트 (Viewport)는 윈도우 내부에 설정한 작은 창을 말함. 프로그래머가 별도로 뷰 포트를 정의하지 않으면 기본 설정에 의해 묵시적으로 현재 윈도우 전체가 하나의 뷰 포트로 간주됨. 이 경우 왜곡이 일어나기도 함. 예를 들어 사용자가 윈도우의 가로, 세로 길이를 바꿈으로써 윈도우(뷰 포트) 종횡비를 원래 장면의 종횡비와 달라지게 만들 수도 있음. 이때 뷰 포트는 변경된 .. 2023. 4. 9.
반응형