+)기록/과제

정리사항 73 - OpenGL(그래픽 처리를 위한 크로스 플랫폼 API)

AppJinny 2023. 6. 21. 15:18

*OpenGL

OpenGL은 그래픽 처리를 위한 크로스 플랫폼 API(응용 프로그래밍 인터페이스)로, 컴퓨터 그래픽스를 생성, 제어 및 렌더링하는 데 사용됩니다. 다음은 OpenGL을 사용하는 이유에 대한 몇 가지 주요 이유입니다:

-플랫폼 독립성: OpenGL은 여러 운영 체제와 플랫폼에서 사용할 수 있는 표준 그래픽스 API입니다. 따라서 동일한 OpenGL 코드를 사용하여 Windows, macOS, Linux 및 모바일 플랫폼과 같은 다양한 플랫폼에서 그래픽 애플리케이션을 개발할 수 있습니다.

-하드웨어 가속: OpenGL은 하드웨어 가속을 지원하여 그래픽 작업을 빠르게 처리할 수 있습니다. 그래픽 카드와 같은 특정 하드웨어 리소스를 사용하여 렌더링 작업을 수행하므로 더 빠르고 효율적인 그래픽 처리가 가능합니다.

-2D 및 3D 그래픽 지원: OpenGL은 2D 및 3D 그래픽을 모두 지원합니다. 2D 그래픽을 그리기 위해 2D 삼각형, 직사각형 등을 사용하고, 3D 그래픽을 그리기 위해 3D 모델, 조명, 재질 등을 사용할 수 있습니다. 이는 게임, 시뮬레이션, 가상현실 등 다양한 그래픽 애플리케이션을 개발하는 데 유용합니다.

-다양한 그래픽 기능 지원: OpenGL은 다양한 그래픽 기능을 지원합니다. 이에는 텍스처 매핑, 쉐이딩, 알파 블렌딩, 스텐실 버퍼, 프레임 버퍼 객체 등이 포함됩니다. 이러한 기능은 더 복잡하고 현실적인 그래픽 효과를 구현할 수 있도록 도와줍니다.

-넓은 커뮤니티 및 리소스: OpenGL은 오랜 역사와 넓은 커뮤니티를 가지고 있습니다. 이는 OpenGL을 사용하는 개발자들이 서로 지원하고 정보를 공유할 수 있는 리소스와 도구가 풍부하게 제공됨을 의미합니다. OpenGL에 대한 다양한 튜토리얼, 예제, 문서, 라이브러리 등이 온라인에서 이용 가능하며, 이는 개발 과정을 지원하고 개발 시간을 단축하는 데 도움을 줍니다.

이러한 이유들로 OpenGL은 컴퓨터 그래픽스를 다루는 많은 애플리케이션 및 게임 개발에 널리 사용되고 있습니다. 그래픽 처리와 그래픽 효과를 구현하기 위해서는 OpenGL의 렌더링 기능과 API를 이해하고 활용할 수 있어야 합니다.

 

OpenGL의 렌더링 기능과 API를 이해하기 위해 다음과 같은 주요 개념을 알아야 합니다:

-버텍스 (Vertex): OpenGL에서 그리기 작업의 기본 단위는 버텍스입니다. 버텍스는 2D 또는 3D 공간에서 점 또는 꼭짓점을 나타냅니다. 그래픽 개체를 구성하는 꼭짓점들의 집합으로 정의됩니다.

-쉐이더 (Shader): 쉐이더는 그래픽스 파이프라인에서 실행되는 작은 프로그램 단위입니다. OpenGL은 버텍스 쉐이더(Vertex Shader)와 프래그먼트 쉐이더(Fragment Shader)를 사용합니다. 버텍스 쉐이더는 각 버텍스의 위치와 속성을 계산하고 변환합니다. 프래그먼트 쉐이더는 버텍스가 만들어내는 픽셀의 색상을 계산합니다.

-텍스처 (Texture): 텍스처는 2D 이미지나 3D 데이터를 나타내는 데이터 배열입니다. OpenGL에서는 텍스처를 사용하여 픽셀의 색상이나 다른 데이터를 그래픽 객체에 매핑합니다. 텍스처는 픽셀 단위로 조작되며, 텍스처 좌표를 사용하여 텍스처에서 색상을 가져옵니다.

-버퍼 객체 (Buffer Object): OpenGL에서 데이터를 처리하고 전달하기 위해 버퍼 객체를 사용합니다. 버퍼 객체는 버텍스 데이터, 인덱스 데이터, 텍스처 데이터 등을 저장하는데 사용됩니다. 버퍼 객체는 CPU와 GPU 사이에서 데이터를 효율적으로 전송하는 데 도움을 줍니다.

-프레임 버퍼 (Frame Buffer): 프레임 버퍼는 그래픽스 출력을 저장하는 메모리 영역입니다. OpenGL은 기본적으로 화면에 렌더링하지만, 프레임 버퍼를 사용하여 렌더링 결과를 다른 곳에 저장하거나 후처리 작업을 수행할 수 있습니다.

-그리기 호출 (Drawing Calls): OpenGL에서 그래픽 객체를 그리기 위해 그리기 호출을 사용합니다. 그리기 호출은 버텍스 데이터와 쉐이더, 텍스처 등을 설정한 후에 호출되며, 그래픽 객체를 화면에 그리는 작업을 수행합니다.

-상태 관리 (State Management): OpenGL에서는 그래픽 렌더링 상태를 관리해야 합니다. 이는 쉬운 상태 전환 및 그래픽스 설정을 변경하는 데 도움을 줍니다. 예를 들어, 현재 쉐이더 프로그램, 텍스처, 그리기 모드, 행렬 스택 등의 상태를 관리해야 합니다.

이러한 개념을 이해하고 OpenGL의 API를 활용하면 버텍스, 쉐이더, 텍스처 등을 설정하고 그래픽 객체를 렌더링할 수 있습니다. OpenGL은 다양한 함수와 상태 설정을 제공하여 그래픽 애플리케이션을 개발할 때 필요한 작업을 수행할 수 있게 합니다. 따라서 OpenGL의 렌더링 기능과 API를 이해하고 활용하면 그래픽 작업을 더욱 효율적이고 유연하게 수행할 수 있습니다.

 

*참고

https://developer.android.com/guide/topics/graphics/opengl?hl=ko#basics 

 

OpenGL ES  |  Android 개발자  |  Android Developers

OpenGL ES 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android에서는 Open Graphic Library(OpenGL®), 특히 OpenGL ES API가 포함된 고성능 2D 및 3D 그래픽을 지원합니다. O

developer.android.com