2009-03-07 4 views

답변

26

OpenGL은 그래픽을 낮은 수준에서 그리기위한 라이브러리입니다. 주로 3D 그래픽에서 탁월합니다. OpenGL의 가장 중요한 경쟁자는 Direct3D입니다 (은 DirectX 전체가이 아닙니다).

GL은 하드웨어 가속을 사용하는 경우에만 매우 강력합니다. 오늘날 거의 모든 데스크톱 또는 랩톱 솔루션에는 GL 가속 기능이 있지만 그래픽 카드가 칩셋에 통합 된 일부 시스템에서는 속도가 다소 느립니다.

일별 해킹의 경우 GL은 많은 비정상적인 목적을 수행 할 수 있습니다. 그 이유는 그래픽 관련 작업에 GPU의 처리 능력을 활용할 수 있기 때문입니다. 비 그래픽의 경우 CUDA와 같은 최신 언어도 GPU에 액세스 할 수 있습니다.

GL의 강점은 3D 장면 렌더링에 있지만 2D 작업이나 구성에도 사용되는 경우가 많습니다. 그 이유는 그래픽 카드의 2D 가속 아키텍처가 종종 GL의 성능 (자유) 또는 성능에 미치지 못하기 때문입니다. 그렇기 때문에 이러한 작업을위한 특정 2D 가속화가 가능하더라도 GL이 비디오 출력 (주로 스케일링) 또는 혼합 작업에 사용되는 경우가 있습니다. Mac OS X은 GL을 통해 렌더링되는 전체 데스크톱의 탁월한 예이며 높은 CPU 부하없이 매력적인 효과를 제공합니다. 그러나 예를 들어 앤티 앨리어싱 된 텍스트 글리프를 질감이있는 배경에 혼합하는 데에도 사용할 수 있습니다.

그래픽 성능이 중요한 작업을 수행하는 즉시 GPU가 도움이되기를 바라며 (화면에 그리지 않아도 가능함) OpenGL은 깨끗하고 표준화 된 크로스 플랫폼 응답입니다 필요에 따라 오늘날의 GUI 툴킷은 대부분 GPU 가속화 도면을 제공하지 않지만 위젯에 GL 렌더링을 포함합니다. 따라서 UI 드로잉에 사용할 수 있으며, 성능에 중요한 실시간 그래픽을 사용할 수 있습니다. GL 내부에 전체 UI를 작성하는 것은 쉽지 않지만 사용 가능한 솔루션이 있습니다 (일반적인 사용 사례는 게임 내 UI가있는 게임입니다).

+0

2D 가속화가 일반적으로 느린 이유는 무엇입니까? 단지 2 축만으로는 더 빠르게 진행되는 것이 합리적이지 않습니까? – mk12

+1

먼저, 3D에서의 추가 작업의 대부분은보다 복잡한 행렬 작업과 마찬가지로 기본적으로 하드웨어로 구현되므로보다 단순한 2D 작업과 비교할 때 '무료'입니다. 그리기 자체는 두 경우 모두 2D로 수행됩니다 (Scanline 알고리즘 참조). 둘째, GPU 공급 업체가 2D 하드웨어 가속 대신 GL 및 DirectX 용 드라이버를 최적화하는 데 더 많은 노력을 기울이기 때문에 일반적으로 3D 가속이 더 빠릅니다. 특히 Windows 이외의 플랫폼의 경우. 대부분의 GPU 벤치 마크는 3D 게임 벤치 마크입니다. 그것이 시장에서의 경쟁이 일어나는 곳입니다. – ypnos

15

더 근본적인 것입니다. OpenGL을 사용하면 낮은 수준의 그리기를 수행 할 수 있습니다 ("버튼 하나 그리기"보다는 "여기에서 여기로 선 그리기"라고 생각하십시오). OpenGL 작업은 종종 하드웨어 가속이되어 매우 효율적이며 OpenGL API를 사용하면 3D로 쉽게 작업 할 수 있습니다.

OpenGL과 QT 또는 GTK와 같은 GUI 툴킷 중 하나를 선택하는 것은 실제로 응용 프로그램의 UI 요소를 그리거나 그래픽 렌더링 방법을 매우 세밀하게 제어하려는 경우에 따라 달라집니다.

때때로 GUI 툴킷은 화면 아래에있는 요소를 그리기 위해 덮개 아래에 OpenGL을 사용합니다.

6

OpenGL은보다 복잡한 사용자 지향 그래픽 라이브러리가 구축되는 그래픽 API입니다. 그래픽 개발, 특히 3D 그래픽에 관심이 있다면 친숙해질 가치가 있습니다. 사실적이고 사실적인 대기 렌더링을 처리하기 위해 퀘이크 렌더링을 통해 라인 그리기에서부터 모든 작업을 수행 할 수있는 매우 강력한 시스템입니다.

OpenGL과 관련된 모든 항목의 시작점은 필요한 모든 항목에 대한 링크가있는 OpenGL.org입니다.

당신이 교과서를 좋아하고 OpenGL에서 그다지 좋지 않은 아이디어라면, 확실한 텍스트는 'The OpenGL programming guide'입니다.OpenGL 쉐이딩 언어 (OpenGL Shading Language) (또는 오렌지 북 (Orange Book))로 보충 할 수 있습니다.

OpenGL에 대한 좋은 점 중 하나는 간단한 테스트 툴킷 인 GLUT가 있다는 것입니다. GLUT는 바인딩을 사용하여 대부분의 언어로 구현되었으며 실험 및 일반적으로 해킹하기가 매우 쉽습니다.

그래서 주전자가 렌더링됩니다.

4

GTK, QT, MFC, wxwidget 등은 GUI 도구를 만들기 위해 대화 상자, 위젯, 버튼 등과 같은 컨트롤을 제공합니다.

일반적으로 제공하는 컨트롤 중 하나는 그래픽 명령 (drawline, draw circle 등)을 사용하여 그릴 수있는 캔버스입니다. 그들은 또한 OpenGL 커맨드를 사용하여 그릴 수있는 OpenGL 캔버스를 제공합니다.

OpenGL은 3D 객체를 표시하기위한 언어이며, 매우 강력하고 크로스 플랫폼이며 다소 복잡합니다 (특히 수학이 약하면 특히 그렇습니다). 그러나이 3D 중 하나를 시도하는 것보다 훨씬 낫습니다. 너 자신을 채워라! 때때로 당신이 무언가를 잘못하고 빈 스크린을 그려야하는 경우 특히 좌절 할 수 있습니다.

좀 더 복잡하게 만들려면 OpenGL로 작성된 윈도우 킷 (windowing toolkit)이 있습니다. OpenGL은 장면에서 버튼, 대화 상자 등을 제공하며 무언가에 의해 사용 된 모든 GUI 요소 OpenGL에서 실제로 QT처럼 그려져 있습니다!

관련 문제