OpenGL 시작하기.

Slides:



Advertisements
Similar presentations
2 장 Initial Steps in Drawing Figures 창원대학교 정보통신공학과 박동규.
Advertisements

YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
미디어 프로그래밍 II 소개.
Chapter 3. 뷰잉(Viewing).
안 보여 줄끼가? 소프트웨어 프로젝트 1 – 제안서 발표 피바다 (A6)조 발표자 : 조기수.
정지성 Chung-buk National University, Korea
2.1 The Sierpinski Gasket.
Computer Graphics 한신대학교 컴퓨터공학부 류승택 2017년 2학기.
CG Programming (Modeling)
Implement of Input and Interaction
OpenGL 실습 12 로봇.
Computer Graphics 한신대학교 컴퓨터공학부 류승택 2015년 2학기.
OpenGL Programming (III) 1. Drawing in 3D 2. Manipulating 3D Space
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
OpenGL 실습 1주차.
OpenGL 발표일 : 발표자 : 조윤혜.
Lecture #7 제 4 장. 기하학적 객체와 변환 (2).
Chapter 5. 라이팅(Lighting)
7장 디스플레이 리스트.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
Practice - texture mapping
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
OpenGL 이란 그래픽스 하드웨어에 대한 소프트웨어 인터페이스 OpenGL의 전신은 실리콘그래픽스사의 IRIS GL
1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용 4장 – 기하학적 객체와 변환 5장 관측
학습목표 7장. 투상변환과 뷰포트변환 평행투상과 원근투상의 차이점을 이해한다. 가시부피 설정방식을 이해한다.
학습목표 7장. 투상변환과 뷰포트변환 평행투상과 원근투상의 차이점을 이해한다. 가시부피 설정방식을 이해한다.
OpenGL Programming (II) 3D Graphics Fundamentals
제 2 장. 그래픽스 프로그래밍 : OpenGL 개요/ 예제 프로그램
OpenGL Project (3D 움직이는 자동차)
Program Memorandum - MODEL HOUSE
Sang Il Park Sejong University
그래픽스 시스템과 모델.
제 1 장. 컴퓨터 그래픽스 시스템과 모델 - 3D 컴퓨터 그래픽스 구조 - OpenGL API 개요
openGL Project 결과보고서 야구 시구 시뮬레이션
OpenGL.
Computer Graphics with OpenGL
4. OpenGL 상태들과 기본 도형들.
Mobile 3D Graphics (6장 퍼포먼스와 확장성) 교과목명 : 컴퓨터 그래픽스 특론 학 번 :
Hanyang University Jungsik Park
Computer Animation Algorithms and Techniques
임베디드 시스템을 위한 C프로그래밍 기법 3.7 ~ 4.5 장 Raphael.
openGL Project 제안서 비 오는 정류장에서
버퍼 (Buffer).
Open GL GLUT 라이브러리 국내 관련사이트 다운받으세요.
Computer Graphics OpenGL 설치 및 설정
OpenGL 프로젝트 김병욱 김상진 김성환.
핸드폰 시뮬레이션 김 형 도 송 미 경.
광원 제어 하기.
Draw the basic Geometry Objects
알아야 할 것들.
OpenGL Project Dong-seo Univ Multimedia Engineering.
Chapter 4 컬러( COLOR ).
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Computer Animation Algorithms and Techniques
콘텐츠 제작 프로젝트 [교재] - OpenGL 프로그래밍 가이드, 제4판, Dave Shreiner, Mason Woo, Jackie Neider, Tom Davis 공저, 남기혁 역, 정 보문화사, [참고자료] OpenGL Programming.
OpenGL Introduction 컴퓨터 그래픽스 김 창 헌.
OpenGL 프로젝트 김병욱 김상진 김성환.
3D Shapes 3개 핵심 Properties가 존재 1.Material 표면의 재질을 설정합니다.
openGL Project 제안서 - 해상 전투
OpenGL Project.
OpenGL project – Easy Flight Simulator
LOGOTYPE 춤추는 풍선 팀장 : 이준호 팀원 : 장원진.
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
Rendering Lecture 따라하기 제작:이경복(한밭대학교).
Computer Graphics with OpenGL
발표자 : 조윤혜 발표일 : 담당 교수 : 성미영 교수님
01. ‘한글뷰어’ 설치 전 준비사항.
Computer Graphics with OpenGL
OpenGL Project = Solar System = 김민지 박유나.
실습#5 인터랙티브 프로토타입 2011년 2학기 숙명여자대학교 임순범.
Presentation transcript:

OpenGL 시작하기

차 례 OpenGL ? Visual Studio 설정 예제 프로그램 및 설명 예제 프로그램 및 실행화면 특징 /함수 그룹 / 기능 / 관련 라이브러리 데이터 타입 / 네이밍 규칙 Visual Studio 설정 예제 프로그램 및 설명 Simple Sample : 창 만들기 도형 만들기 : 사각형 그리기 예제 프로그램 및 실행화면 Spring Example Line Example

OpenGL ? 그래픽 하드웨어를 위한 소프트웨어 인터페이스 Hardware-independent interface 점, 선, 면 등과 같은 3차원 요소 비트맵 등의 2차원 요소의 표현 RGBA 모델과 Indexed Color 모델에 의한 색상 지원 다양한 조명과 쉐이딩의 설정 텍스처 매핑 Antialiasing, 안개효과, 블랜딩 등의 고급기능 Hardware-independent interface 3D 그래픽 응용프로그램을 만들기 위한 API

OpenGL의 특징 그래픽스 시스템 : 블랙 박스로 간주 OpenGL API 120 여 함수들 클라이언트-서버 모델(생성-표시) 하드웨어와 윈도우 시스템에 독립적 사용자 프로그램 그래픽스 시스템 입출력 장치 함수 호출 출력 데이터 입력

OpenGL 함수 그룹 기본 요소 함수 : 점, 선분, 다각형, 문자열 등 속성 함수 : 색, 선의 두께, 글자체 등 관측함수 : 합성 카메라 설정 변환 함수 : 회전, 이동, 크기 변환 등 객체 변환 입력 함수 : 키보드, 마우스 등의 입력 처리 제어 함수 : 윈도우 시스템과의 통신, 초기화, 에러 처리 등

OpenGL 기능 텍스처 매핑(texture mapping) 깊이 버퍼 사용(Z 버퍼링) 이중 버퍼링(double buffering) 명암 효과(lighting effects) 한면의 명암이 다른 효과(smooth shading) 길감속성(material properties)

OpenGL 관련 라이브러리 OpenGL(GL) OpenGL Utility Library(GLU) GL 보다 상위 기능 지원 (U = Utility) OpenGL Extension to the X Window(GLX)

OpenGL 관련 라이브러리 OpenGL Utility Toolkit(GLUT) Open Inventor 윈도우 시스템과의 인터페이스 (T = Toolkit) Open Inventor Object-oriented toolkit based on OpenGL Interactive three-dimensional graphic library

OpenGL 데이터 타입 suffix 데이터 타입 C언어 유형 OpenGL 유형 b s i f d ub us ui 8 bit 정수 16bit 정수 32bit 정수 32bit 실수 64bit 실수 8bit 부호없는 정수 signed char short long float double unsigned char unsigned short unsigned long GLbyte GLshort GLint, GLsizei GLfloat, GLclampf GLdouble, GLclampd GLubyte, GLboolean GLushort GLuint, GLenum, GLbitfield

<라이브러리 접두어><루트 명령어><선택적인 인자의 수><선택적인 인자의 타입> 함수 네이밍 규칙 <라이브러리 접두어><루트 명령어><선택적인 인자의 수><선택적인 인자의 타입> glColor3f(…) 인자의 수 Gl 라이브러리 인자의 타입 루트 명령

설정 (Visual Studio) Visual c++에서는 OpenGL의 기본적인 library들이 default로 설치됨 Dynamic Link Library 설치 opengl32.dll, glu32.dll, glut32.dll Window98,Window Me c:\Windows\System Window2000 C:\WINNT\System32 Window XP C:\Windows\System32

설정 (Visual Studio) (cont) OpenGL Library 설치 opengl32.lib, glu32.LIB, glut32.lib C:\Program file\Microsoft Visual Studio\VC98\Lib Open GL Header 설치 gl.h, glu.h, glut.h, glaux.h C:\Program file\Microsoft Visual Studio\ VC98\include\GL

설정 (Visual Studio) (cont)

설정 (Visual Studio) (cont) OpenGL 공식 사이트 http://www.opengl.org Glut 다운로드 페이지 http://www.opengl.org/resources/libraries/glut/glut_downloads.html

Simple Sample

Simple Sample (cont)

Simple Sample (cont) 실행 결과

Simple Sample (cont) glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB) GLUT_RGB : RGB 생상모드 사용

Simple Sample (cont) glutCreateWindow(“Simple”); 창을 만드는 GLUT 라이브러리 호출

Simple Sample (cont) glutDisplayFunc(RenderScene); 출력 콜백(callback)함수 설정 창이 그려져야 할 때 지정 함수 호출 (처음 출력시, 창의 크기 변경시 등에 호출)

Simple Sample (cont) 컨텍스트 설정과 프로그램 시작 SetupRC() : OpenGL 초기화 glutMainLoop(); GLUT 프레임웍 실행 프로그램이 종료될 때까지 운영체제에 관련된 메시지, 키입력 등을 처리

Simple Sample (cont) glClearColor(0.0f, 0.0f, 1.0f, 1.0f); 창을 지우기 위한 색상 지정 프로토타입 : void glClearColor(GLclampf 적색, Glclampf 녹색, Glclampf 청색, Glclampf 알파값); 값의 범위 : 0.0 ~ 1.0

Simple Sample (cont) glClear(GL_COLOR_BUFFER_BIT); glFlush(); 버퍼 내용 삭제 가장 최근에 창에 그려진 이미지를 지움 glFlush(); 실행되지 않은 OpenGL 명령 실행 명령 큐의 내용을 모두 실행

도형 그리기

도형 그리기 (cont)

도형 그리기 (cont)

도형 그리기 (cont) 실행 결과

도형 그리기 (cont) glRectf(-25.0f, 25.0f, 25.0f, -25.0f); glColor3f 명령을 통해 색상 설정 후 사용 프로토타입 : void glRectf(Glfloat x1, Glfloat y1, Glfloat x2, Glfloat y2)

도형 그리기 (cont) glutReshapeFunc(ChangeSize); 창의 크기가 변할 때마다 실행 창 크기가 변경될 때마다 좌표를 초기화

도형 그리기 (cont) 뷰포트 설정 : glViewport(GLint x, GLint y, GLsizei 너비, Glsizei 높이) glviewport(0,0,250,250) glviewport(0,0,125,125) --- 125 --- ---------- 250 ---------- ---------- 250 ---------- --- 125 --- ---------- 250 ---------- ---------- 250 ---------- [ 창 크기 == 뷰포트 크기 ] [ 창 크기 > 뷰포트 크기 ]

도형 그리기 (cont) 클리핑 영역 설정 Void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); 직교 좌표계 사용 (glOrtho()) left, right : x축의 최소, 최대값 bottom, top : y축의 최소, 최대값 near, far : z축의 최소, 최대값

도형 그리기 (cont) 클리핑 영역을 조정하여 종횡비가 맞는 사각형 유지

도형 그리기 (cont) glMatrixMode(GL_PROJECTION); glLoadIdentity(); 투영을 위한 행렬 변환 glOrtho() 이전에 호출 glLoadIdentity(); 좌표계 초기화

Polygon Example

Spring Example

Spring Example (cont)

Spring Example (cont)

Spring Example (cont)

Spring Example (cont) [ 초기 실행 화면 ] [ Up Key 눌렀을 때 ] [ Right Key 눌렀을 때 ]

Line Example Spring 예제의 RenderScene() 부분 수정

Line Example (cont) [ 초기 실행 화면 ] [ Up Key 눌렀을 때 ] [ Right Key 눌렀을 때 ]