5장. 오픈지엘 기본틀 학습목표 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.

Slides:



Advertisements
Similar presentations
10장. 시기별 학급경영 11조 염지수 이 슬 권용민 신해식.
Advertisements

일본 근세사. (1) 에도막부의 개창 ( ㄱ ) 세키가하라의 전투 (1600) - 히데요시의 사후 다섯 명의 다이로 ( 大老 ) 가운데 최대 영지 (250 만석 ) 를 보유하고 있던 도쿠가와 이에야스가 급부상. 이에 이에야스와 반목해 온 이시다 미쓰나리 ( 石田三成 ),
아니마 / 아니무스 송문주 조아라. 아니마 아니마란 ? 남성의 마음속에 있는 여성적 심리 경향이 인격화 한 것. 막연한 느낌이나 기분, 예견적인 육감, 비합리적인 것에 대 한 감수성, 개인적인 사랑의 능력, 자연에 대한 감정, 그리.
대구가톨릭대학교 체육교육과 06 학번 영안중학교 체육교사 신웅섭 반갑습니다. 반야월초등학교 축구부 대륜중학교 축구부 대륜고등학교 대구가톨릭대학교 차석 입학 대구가톨릭대학교 수석 졸업 2014 년 경북중등임용 체육 차석 합격 영안중학교 체육교사 근무 소개.
일장 - 1 일 24 시간 중의 명기 ( 낮 ) 의 길이 ( 밤은 암기, 낮은 명기 ) 광주기성 - 하루 중 낮의 길이의 장단에 따라 식물의 꽃눈 형성이 달라지는 현상 일장이 식물의 개화현상을 조절하는 중요한 요인 단일식물 - 단일조건에서 개화가 촉진되는 식물 장일식물.
2 학년 6 반 1 조 고은수 구성현 권오제 김강서.  해당 언어에 본디부터 있던 말이나 그것에 기초하여 새로 만들어진 말  어떤 고장 고유의 독특한 말  Ex) 아버지, 어머니, 하늘, 땅.
2 존경어 겸양어 정중어 미화어 경비어 1.경어와 경비어 연어 관용구(형태상 분류/의미상 분류) 속담 2.관용표현 목차.
키보드 보안 순천향대학교 정보보호학과 임강빈 교수.
현대사회와 윤리 1. 윤리학이란 무엇인가?.
2014년도 교원 및 기간제교사 성과상여금 전달교육 개 회 국기에 대한 경례 - 인사말
선진 고양교육 “유아교육 행정 업무 연수” 유치원 회계실무 및 유아학비 연수 경기도고양교육청.
행정소송 실무교육 공익법무관 문 유 식 인사 공익법무관 소개 서울고검 소개.
어서와 Java는 처음이지! 제3장선택과 반복.
조선왕조의 유교정치.
묵자 겸애, 비명, 비공, 상현, 상동, 천지, 명귀, 삼표 법.
Implement of Input and Interaction
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
내 아이를 위한 구강관리.
제16장 원무통계 • 분석 ☞ 통계란 특정의 사실을 일정한 기준에 의하여 숫자로 표시한 것을 말한다.통계로서 활용할 수 있는 조건으로는 ① 동질성을 지녀야 하고 ② 기준이 명확하고 ③ 계속성이 지속되어야 하며 ④ 숫자로 표시하여야 한다 경영실적의.
7장 디스플레이 리스트.
서울지방세무사회 부가세 교육 사진클릭-자료 다운 세무사 김재우.
치매의 예방 김 은민 윤금 노인요양원 치매의.
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
제9장. 모바일 3D 그래픽스 기술.
제5장 제어명령
제2절 법인세의 계산구조와 세무조정 1. 각 사업연도소득에 대한 법인세 계산구조 회계와 사회 결산서상 당기순이익
Sang Il Park Sejong University
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
FSM 설계.
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
Flip-Flop 설계.
마산에 대하여 만든이 : 2204 김신우, 2202 권성헌.
Computer Graphics OpenGL 설치 및 설정
프로그래밍 보고서 작성법 순천향대학교 컴퓨터공학과 하 상 호.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Draw the basic Geometry Objects
계약서 관련 실무 계약 위반과 판례 김래균.
키타노카시쇼쿠닌(北の菓子職人) - 「오호츠크의 소금 맛」
Chapter 4 컬러( COLOR ).
제어문 & 반복문 C스터디 2주차.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
생활 철학 인간이란 무엇인가?.
프로그래밍 기초와 실습 Chapter 11 Recursion.
[INA470] Java Programming Youn-Hee Han
자바 5.0 프로그래밍.
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
The Party-State (1) 영 어 학 부 강물결 영 어 학 부 박우인
C언어 프로그래밍의 이해 Ch05. 명령문.
제 11장 User Datagram Protocol(UDP)
6장 마케팅 조사 박소현, 김중호, 박기찬.
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
2008년 산별 임금교섭 대응전략.
한밭대학교 창업경영대학원 회계정보학과 장 광 식
Internet Computing KUT Youn-Hee Han
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
음양오행과 물리학 조 원 : 김용훈, 양범길, 박수진, 윤진희, 이경남, 박미옥, 박지선 (11조)
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
이야기 치료에 대하여 <8조 학문적 글쓰기 발표> 주희록 최은지
대림대학교 2017년도 1학기 강의 왕보현 순서도와 스크래치 6주차 대림대학교 2017년도 1학기 강의 왕보현
민 법 국제무역학과 김종석 교수.
8단계 3층을 완성한다 Case 1 Case 2 Case 3 Case 4
printf("Global Korea\n");
PHP 기초문법 PHP를 공부하는데 있어 가장 기초가 되는 PHP기초문법에 대해서 배워 봅니다.
중국문학개론 한부와 겅건안문학 중어중국학과 ㅇ이진원 한부와 건안문학.
흐름도FLOWCHART 프로그래밍 과정 전단부 처리 단계 문제 분석 논리 설계
임베디드 프로그래밍 Lecture #
Presentation transcript:

5장. 오픈지엘 기본틀 학습목표 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다. GLUT 콜백함수의 종류와 사용법을 이해한다. GL의 화면 좌표계와 GLUT의 화면 좌표계 사이의 차이점을 이해한다. 더블 버퍼링의 필요성에 대해 이해한다. 정점 배열, 디스플레이 리스트의 필요성과 사용법을 이해한다. .

물리적 입력장치 마우스, 조이스틱, 트랙볼, 스페이스 볼 상대입력과 절대입력 타블렛, 스타일러스 펜 크로스 헤어 커서 디지타이징 터치 패널 광학 패널, 전기 패널

물리적 입력장치 3D 스캐너 물체 표면의 X, Y, Z 좌표 인식 레이저 촬상소자(CCD) 버튼 박스와 다이얼 버튼 박스: 매크로 기능 다이얼: 물체에 대한 기하변환 아날로그 방식

논리적 입력장치 입력을 논리적으로 취급 scanf("%d", &x); 키보드? 버튼박스? 물리적 입력장치가 바뀌어도 프로그램은 동일 좌표 입력기(Locator) 절대좌표 또는 상대좌표. 마우스, 키보드의 화살표 키, 트랙 볼 연속좌표 입력기(Stroke) 일련의 연속 좌표. 마우스, 태블릿 커서. 문자열 입력기(String) 문자열. 키보드. 스칼라 입력기(Valuator) 회전각, 크기조절 비율 등 스칼라 값. 키보드, 마우스, 다이얼 메뉴선택 입력기(Choice) 메뉴, 서브메뉴, 메뉴옵션 선택. 마우스, 키보드, 터치 패널, 음성 물체선택 입력기(Pick) 물체를 선택. 마우스나 터치 패널

입력 모드 메저와 트리거 메저(Measure): 응용프로그램에게 전달되는 입력값 트리거(Trigger): 전달하라는 신호 Ex. DIR <ENTER> 마우스 좌표와 클릭 선택된 메뉴 아이디와 클릭 메저 프로세스 운영체제 초기화시에 실행 항상 시스템 버퍼에 메저값이 저장되어 있음.

리퀘스트 모드 프로그램이 실행 중 메저를 요구 트리거가 일어날 때까지 대기상태 Request_Locator(Device_ID, &Measure); Device_ID 필드에 의해 물리적 입력장비 제어

샘플 모드 직접모드 사용자 트리거가 불필요 sample_Locator(Device_ID, &Measure); 이미 필요한 메저가 준비된 상태 물체선택 -> 회전 메뉴 선택 cf. 회전 메뉴 선택 -> 물체선택: 리퀘스트 모드

이벤트 모드 이벤트 모드 사용자가 입력 선택. cf. 리퀘스트/샘플 모드: 프로그램이 주도권 이벤트 레코드: 이벤트 타입, 장치 아이디, 메저 응용 프로그램은 주기적으로 이벤트 큐를 검사 드라이버에게 이벤트 리퀘스트. 드라이버가 큐 프런트 레코드를 전달 큐가 비어있으면 응용 프로그램은 다른 일을 수행

콜백함수 응용 프로그램 구조 Initialize Input Devices; do {    if (There Is an Event on the Event Queue)          switch (Event Type)          {    case Keyboard Event:                       Get  Event Record, Run Keyboard Callback                case Mouse Event:                      Get  Event Record, Run Mouse Callback           ...          }         else Do Background Process } while (User Does Not Request Escape);

지엘의 콜백

지엘의 콜백 아이들 콜백 큐에 이벤트가 없을 때 실행 정의되어 있지 않으면 운영체제는 다른 일을 수행 드라이버를 통해 주기적으로 이벤트 검사

윈도우와 뷰포트 윈도우를 분할 그리기가 뷰포트 내부로 제한됨 왜곡 뷰포트 미 설정시 기본값으로 윈도우 = 뷰포트 윈도우 크기조절에 따라 뷰포트 내부 그림도 자동으로 크기조절 별도 뷰포트 설정에 의해 왜곡 방지

GLUT 윈도우 제어

GL의 뷰포트 설정

GL의 화면좌표, GLUT 화면좌표

프레임 버퍼 2중 포트 구조 Read Port, Write Port 버퍼를 읽어서 화면에 뿌리는 것은 거의 동시 버퍼에 기록하는 것은 상대적으로 느림 애니메이션에서 문제가 됨

애니메이션 시의 문제

더블 버퍼링 프런트 버퍼와 백 버퍼

육면체 그리기 정점 0, 3, 2, 1으로 구성된 면 (반시계 방향으로 명시) 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으로 구성된 면 (반시계 방향으로 명시) glBegin(GL_POLYGON);    glColor3fv(MyColors[0]); glVertex3fv(MyVertices[0]);     glColor3fv(MyColors[3]); glVertex3fv(MyVertices[3]);    glColor3fv(MyColors[2]); glVertex3fv(MyVertices[2]);     glColor3fv(MyColors[1]); glVertex3fv(MyVertices[1]); glEnd();

계층구조적 표현

정점 배열 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}};                                       GLubyte MyVertexList[24]={0,3,2,1, 2,3,7,6, 0,4,7,3, 1,2,6,5, 4,5,6,7, 0,1,5,4};         void MyDisplay( ){      …     glEnableClientState(GL_COLOR_ARRAY);                                          glEnableClientState(GL_VERTEX_ARRAY);     glColorPointer(3, GL_FLOAT, 0, MyColors);                                   glVertexPointer(3, GL_FLOAT, 0, MyVertices);          for(GLint i = 0; i < 6; i++)                                                   glDrawElements(GL_POLYGON, 4, GL_UNSIGNED_BYTE, &MyVertexList[4*i]);     …                            }                               

지엘의 실행모드 직접 모드(Immediate Mode) 화면 렌더링과 동시에 물체 정보를 모두 파기 다시 그리려면 전체 코드를 다시 실행 보류모드(Retained Mode) 이미 정의된 물체를 컴파일 된 형태로 재사용 디스플레이 리스트 기본요소(Primitives), 상태변수(State Variable), 영상(Image) 이동, 회전, 조명 작업과 관련된 모든 명령 반복적으로 실행되어야 할 요소를 디스플레이 리스트 내부에 포함 프로그램 속도 향상에 필수적임