OpenGL (Open Graphics Library)
- 그래픽 하드웨어 (GPU) 와 통신 을 지원해주는 API 또는 표준 규격 (이름과 다르게 Library 가 아니라 API 임). 그래픽 하드웨어 제어를 위한 소프트웨어 인터페이스. 운영체제는 OpenGL 의 인터페이스를 제공하고, GPU 는 OpenGL Implemetation 인 그래픽 카드 드라이버를 제공.
- 1982 년 실리콘 그래픽스 (SGI) 가 Unix 용으로 개발한 그래픽 라이브러리인 IRIS GL 이 시초이며, 최초 2D 용으로 개발되었다가 3D 로 업그레이드. 범용성을 위해서 1992 년 개방형 라이브러리로 다시 만든 것이 OpenGL
- MS 가 고유 3D API 인 DirectX 를 발표하면서 OpenGL 이 밀렸다가, 존 카멕이 둠,퀘이크를 OpenGL 로 작성하면서 급부상하여, 현재 3D API 시장은 DirectX 와 OpenGL 이 양분하여, 대부분 그래픽 카드들이 두 드라이버를 모두 제공.현재는 속도는 DirectX 가 약산 우세하나, DirectX 는 윈도우즈 환경만 동작. OpenGL 은 국제 표준이며 더 다양한 플랫폼을 지원. (WebGL 표준으로 채택 됨)
- GPU 를 이용한 하드웨어 가속화를 통해 렌더링을 해서 2D, 3D 벡터 그래픽을 표현
- 하드웨어 가속 : 어떤 작업을 CPU 가 처리하는게 아닌, 해당 작업에 최적화된 다른 하드웨어 (ex: 그래픽 카드, 사운드 카드) 에 작업을 전송해서, 해당 하드웨어가 CPU 보다 더 빠르게 고품질 작업을 처리하는 것
- 장점 : Cross Platform (Window, Linux, IOS, Andoroid, Mac OS), Language Independent (C, Python, Java, Javascript)
*GPU 하드웨어 가속이 항상 성능을 올려주는 것은 아님.
*오프로딩(offloading) : 로컬 컴퓨터에서 수행하는 App 일부를, 처리 능력이 더 좋은 다른 컴퓨터에 전달하여 처리 후 결과 반환 받는 방식
*컴퓨터 뿐만 아니라 스마트폰도 OpenGL 을 지원. Android - OpenGL ES (Embedded System)
WebGL : OpenGL 을 웹에서 사용 할 수 있도록 한 것.
- Image formation : Object, Viewer, Light source, Attributes (materials) (빛 반사 정도, 표면의 거침 등)
- Graphics Pipeline (Vertex -> Pixel 변환 과정)
- Vertex processor : 좌표 체계를 변환. 3D 객체를 2D 형태인 모니터 화면에 띄우기 위해 좌표를 변환. 모든 변환은 행렬 연산으로 이루어 짐.
- Primitive assembler and clipper : Vertex processor 를 통과한 좌표 정보를 바탕으로 Line, Polygon, Curve, Surface 등을 어떻게 표현 할 지 결정하고, 이러한 정보를 바탕으로 vertex 를 수집. Clipper 는 Viewer 가 보이는 부분은 유지하고 보이지 않는 부분을 버리는 작업.
- Rasterizer : 제거되지 않은 점들에게 color 와 depth 정보를 부여.
- Fragment processor : 최종적으로 보여지는 객체에 대한 정보를 구현. 각 Pixel 에 대해 종합적인 정보 및 표면의 Normal vertor 등을 계산하여 최종적으로 결정 (ex: 물체 파란색, 조명이 빨간색이면 보라색으로 계산)
glxinfo : 리눅스 OpenGL 버전 확인 명령어
https://gofo-coding.tistory.com/category/Computer%20Science/Computer%20Graphics?page=1
'Computer science (이동 완료) > 그래픽스' 카테고리의 다른 글
OpenGL vs DirectX (0) | 2023.05.26 |
---|---|
OpenGL 소프트웨어 스택 (DRM,Mesa) (1) | 2023.05.26 |
libGL 이란 (0) | 2023.05.26 |
Mesh, OBJ File (0) | 2023.05.26 |