Sang Il Park Sejong University

Slides:



Advertisements
Similar presentations
컴퓨터프로그래밍 I 강원대학교 컴퓨터학부 2012 년 1 학기 담당교수 : 정충교 1. 강사진 강사 : 정충교 교수 연구실 : 공 호 조교 : 3 분반 이남세 연구실 : 공
Advertisements

2 장 Initial Steps in Drawing Figures 창원대학교 정보통신공학과 박동규.
C 언어 Sun Moon University 1 of 25 C 언어 : 강의소개 강의실 : 산 211 담당교수 : 고경철 ( 정보통신공학과 ) 사무실 : 산학협력관 105B 면담시간 : 수업후 1 시간
/11 CUDA 를 이용한 병렬 프로그래밍 DirectX 3D 를 이용한 3D 프로그래밍
Computer Graphics 윈도우 프로그래밍 김 창 헌김 창 헌. Computer Graphics 2 윈도우 시스템  윈도우  스크린 위에서 독립적으로 움직일 수 있는 사각형 영역  윈도우 시스템  유저와 어플리케이션간의 그래픽 스크린을 통한 인터페이스 를.
강의 내용 : DirectX 개요 DirectX 9 을 이용한 시각화. 목 차 DirectX 출현 배경 DirectX 현재 버전 DirectX 장점 DirectX 구성요소 DirectX SDK 다운로드 및 설치 DirectX SDK 폴더 구성 및 역할 샘플 코드 브라우저.
미디어 프로그래밍 II 소개.
Chapter 3. 뷰잉(Viewing).
졸업 프로젝트 중간보고서 12조 Spot Browser.
안 보여 줄끼가? 소프트웨어 프로젝트 1 – 제안서 발표 피바다 (A6)조 발표자 : 조기수.
Computer Graphics 한신대학교 컴퓨터공학부 류승택 2017년 2학기.
Implement of Input and Interaction
Computer Graphics 한신대학교 컴퓨터공학부 류승택 2015년 2학기.
OpenGL Programming (III) 1. Drawing in 3D 2. Manipulating 3D Space
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
GSCEDI 보안정책 강화 공지 ① 로그인 전 메인화면에 접속 시 자동으로 암호화 보안 DLL이 설치됩니다.
OpenGL 실습 1주차.
OpenGL 시작하기.
Chapter 5. 라이팅(Lighting)
7장 디스플레이 리스트.
A n d r o i d Android 2010 년 5월 19일 작성자 : 백 선 재.
1. C 언어의 이해와 컴파일러 설치.
Multimedia Programming 17: Introduction to DirectShow
윤 홍 란 MFC 기초 윤 홍 란
콘텐츠 제작 프로젝트 [교재] - OpenGL 프로그래밍 가이드, 제4판, Dave Shreiner, Mason Woo, Jackie Neider, Tom Davis 공저, 남기혁 역, 정 보문화사, [참고자료] OpenGL Programming.
제9장. 모바일 3D 그래픽스 기술.
OpenGL Programming (II) 3D Graphics Fundamentals
Kasimov C언어 세미나 1st.
1 C 언어의 이해와 컴파일러 설치 프로그래밍 환경을 구축하자!.
OpenGL Project (3D 움직이는 자동차)
Program Memorandum - MODEL HOUSE
그래픽스 시스템과 모델.
Visual C++ Programming
openGL Project 결과보고서 야구 시구 시뮬레이션
Beginning Linux Programming
Homework Hierarchical bounding volume
OpenGL.
학습목표 4장. 오픈지엘 API 표준화의 개념과 필요성을 이해한다. API의 정의와 필요성을 이해한다.
제 6장 카 메 라.
Computer Graphics with OpenGL
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
1장 그래픽스 시스템과 모델-이미지 형성, 모델, 구조
Hanyang University Jungsik Park
Visual Studio 2010 프로젝트 생성하기 PC화면에서 Visual Studio 2010 아이콘을 더블클릭 하거나
4장. 오픈지엘 API 학습목표 표준화의 개념과 필요성을 이해한다. API의 정의와 필요성을 이해한다.
Computer Animation Algorithms and Techniques
openGL Project 제안서 비 오는 정류장에서
5장. 오픈지엘 기본틀 학습목표 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
버퍼 (Buffer).
Computer Graphics OpenGL 설치 및 설정
광원 제어 하기.
Draw the basic Geometry Objects
SystemC 설치 (Visual Studio 2010)
지도교수님 : 김 정배 기획 및 프로그램 : 양 승훈
UI 테스트 자동화(Coded UI Test)를 통한 품질 혁신 가이드
Appendix A 구조적 시스템 개발 방법론.
OpenGL Project Dong-seo Univ Multimedia Engineering.
Chapter 4 컬러( COLOR ).
Computer Animation Algorithms and Techniques
콘텐츠 제작 프로젝트 [교재] - OpenGL 프로그래밍 가이드, 제4판, Dave Shreiner, Mason Woo, Jackie Neider, Tom Davis 공저, 남기혁 역, 정 보문화사, [참고자료] OpenGL Programming.
OpenGL Introduction 컴퓨터 그래픽스 김 창 헌.
openGL Project 제안서 - 해상 전투
OpenGL Project.
C언어 개론.
OpenGL project – Easy Flight Simulator
LOGOTYPE 춤추는 풍선 팀장 : 이준호 팀원 : 장원진.
OPENGL project 구성원 : 김수민,남현우 OPENGL을 이용한 당구(3구) 구현하기.
발표자 : 조윤혜 발표일 : 담당 교수 : 성미영 교수님
Computer Graphics with OpenGL
OpenGL 프로젝트 복학생은 죽지않아!! ( 강유진, 박지혜)
Presentation transcript:

Sang Il Park Sejong University Starting OpenGL Sang Il Park Sejong University Most of the slides are taken from Jehee Lee’s

Graphics Rendering Pipeline Rendering: the conversion of a scene into an image Scene is composed of “models” in 3D space. Models are composed of “primitives” supported by graphics packages such as OpenGL. Models entered by hand or created by a program 3D Scene render 2D Image

Functions of a Graphic Package Graphics Library such as Core, OpenGL, DirectX Provide primitives for graphic description Build and maintain graphic representation models Provide primitives for viewing operations Support user interaction with application program Interact directly with users to allow them modify viewing parameters, if possible

Graphics API 응용프로그램 인터페이스 라이브러리 API (Application Programming Interface)

General Graphics Packages Graphics packages are device-independent Official Standards GKS : ANSI85, 2D, Europe GKS-3D : ANSI88 PHIGS : ANSI88 - Hierarchical structures PHIGS+ : ISO 92 Non-official Standards Silicon Graphics OpenGL (1992) Open Inventor Microsoft DirectX Sun Mircorsystems VRML

Graphics API 발전과정

OpenGL 저수준 API 장면을 묘사하는 것이 아니라 구체적 프러시져를 호출 cf. DirectX from Microsoft: 호환성 결여 하드웨어와 거의 직접 연관 (하드웨어 성능을 최대한 발휘) Inventor, VRML, Java3D 등은 고수준 API의 기반

오픈지엘 명령어 구조 명령어(함수)의 이름 규칙: 예제: float: C/C++ 타입, GLfloat: GL 타입 gl 명령이름 매개변수 개수 매개변수 형식

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

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

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

GLUT의 CALLBACK 타입별 콜백함수

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

OpenGL/GLUT 설치와 설정 참고자료: GLUT Tutorial page: http://www.lighthouse3d.com/opengl/glut/

Visual Studio 2005에서의 세팅 필요 파일 세팅 : 필요파일받기 http://www.xmission.com/~nate/glut.html 에서 glut-3.7.6-bin.zip 을 다운로드 함 압축을 풀고, glut.h, glut32.lib, glut32.dll 이 있음을 확인

Visual Studio 2005에서의 세팅 필요 파일 세팅1 : 헤더 파일 세팅 헤더파일(glut.h)을 아래 폴더에 복사 C:\Program Files\Microsoft Visual Studio 8 \VC\PlatformSDK\Include\GL

Visual Studio 2005에서의 세팅 필요 파일 세팅2 : 정적라이브러리(lib) 파일 세팅 라이브러리파일(glut32.lib)를 아래 폴더에 복사 c:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib

Visual Studio 2005에서의 세팅 필요 파일 세팅3 : 동적라이브러리(dll) 파일 세팅 라이브러리파일(glut32.dll)을 아래 폴더에 복사 c:\WINDOWS\system32

Visual Studio 2005에서의 세팅 프로젝트 새로 만들기: Win32 콘솔 응용프로그램

Visual Studio 2005에서의 세팅 프로젝트 새로 만들기: Win32 콘솔 응용프로그램 세팅 시 “빈 프로젝트” 선택!

Visual Studio 2005에서의 세팅 프로젝트 새로 만들기: Win32 콘솔 응용프로그램 세팅 시 “빈 프로젝트” 선택!

Visual Studio 2005에서의 세팅 프로젝트 Link Setting: 추가종속성에 opengl32.lib glu32.lib glut32.lib 추가

Visual Studio 2005에서의 세팅 Source code 추가: 프로젝트>새항목추가>코드>C++ File(.cpp) 추가

Test Code: 창띄우기 #include <GL/glut.h> void MyDisplay (void) { } void main () glutInitWindowPosition (50, 100); glutInitWindowSize (400, 300); glutCreateWindow ("My First OpenGL"); glutDisplayFunc (MyDisplay); glutMainLoop ( );

GLUT 윈도우 제어

Viewport 뷰포트(Viewport): 창 내에서 OpenGL이 그림을 그리는 영역 glViewport로 설정 가능 뷰포트 미 설정시 기본값으로 윈도우 = 뷰포트 윈도우 크기조절에 따라 뷰포트 내부 그림도 자동으로 크기조절 그림을 그리는 좌표계와 종횡비가 다를 경우 왜곡이 생길 수 있음 왜곡 Viewport가 네개인 예

Test Code: 화면지우기 #include <GL/glut.h> void myDisplay (void) { glClear (GL_COLOR_BUFFER_BIT); glFlush ( ); } void main () glutInitWindowPosition (50, 100); glutInitWindowSize (400, 300); glutCreateWindow ("My First OpenGL"); glutDisplayFunc (myDisplay); glutMainLoop ( );

Test Code: 초기값 설정1 #include <GL/glut.h> void initialize (void) { glClearColor (1.0f,1.0f,1.0f,0.0f); } void myDisplay (void) glClear (GL_COLOR_BUFFER_BIT); glFlush ( ); void main () glutInitWindowPosition (50, 100); glutInitWindowSize (400, 300); glutCreateWindow ("My First OpenGL"); initialize(); glutDisplayFunc (myDisplay); glutMainLoop ( );

상태변수 오픈지엘의 역할 = Rendering 시의 상태변수 설정 렌더링은 상태변수를 참조하며 실행됨

상태변수란? 파라미터 리스트 시스템 테이블 “현 상태” 라는 개념 drawLine((1, 0), (3, 0), 3, 4, (255, 0, 0)); drawLine((3, 0), (2, 5), 3, 4, (255, 0, 0)); drawLine((2, 5), (1, 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

실제 OpenGL의 경우

상태변수 예 상태변수 설정 상태변수 검색 기능관련 상태변수 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);             조명 모드를 비활성화

Test Code: 초기값 설정2 좌표계 설정 : gluOrtho2D ( left, right, bottom, top) void initialize (void) { glClearColor (1.0f,1.0f,1.0f,0.0f); glMatrixMode (GL_PROJECTION); gluOrtho2D (0.0, 200.0, 0.0, 150.0); } 좌표계 설정 : gluOrtho2D ( left, right, bottom, top) (Left, Top) (Right, Top) y (Left, Bottom) (Right, Bottom) x

Test Code: 라인그리기 void myDisplay (void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (0.0, 0.0, 1.0); glBegin (GL_LINES); glVertex2i (180, 15); glVertex2i (10, 145); glEnd ( ); glFlush (); }

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

GLUT의 CALLBACK 타입별 콜백함수

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

정리 OpenGL: Graphics API GLUT: OpenGL Utility Toolkit 그래픽스 하드웨어를 다루는 핵심 library로 구성 GLUT: OpenGL Utility Toolkit OpenGL을 보다 쉽게 사용할 수 있기 위한 여러 툴 제공 Windows 제어 사용자 Interaction을 위한 Callback 함수 기능 OpenGL과 GLUT의 명령어는 기계독립적 똑같은 source code를 사용해 Unix, Windows, Mac에서 동작 시킬 수 있다