Translation
courtesy of Fathammer
OpenVG – 그래픽 가속을 위한 표준
OpenVG™ 는 로열티를 지불하지 않아도 되는 기술이며, 크로스 플랫폼 API로써, 플래시나 SVG와 같은 벡터 그래픽 라이브러리를 위해 낮을 레벨의 하드웨어 가속 인터페이스를 제공한다.
OpenVG는 작은 화면에서의 유저 인터페이스와 텍스트들을 위해 높은 화질의 벡터그래픽을 필요로 하는 휴대용 장치를 주 목표로 하고 있다. 동시에 하드웨어 가속은 낮은 전력 소모로도 자연스러운 상호작용까지도 지원하게 된다.
OpenVG 1.0 살펴보기
OpenVG는 하드웨어 가속되는 2차원 벡터와 점방식(raster)
그래픽을 위한 새로운 응용 프로그래밍 인터페이스(API)이다. OpenVG는 장치 개발자가 손목 시계부터 마이크로프로세서 기반의 데스크탑과 서버 장치에 이르기까지 모든 장치에 하드웨어 가속을 지원할 수 있도록 하면서 장치의 복잡한 2D
그래픽 어플리케이션을 위해 독자적이고 벤더-뉴트럴(vendor-neutral)한 인터페이스를 제공한다.
OpenVG 1.0 설명서 (.PDF, 1.5 MB 2005년 7월 업데이트됨.)
OpenVG 1.0 .h 헤더 파일 (text file 2005년 7월 업데이트됨 – 다운로드 하시려면 마우스 오른쪽 버튼을 클릭)
VGU 1.0 .h 헤더 파일 (text file 2005년 7월 업데이트됨 – 다운로드 하시려면 마우스 오른쪽 버튼을 클릭)
EGL 1.2 – 특정 플랫폼 그래픽 인터페이스 설명서 (.PDF, 288 KB 2005년 7월 업데이트됨)
EGL 1.2 .h헤더 파일 (곧 출시)
작은 화면의 장치들에서 가속 벡터 그래픽
API의 효과
OpenVG 요약
- 로열티가 없는 공개된 표준(open standard) API
- 낮은 레벨 2D 벡터 그래픽 렌더링 API
- SVG, 플래시, 벡터 폰트 등을 지원하는 고급 기능 세트.
- 하드웨어 가속 벡터 그래픽을 향한 자연스러운 진화
- 하드웨어 가속 OpenVG 데모 (mpeg)
벡터 그래픽은 오늘날 플래시나
SVG등을 통해 널리 사용되고 있다. 휴대용 장치들은 작은 화면 내에서 고화질의 유저 인터페이스와 쉽게 읽혀질 수 있는 텍스트 등을 제작하기 위해 고화질의 벡터 그래픽이 제공하는 부드럽고 자연스러우며 확장 축소해도 난조가 생기지 않는 2D의 절실한 필요성에 직면해 있다. 현존하는 방법들은 분명한 한계점들을 갖고 있지만, OpenVG는 이러한 한계들을 넘어서고 추가적인 현실적 효과들을 제공한다:
- 적은 전력 소모 - 효율적인 3D 하드웨어 가속기는 소프트웨어 엔진에 비해 최대 90%만큼 전력 소모를 줄여준다.
- 소프트웨어에서 하드웨어로의 자연스러운 이행 - 효율적인 소프트웨어 렌더링에서 하드웨어 가속된 고화질의 2D로 자연스러운 이행을 가능하게 한다.
- 확장성- 벡터 그래픽은 멀티 비트매핑 없이도 다양한 화면 크기로 안티-알리아싱을 포함한 고화질 렌더링을 통해 간편한 확장성을 제공한다.
- 기존의 포맷들을 가속화- 기존 포맷들을 가속하도록 계획되었다(예: 플래시, SVG,PDF,Postscript, 벡터 폰트 등)
- 게임, 화면 보호기, 매핑, 유저 인터페이스- 빠른 확장성을 갖고 있는 안티-알리아스 벡터 그래픽은 고급 유저 인터페이스, 매핑 어플리케이션, 게임, 화면 보호기 등을 가능하게 한다.
- 휴대용 콘텐츠 – 확장 가능한 벡터 그래픽은 장치와 플랫폼으로 쉽게 포트 할 수 있도록 도와준다.
- 로열티가 없는- 로열티가 없는, 멀티 플랫폼의 API는 개발자의 신속한 채택과 컨텐츠 제작을 가능하도록 도와준다.
타겟 어플리케이션
- SVG 뷰어
OpenVG는 SVG Tiny 프로파일 1.2 버전과 순응하는 고성능 SVG 문서 뷰어에 요구되는 드로잉 기능을 제공해야 한다. SVG syntactic 기능과 API 호출간의 1대1 매핑을 제공할 필요는 없지만, 모든 SVG Tiny기능들을 충족시키는 방법을 제공하여야 한다.
- 휴대용 매핑 어플리케이션
OpenVG는 도로 이름이나 표지판의 배치, 크기 설정과 효율적인 뷰포트 컬링과 같은 SVG 뷰어만으로는 힘들거나 불가능한 맵 디스플레이를 위한 동적인 기능들을 제공 할 수 있다.
- 전자책 독자
OpenVG API는 서양, 아시아, 또 다른 스크립트 텍스트들의 빠른 렌더링을 제공해야 한다.
- 게임
OpenVG API는 2D, 3D게임 모두에서 사용되는 스프라이트, 배경, 텍스트들을 정의 내리는데 유용해야 한다. 3D 컨텐츠 위에 2D 오버레이가 가능해야 한다.
- 확장 가능한 유저 인터페이스
OpenVG는 다양한 화면 해상도에서 독특한 외관과 느낌을 동일하게 제공 하기를 바라는 어플리케이션에서 확장 가능한 유저 인터페이스를 렌더하는데 사용될 수 있다.
- 낮은 레벨의 그래픽 장치 인터페이스
OpenVG는 낮은 레벨의 그래픽 장치 인터페이스로 사용될 수 있다. 윈도우 시스템과 같은 다른 그래픽 툴들은 OpenVG 위에 실행 될 수 있다.
OpenVG API 디자인 개념
- 비주얼 곡선과 텍스쳐링을 가속시키는 하드웨어 가속 추상 레이어가 쉽게 실현될 수 있다. 이것은 다양한 어플리케이션 플랫폼에서 가속화된 성능을 가능하게 할 것이다.
- 간결성은 가까운 미래에 가속되지 않을 것으로 예상되는 기능들이 포함되지 않았거나 옵션적인 VGA 유틸리티 라이브러리에 포함 되어있음을 의미한다.
- OpenGL-스타일 구문은 OpenGL 개발자들이 가능하면 쉽게 OpenVG에 대해 배울 수 있도록 돕기 위해 사용 된다.
- 확장성은 새로운 기능을 추가할 필요 없이, 파이프 라인에 새로운 기능을 추가하기 위해 필요한 새로운 상태 변수들을 추가할 수 있게 해준다.
- 핸드폰이나, PDA, 게임 콘솔, DVR, DVD, 자동차 네비게이션 등의 임베디드(Embeded) 장치들에 초점을 맞추십시오.
- 적합성 테스트는 Q405에서 가능할 것으로 예상된다.
OpenVG 특징
핵심 API
- 좌표 시스템과 변형(이미지 드로잉은 3x3 시점 변형 메트릭스를 사용한다.)
- 뷰포트 클리핑, 자르기, 알파 마스킹
- 경로(Paths)
- 이미지
- 이미지 필터
- 페인트(변화도와 패턴)
- 혼합(Blending)
VGU 유틸리티 라이브러리
- 높은 레벨의 기하학적 프리미티브
- 이미지 변형(Image Warping)
OpenVG 렌더링 파이프라인
기본 사항들이 렌더링 되는 OpenVG의 파이프라인 메커니즘. 이상적인 파이프라인 단계에 맞추기 위하여 구현화 될 필요는 없다. 적합성 테스트 과정에 정의된 허용 범위 내에서 최종 결과가 이상적 파이프라인의 결과와 일치할 수 있다면 렌더링에 다른 방식으로 접근 할 수도 있다.
- 1 단계: 경로, 변형, 스트로크, 페인트
- 2 단계: 스트로크된 경로 생성
- 3 단계: 변형
- 4 단계: 래스터라이제이션(Rasterization)
- 5 단계: 클리핑과 마스킹(Clipping and Masking)
- 6 단계: 페인트 생성
- 7 단계: 이미지 보간(Image Interpolation)
- 8 단계: 블랜딩과 안티알리아싱(Blending and Antialiasing)