|
Language Translation courtesy of SKTelecom
OpenGL ES – 내장형 3D 그래픽 가속의 표준 OpenGL??ES는 로열티없이 자동차와 각종 설비 및 휴대 장치를 포함하는 임베디드 시스템 상의 2D/3D 기능을 위한 크로스 플랫폼(cross-platform) API입니다. 이는 PC 환경의 3D 표준인 OpenGL의 부분집합으로, 소프트웨어와 그래픽 가속칩 간의 유연하면서도 강력한 저수준의 인터페이스를 제공합니다. OpenGL ES 은 일반 윈도우 시스템에 대해서 이식을 쉽게 하기 위하여 부동 소수점 및 고정 소수점 시스템을 지원할 수 있도록 EGL™스펙을 위한 일반(Common) 및 일반-경량 (Common-Lite) 프로파일을 포함하고 있습니다. OpenGL ES 1.0이 소프트웨어만의 실행을 가능하게 하는데 중점을 두고 있다면 OpenGL ES1.1에서는 API의 하드웨어 가속화를 지원할 수 있도록 확장하였습니다. OpenGL ES 1.1은 1.0과 함께 호환이 가능하여 API의 2가지 버전 간의 어플리케이션 포팅이 용이하도록 설계되어 있습니다.
OpenGL ES 스펙 다운로드
lOpenGL ES에 대하여 l OpenGL ES 프레임워크 l 그래픽 파이프라인 lOpenGL ES1.1의 새로운 점
OpenGL ES에 대하여: OpenGL의 부분집합으로 로열티 없는 2D/3D API OpenGL??ES는 OpenGL의 부분집합으로 구성된 프로파일이며 사용하는 고급 임베디드 그래픽을 위한 저수준 경량의 API입니다. 이는 소프트웨어 어플리케이션과 하드웨어 또는 소프트웨어 그래픽 엔진 간의 저수준의 어플리케이션 프로그래밍 인터페이스(API)를 제공해 줍니다. 임베디드 시스템을 위한 표준 3D 그래픽 API는 모든 주요 모바일(mobile) 및 임베디드 플랫폼 환경에서 3D 게임과 다양한 고급 3D 그래픽 기능을 제공하는데 기여하고 있습니다. OpenGL ES (임베디드 시스템을 위한 OpenGL)는 OpenGL을 기반으로 하고 있으므로 특별히 새로운 기술은 필요하지 않습니다. 따라서, OpenGL을 이용할 수 있는 개발자라면 쉽게 OpenGL ES도 이용할 수 있도록 구성되어 있으므로 시너지 효과를 기대할 수 있습니다.
개발자가 취할 수 있는 이점 l 산업 표준 및 로열티 프리(Royalty Free) 누구나 OpenGL ES 스펙을 다운로드 받아 실행하고 이를 기반으로 제품을 탑재할 수 있습니다. 광범위한 업계 지원과 함께 OpenGL ES는 진정으로 유일한 공개적인 업체 중립적(vendor-neutral)이고, 멀티 플랫폼(multi-platform)을 지원하는 임베디드 그래픽 표준 입니다. 표준화 되어 있는 함수들을 기반으로 개발자로 하여금 컨텐츠 자체에 더욱 집중하게 만들며, 컨텐츠와 관련이 없는 부분의 코드와 플랫폼 세부사항으로부터 특별히 신경 쓸 필요 없도록 해줍니다. l 적은 메모리 요구량과 저전력 소비 64MB RAM의 400Mhz PDA부터 1MB RAM의 50Mhz 휴대 전화에 이르기까지 임베디드 장치들을 지원합니다. OpenGL ES는 최소화된 명령/데이터 트래픽과 최소 데이터 저장 요구조건과 함께 최소 메모리만을 필요로 함으로써 이러한 차이를 고려할 수 있도록 설계되었으며 정수와 부동소수점 모두 지원합니다. 이는 사용자에게 단말 상에서의 더 적은 저장공간을 이용할 수 있도록 다운로드를 위한 더 작은 바이너리를 생성하게 해줍니다. l 소프트웨어로부터 하드웨어 렌더링(rendering)으로 이전이 용이 OpenGL ES 스펙이 특정 그래픽 프로세싱 파이프라인(pipeline: 경로)을 기반으로 정의되어 있지만, 개별 함수들의 실행이 전용 하드웨어 상에서 실행(시스템 CPU 상에서 소프트웨어 루틴으로서 실행) 되거나 전용 하드웨어와 소프트웨어 루틴을 함께 사용하여 구현될 수 있습니다. 이는 소프트웨어 개발자가 최신의 디바이스에서 OpenGL ES 하드웨어 가속 기능을 이용하여 쉽게 포팅 가능하도록 해주는 것으로 하드웨어 가속 환경을 쉽게 대비할 수 있도록 설계되어 있다는 것입니다. l 확장성 및 발전 가능성 OpenGL ES는 OpenGL의 확장 메커니즘 API를 통하여 새로운 하드웨어를 쉽게 액세스 가능하게 하고 환경에 맞도록 OpenGL ES API를 업테이트가능하게 합니다. 그리고 확장성은 OpenGL ES 의 중요한 기능으로서 이러한 기능(구조)이 OpenGL ES를 새로운 환경에서 진화할 수 있도록 합니다. l 용이한 사용성 OpenGL을 기반으로 만들어진 OpenGL ES는 논리적인 명령과 직관적인 설계로 잘 구조화되어 있습니다. l 풍부한 문서자료들 OpenGL ES는 OpenGL을 기반으로 하고 있어 많은 관련서적이 있으며 관련 샘플 코드를 쉽게 구할 수 있고 또한 OpenGL ES에 대한 정보는 저렴해서 구하기 쉽습니다. OpenGL ES의 지시에 따라 개발자는 이제 휴대폰에서 슈퍼 컴퓨터까지 기본적으로 동일 코드를 쓸 수 있게 되었습니다.
OpenGL ES 프레임 워크 l 프로파일: OpenGL ES 스펙은 몇 가지 프로파일로 정의되어 있습니다. 각 프로파일은 OpenGL 1.5 스펙 및 추가 OpenGL ES만을 위한 확장된 부분으로 구성됩니다. OpenGL ES 프로파일은 OpenGL을 기반으로 하여 만들어진 어플리케이션 프로그래밍 인터페이스의 여러 가지 스펙 중의 하나입니다. 그러므로, 프로파일은 유사 프로세싱 파이프라인, 명령구조, 동일 OpenGL 명 공간 등을 공유합니다. 새롭게 추가되는 확장은 기존 OpenGL 1.5가 지원하는 기능을 기반으로 만들어 집니다. 일부 OpenGL ES 확장은 OpenGL 스펙과 관련된 OpenGL ARB 확장으로 구성되고 OpenGL ES 프로파일 에서의 역할을 수행합니다. 일부 OpenGL ES 확장은 미래핵심 프로파일을 업데이트하는데 사용되거나 또는 중요하지만 비주류 기능의 정형화에 포함되도록 정해진 기능의 선구자적 역할을 합니다. 각 프로파일의 정의는 명확히 구분되는 헤더(header) 파일과 프로파일 내에서 명령과 토큰(token)을 정의하는 링크/런타임 라이브러리를 함축적으로 의미하고 있습니다. 단일한 통합 헤더 관리/정비를 단순화하는 것은 프로토타입(원형) 명령과 토큰의 가시성 제어에 대한 지향적 및 적절한 조건적 선처리기 명령으로 정의될 수 있습니다. 런타임 어플리케이션은 특정 단말에 어떤 프로파일이 설치되어 있는지를 OpenGL 버전 문자열 조회를 통하여 알아낼 수 있습니다. 현행 스펙은 총 2개의 프로파일로 정의되어 있습니다: 일반 프로파일(Common Profile), 안전 우선 프로파일(Safety Critical Profile)
○ 일반 프로파일(Common Profile)이 의도하는 바는 일반 소비자의 엔터테인먼트와 전화 핸드 세트, PDA, 셋톱 박스(set-top box), 게임 콘솔 등과 같은 관련 디바이스/장치 입니다. 성능 다양화와 함께 플랫폼 지원을 포함하는 시장의 범위 어드레스를 지정합니다. ■텍스쳐 맵핑(texture-mapping)을 포함하는 최소 기능의 풀 3D 기능 지원 ■탁월한 게임 플랫폼 ■핸드폰에서 구현 가능 ○ 안전우선 프로파일(Safety Critical Profile)이 의도하는 바는 신뢰성과 보증가능성이 주요 제약사항인 산업 응용과 일반 소비자를 대상으로 합니다. ■안전 보증을 쉽게 하기 위한 완전 최소화 3D ■비행기 등 항공산업 및 자동화 디스플레이에 사용됨 l 적합 표준 규격은 일년 주기로 재검토 및 개정 됩니다. OpenGL ES의 순조로운 실행으로서 실행사항을 구분하기 위해서는 적합성 테스트를 반드시 통과하여야만 합니다. 적합성 테스트는 OpenGL ES 기록과 별도로서 관리/정비됩니다. l 확장: OpenGL ES 실행은 그 실행에 새로운 특징을 더하는 확장을 포함할 수도 있습니다. OpenGL ES 프로파일은 OpenGL을 기반으로 다음의 2가지 부분으로 나누어져 있습니다. 첫째, OpenGL 파이프라인의 일반적인 부분, 둘째, OpenGL이 제공하는 기능을 지향하지만 OpenGL과는 달리 OpenGL ES에서만 사용하는 확장 부분으로 구성됩니다. 각각의 확장은 프로파일의 명령 서브세트(subset: 부분집합)와 프로파일 확장 또는 핵심적인 추가사항으로서 프로파일에 추가되는 부분을 서로 맞추기 위하여 간결화되었습니다. 핵심 추가사항은 프로파일 확장과 달리 명령과 토큰(token)이 확장 서픽스(suffix: 후위, 첨자)를 그 이름 그대로 포함하지 않습니다. 프로파일 확장은 또한 필수 및 선택 확장으로 구분됩니다. 선택 확장의 실행이 실행자의 재량으로 남겨지는 반면에 필수 확장은 반드시 구현되어 있어야 합니다. l 플랫폼 인터페이스 레이어 – EGL: OpenGL ES는 또한 EGL이라 불리는 공통 플랫폼 호환성 인터페이스 규격을 포함하고 있습니다. 이것은 플랫폼 독립적이며 선택적으로 개발사의 OpenGL ES 제품 배포에 포함될 수 있습니다. 플랫폼 결합은 구현 환경과 OpenGL ES를 연결하는 역할을 하는 것으로, EGL과 결합된 적합성 테스트를 통하여 확인될 수 있습니다. 만약 EGL을 지원하지 않을 경우 개발사는 자신만의 플랫폼에 맞는 내장 인터페이스를 정의하여 사용할 수 있습니다.
OpenGL ES 1.0 일반 프로파일(Common Pipeline) OpenGL ES는 OpenGL에서 충분히 검증된 규격을 바탕으로 소프트웨어와 하드웨어 간의 간단한 저수준 API입니다.
OpenGL 1.3 파이프라인을 기반으로 하여 OpenGL ES 1.0 파이프라인은 다음과 같이 동작합니다: l 기하 처리 (Geometry Processing) ○ 정점 배열(Vertex Arrays) ○ 점, 선, 삼각형 (Points, Lines, Triangles) ○ 행렬 스택(Matrix Stack) ○ Viewport, DepthRange ○ Vertex Lighting ○ 쉐이딩 모델 l 래스터(Rasterization: 점방식) ○ 멀티 샘플링(Multisampling)-선택사양 ○ 포인트(Points) 및 anti-aliased points) ○ 라인(Lines) 및 반 별칭 라인(anti-aliased lines) ○ 폴리곤(Polygons) ○ 페이스 컬링(Face Culling) ○ 폴리곤 오프셋(Polygon Offset) – fill mode l 텍스처 맵핑(Texture Mapping) ○ 2D 텍스쳐 ○ Wrap repeat, edge_clamp ○ 압축 Texture ○ 멀티 텍스쳐(Multitexture) ○ RGBA 픽셀, 팩 픽셀 포맷(packed pixel formats), L, LA ○ 모든 필터(Filters) l 단편화 프로세싱(Fragment Processing) ○ 포그(Fog) ○ 시저 테스트(Scissor Test) ○ 알파 테스트(Alpha Test) ○ 스텐실 테스트(Stencil Test) – 선택사양 ○ 깊이 테스트(Depth Test) – 선택사양 ○ 블렌딩(Blending) ○ 로직(Logic) Op ○ 혼합(Dither) l 프레임 버퍼 운용/기타 ○ 화면 초기화 (Clear) ○ 리드픽셀(Read Pixels)/알파 테스트(Alpha Test)/혼합(Dither) ○ 플러쉬(Flush)/종결(Finish) ○ 힌트(Hint) ○ 정적인 스테이트 얻기 (상수)
OpenGL ES 1.1의 새로운 내용 OpenGL ES1.1은 API의 하드웨어 가속화에 초점이 맞춰져 있습니다. 그러나 1.0과 완전한 호환이 가능합니다. OpenGL ES1.1의 새로운 특징은 강화된 기능, 향상된 이미지 품질, 성능증대이며, 최적화된 기능과 소비 전력을 줄이기 위한 메모리 대역폭 감소 기능을 포함합니다:
l 레퍼런스(reference)로서의 OpenGL 1.5 – OpenGL ES 규격은 OpenGL 1.5 규격하에서 관련하여 정의됩니다. l 버퍼 오브젝트는 클라이언트가 메모리의 할당/초기화/렌더링 등을 위한 메커니즘을 제공하는 것입니다. 버퍼 오브젝트는 다양한 인덱스 데이터 및 버텍스 배열을 저장하는데 사용할 수 있습니다. l 자동 밉맵 생성(Auto mipmap generation)은 애플리케이션 밉(mip) 레벨을 생성하지 않더라도 엔진 수준에서 밉맵을 생성하는 기능입니다. 하드웨어 가속을 통해서 자동 밉맵 레벨 생성을 수행할 수 있고 특히 비디오 텍스처 또는 텍스처로 렌더링할 경우 적합합니다. 밉맵 배열이 동일 타입으로 명시되지 않으며 OpenGL ES에서 하나의 텍스처는 불완전한 것으로 고려됩니다. 주어진 텍스처가 버텍스 배열을 렌더링하기 위해 사용될 때 완전/불완전에 대한 체크가 이루어집니다. l 강화된 텍스처 프로세싱은 범프맵핑(bump-mapping) 및 픽셀 라이팅 같은 효과를 위한 텍스처 결합 기능과 최소 2개 이상의 멀티 텍스처를 포함하고 있습니다. 텍스처 크로스바(crossbar)를 제외한 모든 OpenGL1.5 텍스처 환경이 지원됩니다. l oes_matrix_palette 확장을 사용한 버텍스 스킨 기능은 복잡한 형상과 기하학 도형의 애니메이션을 부드럽게 해줍니다. 확장은 OpenGL ES로 하여금 매트릭스 팔레트를 지원하도록 해주며 매트릭스 팔레트는 버텍스 변환에 사용될 수 있는 매트릭스 세트를 정의합니다. 매트릭스 팔레트는 모델 뷰 매트릭스 스택(model view matrix stack)에 포함되어 있지 않고, 독립적입니다. l 사용자 정의 클립 플레인(clip planes)은 보이지 않는 폴리곤(polygons)에 대한 효과적 초기 발췌를 가능하게 하여 성능향상 및 전력소모 절감의 결과를 가져옵니다. l 강화 포인트 스프라이트 및 포인트 스프라이트 배열은 어플리케이션에 대한 방식/방법을 제공함으로써 쿼드 대신 포인트를 사용하여 입자를 그릴 수 있도록 해줍니다. 이는 효율적이고 실질적인 입자 효과를 가능하게 합니다. 포인트 스프라이트 확장 또한 app로 하여금 기존의 GL 포인트에 의해 사용된 동일 텍스처 조합 대신에 포인트에 걸쳐 새로 삽입된 텍스처 조합을 구체화하도록 해줍니다. 포인트 사이즈 어레이(Point Size Array: 포인트 크기의 배열) 확장은 고정 입력 포인트 사이즈 외의 포인트 사이즈를 가능하게 하고 어플리케이션에 유연성을 더함으로써 입자효과를 가져올 수 있게 합니다. l 다이내믹하면서 일정한 스테이트 질의 (state query)는 프로파일 상에서 명백히 지원된 일정하고 동적인 상태를 위해 지원됩니다. 지원된 GL 상태 질의는 단순 질의/열거형 질의/텍스처 질의/포인터 및 문자열 질의/버퍼 오프젝트 질의 등으로 분류될 수 있습니다. 이는 OpenGL ES로 하여금 정교하고 세련된 계층형 소프트웨어 환경에서 사용될 수 있도록 해줍니다. l 그림 텍스처(Draw texture)는 1개 또는 그 이상의 텍스처로부터 스크린의 직사각 영역까지 이미지 픽셀(pixel)을 그리는 기능을 제공합니다. 이러한 성능은 게임에서의 2D 프레임 기본구성과 비트맵 폰트 글립(glyph) 및 배경 채색의 가속에 유용합니다. l 일반 (Common) 및 경량 (Common Lite) 프로파일에 대한 새로운 핵심 추가사항 및 프로파일 확장은 핵심 추가사항으로서 OES 바이트 좌표/OES 고정 소수점/OES 단일 정밀도/OES 매트릭스 ES-특별 확장 등을 더하고 필수 프로파일 확장으로서 OES-읽기 포맷/OES 압축 팔래트 텍스처/OES 포인트 크기 배열 및 OES 포인트 스프라이트 등을 추가하였으며 선택 프로파일 확장으로서 OES 매트릭스 팔래트와 OES 그림 텍스처를 추가해 줍니다.
|
첫댓글 헐..아는척을 해야하는건지.....읽다가...어찔거리단 소릴해야되는건지..;;