버퍼 (Buffer).

Slides:



Advertisements
Similar presentations
- C-style formatting - format() method.  file = open(‘file.txt’, [mode]) ◦ Mode  ‘r’: for reading (default)  ‘w’: for writing (truncate if already.
Advertisements

Company 사용자 인터페이스와 멀티미디어 2006 년 1 학기 컴퓨터의 개념 및 실습 Ver. 1.1.
LG 그룹 밴치마킹. 1.LG 그룹 사이트의 장점  장점  LG 사이트에 접속 속도가 빠르며 용이 하다  LG 사이트에 접속한 BGM 을 예술로 승화시켜서 유저들에게 편안감 전달  가장 큰 장점으로는 시각장애인을 위한 사이트가 따로 배제  메뉴바 형식은 부분.
한국산업기술대학교 온라인 기술교육 교재 개발 차세대 모바일 디지털 컨텐츠 15. WML 개발 - I 이번 시간에는... 지난 시간에는 WAP 의 WTA 프로토콜의 기능과 구성, 서비스 예에 대해서 학습하고, WAP 보안을 위한 WTLS 와 WAP 애플리케이션 레이어 보안,
VIT AMI N D D e s i g n S t y l e g u i d e DE SIg N S T YLE G UI D E.
Web Project 작업3: Design기획 Article 토론 Group Project 토론
사용자 인터페이스와 멀티미디어 2006년 2학기 컴퓨터의 개념 및 실습.
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷 MFC 응용 프로그램 마법사를 이용한 MFC 프로젝트 작성
정지성 Chung-buk National University, Korea
Implement of Input and Interaction
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
OpenGL 실습 1주차.
3.1 그래픽스/영상 데이터 형 3.2 널리 사용되는 파일 형태
OpenGL 시작하기.
HTML과 CGI 프로그래밍 PHP 웹 프로그래밍 (PHP Web Programming) 문양세
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
3장 이미지와 그래픽 3.1 이미지와 그래픽의 기본 개념 3.2 입출력장치 3.3 이미지의 처리와 압축
7장 디스플레이 리스트.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
02장 ㅎㅎ 디지털 영상 빛과 색, 시각 컬러 모델 디지털 영상의 생성 디지털 영상의 종류 한빛미디어(주)
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용 4장 – 기하학적 객체와 변환
Chap 4. MPEG-2 부호기 전체 구조와 알고리즘
Linux System Programming
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
OpenGL Programming (II) 3D Graphics Fundamentals
Multimedia Programming 05: Point Processing
Red Color Detection Course ChanYoung Kim
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
HW#1 Source 파일 제출 3.20(수)까지 제출 학번_이름_01.c
S3c6410을 이용한 리눅스 비디오 드라이버 포팅 가이드 – - Linux Video Driver Porting Guide Using s3c6410 – 박영만
특수조명 Program Manual M.D.I Solution
학습목표 2장. 컴퓨터 하드웨어 그래픽 출력장치의 일반적인 작동원리를 이해한다.
Sang Il Park Sejong University
그래픽스 시스템과 모델.
Red Color Detection Course ChanYoung Kim
Chapter 1 디지털 영상처리의 개념.
무선인터넷용 애니메이션 서비스 구축 사례.
HTML5 웹 프로그래밍 입문 (개정판) 5장. 고급 표현을 위한 CSS3 활용.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
표준 출력 함수 printf 출력 데이터 서식화(formatting) 표준 입력 함수 scanf 입력 데이터 서식화
처음으로 배우는 C 프로그래밍 제5부 추가적인 화제들 제 11 장 파일 처리.
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
14주차.
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
Dongchul Kim / / OpenCV Tutorials Course Dongchul Kim / /
노출영역 노출영역의 해당 배너들 클릭 시 실제 기획전 페이지로 이동됩니다..
제 3 장 영역 기반 처리.
5장. 오픈지엘 기본틀 학습목표 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
OpenGL Project 조민정 장선례.
1. Log in WCMS에서 사용하는 ID와 PW를 동일하게 사용.
제 11 장 전처리기.
헤더 파싱 ( Header Parsing ).
▶ GTQ - Photoshop 어플리케이션 바 메뉴 표시줄 옵션바 4. 툴 패널 5. 총 30개의 패널
Computer Graphics OpenGL 설치 및 설정
과목명 : 모바일 통신실무 학과명 : 마케팅 미디어과 지도교사 : 진선미
Draw the basic Geometry Objects
인터페이스 살펴보기(1/2) 기본 작업환경의 명칭 Adobe Photoshop CS3 메뉴바 도구막대 WorkSpace
Red Color Detection Course ChanYoung Kim
Chapter 4 컬러( COLOR ).
컴퓨터 비젼 실습 Hanyang University
캐리어 결합 보스턴 폴딩백 여행 후 늘어난 짐 때문에 난처할 때 있으셨죠? 바로 그때, 폴딩백을 꺼낼 타이밍!!
DirectX 9을 이용한 게임 개발 기본 코스 강의 내용 : blending.
>> Ⅲ. Web Design Tool 및 특성
Video For Windows 멀티미디어 공학 이 정 우.
박성진 컴퓨터 프로그래밍 기초 [04] 연산자 박성진
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
논리회로 설계 및 실험 9주차.
개정판 누구나 즐기는 C언어 콘서트 제12장 파일 입출력 출처: pixabay.
MARK•Vu.
Presentation transcript:

버퍼 (Buffer)

목표 OpenGL 기타 버퍼 소개 버퍼 읽기와 쓰기 블렌딩 이용

버퍼 (Buffer) 버퍼는 공간 해상도 (n x m) 와 깊이(정밀도) k, 픽셀당 비트수 bits/pixel 로 정의한다

OpenGL 프레임버퍼 (Frame Buffer)

OpenGL 버퍼 컬러 버퍼는 다음에 의해 디스플레이된다. 깊이(Depth) 누적(Accumulation) Front Back Auxiliary Overlay 깊이(Depth) 누적(Accumulation) 고해상도 버퍼 스텐실(Stencil) 마스크 보관

버퍼에 쓰기 개념적으로 모든 메모리는 2차원 픽셀 배열 사각형 픽셀 블록을 읽고 쓰기 프레임버퍼는 메모리의 일부 memory Bit block transfer (bitblt) operations 프레임버퍼는 메모리의 일부 memory source frame buffer (destination) 프레임버퍼에 쓰기

쓰기 모델 소스를 쓰기 전에 목적 픽셀을 읽는다

비트(Bit) 쓰기 모드 소스와 목적 비트들은 비트별로 결합된다. 16 개 가능한 함수 (표에서 열당 하나) XOR replace OR

XOR 모드 3장에서 XOR 을 이용한 논리 연산을 참고한다 S 가 스크린이고 M 이 메뉴라고 하면 S  S  M M  S  M swaps the S and M

픽셀 파이프라인 (The Pixel Pipeline) OpenGL 은 픽셀을 위한 별도의 파이프라인을 가진다 픽셀 쓰기는 다음을 포함 픽셀을 프로세서 메모리에서 프레임버퍼로 이동 포맷 변환 매핑, 룩업(Lookups), 테스트 픽셀 읽기 Format conversion

래스터 위치 (Raster Position) OpenGL 은 래스터 위치를 상태 일부로 유지한다. Set by glRasterPos*() glRasterPos3f(x, y, z); 래스터 위치는 기하 요소이다. 기하 파이프라인을 거친다 결국은 스크린 좌표상의 2차원 위치를 갖는다 프레임버퍼 내에서 이 위치가 다음 래스터 프리미티브가 그려지는 곳이다.

버퍼 선택 (Buffer Selection) OpenGL 은 어떤 컬러 버퍼에도 읽기와 쓰기가 가능하다 (front, back, auxiliary) 디폴트는 후면 버퍼 glDrawBuffer 와 glReadBuffer 에 의해 변화한다 프레임버터내 픽셀 포맷은 프로세서 메모리에서 포맷과 다르며 이 두 타입은 다른 곳에 존재한다. 패킹과 언패킹 필요 (packing and unpacking) 읽기와 쓰기는 느려짐

비트맵(Bitmaps) OpenGL 은 1-bit pixels (bitmaps)과 multi-bit pixels (pixelmaps) 을 다르게 처리 비트맵은 프레임버퍼 내 해당 픽셀을 현재 래스터 컬러로 그릴지를 결정하는 마스크이다. 0  color unchanged 1  color changed based on writing mode 비트맵은 래스터 텍스트에 유용하다. GLUT font: GLUT_BIT_MAP_8_BY_13

래스터 컬러 (Raster Color) 마지막 glRasterPos*()에 고정된다 기하는 파랑색으로 그려짐 glColor*()로 설정되는 컬러와 동일하다 마지막 glRasterPos*()에 고정된다 기하는 파랑색으로 그려짐 비트맵 1은 빨강색을 사용한다 glColor3f(1.0, 0.0, 0.0); glRasterPos3f(x, y, z); glColor3f(0.0, 0.0, 1.0); glBitmap(……. glBegin(GL_LINES); glVertex3f(…..)

비트맵 그리기 offset from raster position 비트맵 그린 후 래스터 위치 증가 첫 번째 래스터 위치 glBitmap(width, height, x0, y0, xi, yi, bitmap) offset from raster position 비트맵 그린 후 래스터 위치 증가 첫 번째 래스터 위치 두 번째 래스터 위치

예제: Checker Board GLubyte wb[2] = {0 x 00, 0 x ff}; GLubyte check[512]; int i, j; for(i=0; i<64; i++) for (j=0; j<64, j++) check[i*8+j] = wb[(i/8+j)%2]; glBitmap( 64, 64, 0.0, 0.0, 0.0, 0.0, check);

픽셀 맵 (Pixel Maps) OpenGL 은 픽셀 맵 혹은 픽셀 이미지라고 부르는 사각형 픽셀 배열 이용 픽셀은 1 바이트(8 비트) 덩어리 밝기(gray scale) 이미지는 1 byte/pixel RGB는 3 bytes/pixel 세 종류 함수 Draw pixels: 프로세서 메모리에서 프레임버퍼로 Read pixels: 버퍼로부터 프로세서 메모리로 Copy pixels: 프레임버퍼에서 프레임버퍼로

OpenGL 픽셀 함수 size type of pixels start pixel in frame buffer glReadPixels(x,y,width,height,format,type,myimage) size type of pixels start pixel in frame buffer type of image pointer to processor memory GLubyte myimage[512][512][3]; glReadPixels(0,0, 512, 512, GL_RGB, GL_UNSIGNED_BYTE, myimage); glDrawPixels(width,height,format,type,myimage) 래스터 위치에서 시작한다

이미지 포맷 (Image Formats) 표준 이미지 포맷으로 작업하나 (JPEG, TIFF, GIF) OpenGL 에서 이러한 이미지를 어떻게 읽기/쓰기 하나? OpenGL 에서 지원 안함 OpenGL 은 이미지 포맷에 대해선 모른다 웹에서 일부 코드 제공하기도 OpenGL 에서는 간단한 포맷의 읽기 쓰기가 가능하다

PPM 이미지 디스플레이 PPM 은 아주 간단한 포맷 각 이미지 파일은 헤더와 모든 픽셀 데이터로 구성됨 헤더(Header) # comment 1 # comment 2 . #comment n rows columns maxvalue pixels

헤더 (Header) 읽기 check for “P3” in first line FILE *fd; int k, nm; char c; int i; char b[100]; float s; int red, green, blue; printf("enter file name\n"); scanf("%s", b); fd = fopen(b, "r"); fscanf(fd,"%[^\n] ",b); if(b[0]!='P'|| b[1] != '3'){ printf("%s is not a PPM file!\n", b); exit(0); } printf("%s is a PPM file\n",b); check for “P3” in first line

헤더 읽기 (계속) skip over comments by looking for # in first column fscanf(fd, "%c",&c); while(c == '#') { fscanf(fd, "%[^\n] ", b); printf("%s\n",b); } ungetc(c,fd); skip over comments by looking for # in first column

데이터 읽기 scale factor fscanf(fd, "%d %d %d", &n, &m, &k); printf("%d rows %d columns max value= %d\n",n,m,k); nm = n*m; image=malloc(3*sizeof(GLuint)*nm); s=255./k; for(i=0;i<nm;i++) { fscanf(fd,"%d %d %d",&red, &green, &blue ); image[3*nm-3*i-3]=red; image[3*nm-3*i-2]=green; image[3*nm-3*i-1]=blue; } scale factor

이미지 데이터 크기변환 파이프라인에서 이미지 크기 변환이 가능하다 glPixelTransferf(GL_RED_SCALE, s); glPixelTransferf(GL_GREEN_SCALE, s); glPixelTransferf(GL_BLUE_SCALE, s); 프로세서에 따라 프로세서 메모리에서 프레임버퍼로 갈 때 바이트들을 교환(Swap) 할 수 있다 glPixelStorei(GL_UNPACK_SWAP_BYTES,GL_TRUE);

디스플레이 콜백 (display callback) void display() { glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(0,0); glDrawPixels(n,m,GL_RGB, GL_UNSIGNED_INT, image); glFlush(); }