4장. 오픈지엘 API 학습목표 표준화의 개념과 필요성을 이해한다. API의 정의와 필요성을 이해한다.

Slides:



Advertisements
Similar presentations
ReadyNAS Surveillance for x86 platform (Version ) NETGEAR.
Advertisements

컴퓨터와 인터넷.
컴퓨터 운영체제의 역사 손용범.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
리눅스 관리의 신개념 Levanta Intrepid M Demo
그래픽 하드웨어.
<<< 시스템등록정보 “하드웨어-장치관리자” 설정 >>>
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Windows Server 장. 사고를 대비한 데이터 백업.
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
Sang Il Park Sejong University
5장 Mysql 데이터베이스 한빛미디어(주).
Ubiquitous Computing Practice - Part I (Installation) -
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
11 장 LAN 기본 개념과 Ethernet LAN
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
8장. 원격지 시스템 관리하기.
Visual Basic .NET 처음 사용하기.
소리가 작으면 이어폰 사용 권장!.
FTP 프로그램 채계화 박재은 박수민.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
OpenGL.
학습목표 4장. 오픈지엘 API 표준화의 개념과 필요성을 이해한다. API의 정의와 필요성을 이해한다.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
5장 Mysql 데이터베이스 한빛미디어(주).
제 1장. 멀티미디어 시스템 개요.
3장. CentOS 리눅스 설치.
Method & library.
프로그래밍 개요
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
강의 개요. 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
SAS Statistical Analysis System 통계패키지 실습 (2011년 1학기)
홀인원2.0 설치 메뉴얼.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
뇌를 자극하는 Windows Server 2012 R2
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
제 1장. C++ 시작하기.
Adobe 제품 다운로드 및 설치 방법 안내 Adobe Creative Cloud Adobe License 권한을 받으신 분
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
그래픽 모듈 편집.
자율주행 차량용 드라이빙 컴퓨팅 하드웨어 플랫폼 05
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
Clipping 이진학.
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
자바 5.0 프로그래밍.
LabVIEW WiznTec 주임 박명대 1.
ARM Development Suite v1.2
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
뇌를 자극하는 Solaris bible.
Introduction to JSP & Servlet
AT MEGA 128 기초와 응용 I 기본적인 구조.
13주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
발표자 : 이지연 Programming Systems Lab.
9 브라우저 객체 모델.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
Installation Guide.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
학부 컴퓨터공학부 교육과정 (학부) 2학년 4학년 3학년 1학년 1학기 2학기 IPP 자격과정 전공트랙
 6장. SQL 쿼리.
7 생성자 함수.
엑셀 리포트를 웹 클라이언트에서 사용시 설정 방법
6 객체.
소리가 작으면 이어폰 사용 권장!.
Presentation transcript:

4장. 오픈지엘 API 학습목표 표준화의 개념과 필요성을 이해한다. API의 정의와 필요성을 이해한다. 오픈지엘의 설계원리에 반영된 개념을 이해한다. 파이프라인 개념, 상태변수 개념을 이해한다. 오픈지엘 프로그램 작성을 위한 유틸리티 프로그램 설치방법을 이해한다.

표준화 정의 “주어진 여건에서 최적의 질서를 유지하기 위해, 현존하거나 잠재하는 문제들에 대해, 공유성과 재사용성을 높이기 위한 기반을 확립하는 행위“ ISO/IEC JTC1/SC24, Working Group "하드웨어 구조(Architecture)“ "응용프로그램 인터페이스(API, Application Program Interface)“ "메타파일 및 인터페이스(Metafile and Interface)“ "언어 수용(Language Binding)“ "표준안의 타당성검증 및 등록(Validation Testing and Registration)"

그래픽 분야 표준의 목표 주전산기 독립성(Host Machine Independence) 동일한 프로그램을 가지고서 다양한 모든 하드웨어에서 사용할 수 있어야 한다. 장비 독립성(Device Independence) 동일 기능을 수행하는 입출력 장비의 종류가 달라도 프로그램 명령은 동일해야 한다. 프로그램 언어 독립성(Programming Language Independence) 프로그램 작성에 어떠한 프로그램 언어를 사용해도 된다. 운영자 이식성(Operator Portability) 새로운 프로그램 사용법을 누구라도 쉽게 터득할 수 있어야 한다.

그래픽 기본요소와 기본요소 외양 기본요소(Primitives) 점(Point), 선(Line), 채움 영역(Fill Area), 꺾은 선(Poly Line), 표시 꺾은선(Poly Marker), 문자(Character) 기본요소 외양 패턴, 색상, 두께 원형 캡(Round Cap), 버트 캡(Butt Cap), 확장 캡(Projection Cap) 원형 연결(Round Join), 베벨 연결(Bevel Join), 마이터 연결(Miter Join) 채움 다각형(Filled Polygon), 점층적 변화(Gradation), 사선 , 윤곽선 제거

ISO 그래픽 표준 GKS(지케이에스, Graphical Kernel System) 유럽에 의해 주도. 2차원 위주. 이후 GKS-3D로 발전 파일출력 기본요소 수준에서 서술한 가상 레벨(Virtual Level) 저장 기본요소의 위치 좌표, 속성, 가시성, 변환 정보를 저장 PHIGS(Programmer's Hierarchical Interactive Graphics System) 미국에 의해 주도. CAD 개념 반영 3차원 모델링(Modeling), 가시화(Viewing) 등에 주안점 상관관계를 포함한 물체의 집합 = 구조체(Structure) 구조체 관통(Traversal)에 의한 드로잉 현 변환 행렬(現, CTM, Current Transformation Matrix) 개념 기본요소에 관한 정보 + 응용 프로그램 레벨에서 기본요소 사이의 관계 CSG의 불리언 연산, 로봇 팔의 객체 계층구조 저장

그래픽 API 응용프로그램 인터페이스 라이브러리 PHIGS, GKS = 추상적 수준의 API API

고수준 그래픽 API 장면묘사 언어(Scene Description Language) Camera {     center {0.0 0.0 5.0}        카메라 중심을 (0.0 0.0 5.0)에 위치시키되     direction {0.0 0.0 -1.0}          카메라가 (0.0 0.0 -1.0)을 바라보게 } Lights {     numLights 1                   광원의 숫자는 1개     DirectionalLight {               방향성 광원으로 하여     direction {0.5 0.5 0.5}         (0.5, 0.5, 0.5) 방향으로 빛을 비추되     color {1.0 1.0 1.0}              백색 빛을 발하는 광원     } Background {     color {1.0 1.0 1.0}              배경색은 백색 Group {     numObject 2                   물체 2개로 이뤄진 그룹     Material {0.0, 0.0, 1.0}     첫 물체를 청색으로 하여     Sphere {2.0}                   반지름 2인 원구를 그림     Transform {         Translate {1.0, 0.0, 0.0}     x축 방향으로 1.0만큼 이동하여         Scale {0.3, 0.3, 0.3}        크기를 x, y, z 방향으로 0.3배로 줄여서         Material {1.0, 0.0, 0.0}      둘째 물체를 적색으로 하여         Sphere {2.0}              반지름 2인 원구를 그림

고수준 그래픽 API 장면 그래프(Scene Graph) 그룹 노드는 네스트 구조 관통에 의해 장면을 그려냄 오픈 인벤터(open Inventor) VRML Java3D

VRML #VRML V2.0 utf8 Shape { appearance Appearance {                   material Material { }     }     geometry Sphere {                  radius 1.2 } Shape {                                              geometry Cylinder {                 radius 0.3   height 5.0   top FALSE      } Transform {                                  translation -6.0 2.0 0.0                      children {                                    Shape {                                     appearance Appearance {                           material Material { }             }             geometry Cylinder {                          radius 0.3   height 5.0    top FALSE ]          

VRML 장면 그래프 VRML 저작도구: Cosmo Player

그래픽 API 발전과정

오픈지엘 저수준 API 장면을 묘사하는 것이 아니라 구체적 프러시져를 호출 cf. DirectX from Microsoft: 호환성 결여 하드웨어와 거의 직접 연관 (하드웨어 성능을 최대한 발휘) Inventor, VRML, Java3D 등 고수준 API의 기반 드라이버 소프트웨어에 비해서는 상대적으로 고수준 함수

오픈지엘 설계원리 범용성(Generality) 워크스테이션, 수퍼 컴퓨터, 개인용 컴퓨터. 운영체제에 무관 효율성(Performance) 그래픽 하드웨어의 가속 기능을 최대한 발휘. 회사마다 서로 다른 기능. 공통적인 부분을 찾아내어 그 성능을 극대화 공통부분이 아닌 것에 대해서는 활성화 또는 비활성화 등 기능 모드를 제공. 독립성(Orthogonality) 기능 간의 독립성을 최대한 보장. 기능끼리 서로 얽혀 발생하는 오류를 방지. 완전성(Completeness) 특정 하드웨어 기능에 대해서는 ARB 확장 형태로 명령어를 제공 다수의 하드웨어가 확장 기능을 지원하면 표준기능으로 변경. 소프트웨어적으로라도 실행할 수 있도록 배려 상호 작업성(Interoperability) 그래픽 명령은 A 컴퓨터에서 내리되 실행은 B 컴퓨터에서 클라이언트-서버 모델(Client-Server Model)지원. 성능이 낮은 클라이언트 컴퓨터가 고성능 서버를 이용.

파이프라인 GPU 설계원리 CPU 파이프라인과 유사 분업에 의한 동시처리로 처리속도를 극대화. Ex. 컨베이어 시스템 파이프라인 서브 프로세스는 모두 하드웨어화

상태변수 지엘의 역할 = 상태변수 설정 파이프라인은 상태변수를 참조해서 자동으로 실행됨

속성할당 방법 파라미터 리스트 drawLine((1, 0), (3, 0), 3, 4, (255, 0, 0)); 시스템 테이블 setLineStyle(2); setLineWidth(4); setLineColor(255, 0, 0); drawLine((1, 0), (3, 0)); drawLine((3, 0), (2, 5)); drawLine((2, 5), (1, 0)); “현 상태” 라는 개념 Current State

지엘 프로그램, 상태변수, 파이프라인

상태변수 예 상태변수 설정 glColor3f(1.0, 1.0, 1.0); GL_CURRENT_COLOR 상태변수 값을 (1.0, 1.0, 1.0)으로 설정 다른 명령에 의해 값이 바뀔 때까지 모든 물체를 그릴 때 유효함. glPointSize(0.5); glLineWidth(5); glShadeModel(GL_SMOOTH); 상태변수 검색 float MyColor[3];                                   임의 배열 glGetFloatv(GL_CURRENT_COLOR, MyColor);     검색 함수 기능관련 상태변수 glEnable(GL_LIGHTING);              조명 모드를 활성화 glDisable(GL_LIGHTING);             조명 모드를 비활성화

지엘 명령어 구조 정점정의 float: C/C++ 타입, GLfloat: GL 타입

지엘 명령어 구조 벡터 타입 지엘은 API 명령어가 아니라 함수명. 그러나 혼용 지엘은 비 객체지향적 처리속도를 향상 함수 오버로딩이 불가능 3차원 정점이라면 glVertex3f( ), 2차원 정점이라면 glVertex2f( )

지엘 프로그램 구성요소 지엘 라이브러리(GL: OpenGL Core Library) 렌더링 기능을 제공하는 함수 라이브러리 지엘 유틸리티 라이브러리(GLU: OpenGL Utility Library) 50여개의 함수. GL 라이브러리의 도우미 다각형 분할, 투상, 2차원 곡면, 너브스등 고급기능을 제공하는 함수 GL 함수로 작성 지엘 유틸리티 툴 킷(GLUT: OpenGL Utility Toolkit) 사용자 입력을 받아들이거나 화면 윈도우를 제어하기 위한 함수 윈도우 운영체제 기능과의 인터페이스

GLUT 윈도우 기능: 프로그램 실행에 필요한 창(Window)을 관리 콜백 기능: 프로그램 실행 중 발생하는 사용자 입력을 처리