|
|
| Line 1: |
Line 1: |
| 그래픽
| | #Redirect [[Korean Graphics]] |
| Qt 5에서의 그래픽은 주로 명령식 QPainter API 또는 Qt의 선언적 UI 언어인 Qt Quick과 이의 scene graph 뒷단을 통해서 이루어집니다. Qt 5의 그래픽 기능은 다양한 이미지 형식을 읽고 저장하는 것 뿐 아니라 인쇄하는 것 까지도 포함하고 있습니다.
| |
| | |
| QPainter의 2D 그래픽
| |
| QPainter [qt-project.org]는 서로 다른 표면이나 QPaintDevice [qt-project.org] 인스턴스들 (QImage, QOpenGLPaintDevice, QWidget, 그리고 QPrinter 와 같은) 위에 텍스트와 이미지, 그리고 벡터 그래픽을 그리기 위한 API를 제공합니다. 실제 그리는 작업은 QPaintDevice의 QPaintEngine에서 일어납니다. 소프트웨어 rasterizer 와 OpenGL (ES) 2.0 뒷단은 가장 중요한 두 가지 QPaintEngine 구현입니다. 이 Raster paint 엔진은 Qt의 소프트웨어 rasterizer이며, QImage 또는 QWidget 위에 그릴 때 사용됩니다. OpenGL paint engine 상에서 이 엔진의 강점은 antialiasing이 활성화 되었을 때의 높은 품질과, 완벽한 기능 집합입니다.
| |
| | |
| Paint System [qt-project.org] – QPainter 클래스와 아키텍쳐의 개요.
| |
| Coordinate System [qt-project.org] – QPainter의 좌표 시스템이 어떻게 동작하는지에 대해 설명합니다.
| |
| Drawing and Filling [qt-project.org] – QPainter가 어떻게 벡터의 모양을 채우고 테두리를 그리는지에 대해 설명합니다.
| |
| QPainter에서 가장 중요한 렌더링 대상은 다음과 같습니다:
| |
| | |
| QImage [qt-project.org] – 픽셀에 직접 접근하는 하드웨어 독립적 이미지 표현. QPainter는 QImage 인스턴스를 그리기 위해 소프트웨어 rasterizer 를 사용할 것입니다.
| |
| QPixmap [qt-project.org] – 화면 표시에 적합한 이미지 표현. QPainter는 QPixmap 인스턴스를 그리기 위해 소프트웨어 rasterizer를 우선적으로 사용할 것입니다..
| |
| QOpenGLPaintDevice [qt-project.org] – 현 OpenGL (ES) 2.0 컨텐츠로 렌더링하는 페인트 장치. QPainter는 QOpenGLPaintDevice 인스턴스를 그리기 위해 하드웨어 가속 OpenGL 호출을 사용합니다.
| |
| QBackingStore [qt-project.org] – 최상위 윈도우에 대한 백 버퍼. QPainter는 QBackingStore 인스턴스를 그리기 위해 소프트웨어 rasterizer를 우선적으로 사용합니다.
| |
| QWidget [qt-project.org] – pre-Qt Quick 사용자 인터페이스 클래스를 위한 기본클래스. QPainter는 QBackingStore를 이용하여 위젯을 렌더링 할 것입니다.
| |
| QPainter 와 관련 classes 들은 Qt GUI 모듈의 일부로, Qt GUI [qt-project.org] 페이지에 더 자세한 내용이 설명되어 있습니다.
| |
| | |
| OpenGL 과 3D
| |
| OpenGL은 하드웨어 가속과 3D 그래픽에 가장 널리 적용되는 그래픽 API으로, 모든 데스크탑 플랫폼과 거의 모든 모바일과 임베디드 플랫폼에 구현되어 있습니다. Qt 라이브러리는 사용자가 응용프로그램에 OpenGL을 통합하는 걸 도와주는 많은 클래스들을 포함하고 있습니다.
| |
| | |
| OpenGL in QtGui [qt-project.org] – OpenGL이 Qt GUI 모듈과 통합하는 방법에 대한 개요.
| |
| OpenGL and Qt Quick 2.0 [qt-project.org] – OpenGL을 Qt Quick 2.0 scene graph로 통합하는 방법.
| |
| www.khronos.org/opengl [khronos.org] – 공식 OpenGL 페이지.
| |
| Qt 5.0 이전에, Qt에서의 OpenGL 지원은 Qt OpenGL [qt-project.org] 모듈을 통해 처리되었습니다. 이 모듈은 아직 남아있지만, 새 코드는 Qt GUI 모듈의 새로운 클래스를 사용하도록 해야 합니다.
| |
| | |
| Qt Quick scene 그래프
| |
| Qt Quick 2.0에선 렌더링을 위한 OpenGL (ES) 2.0 scene graph를 소개합니다. 이는 Qt Quick 2.0의 성능을 대체적으로 향상시켰으며, 이전 버전에 사용되었던 QGraphicsView/QPainter-기반 접근 방식과 비교하면 눈에 띄게 차이가 납니다.
| |
| 이 scene graph는 item scene을 그래픽으로 표현한 것입니다. 그래픽 레벨의 deep copy로 생각할 수 있으며, 모든 해당 항목을 렌터링하기 위한 충분한 정보를 포함하는 독립된 구조체입니다. 한 번 설정되면, 항목의 상태와 별개로 조작되고 렌더링 될 수 있습니다. 많은 플랫폼에서, scene graph는 GUI 스레드가 다음 프레임의 상태를 준비하는 동안, 전용 렌더링 스레드에서 렌더링 되기도 합니다.
| |
| Scene graph는 여러분의 QML 파일에 QtQuick 2.0 을 import 할 때 사용되며, 실행을 위해 QQuickView 를 사용합니다.
| |
| | |
| Qt Quick Scene Graph [qt-project.org] – Qt Quick Scene Graph 아키텍쳐의 개요.
| |
| Scene Graph and Rendering [qt-project.org] – 각 프레임의 렌더링 Breakdown.
| |
| Qt Quick은, Qt Quick scene graph가 렌더링되기 전후로 각각 발생되는 QQuickWindow::beforeRendering() 이나 QQuickWindow::afterRendering() 신호에 연결함으로써, raw OpenGL 렌더링과 혼합될 수 있습니다. 이 신호들은 렌더링 스레드(가능한 경우)에서 발생되며, 이 연결들의 방향을 지정해야 합니다.
| |
| | |
| 인쇄
| |
| Qt는 로컬 또는 네트워크의 실제 프린터에 직접 인쇄하는 것과 PDF 출력물 생성하는 것 둘 다 지원합니다. Qt로 프린트하는 방법은 Qt Print Support [qt-project.org] 페이지에 상세히 설명되어 있습니다.
| |
| 여러분의 응용프로그램이나 라이브러리에서 Qt 인쇄 클래스에 대한 접근을 가능하게 하려면, Qt Print Support [qt-project.org] 모듈 페이지를 참고하십시오.
| |
| | |
| 이미지
| |
| Qt는 QImage [qt-project.org] 클래스를 통해서 이미지의 읽기, 쓰기, 조작의 편의를 지원합니다. 또한, 이미지를 불러오고 저장하는 방법을 세밀하게 조정하려면, QImageReader 와 QImageWriter 클래스를 각각 사용할 수 있습니다. Qt에서 지원하지 않는, 더 많은 이미지 형식에 대한 지원을 추가하려면, QImageIOHandler 과 QImageIOPlugin을 사용하여 이미지 형식 플러그인을 생성할 수 있습니다.
| |
| 더 많은 정보는, Reading and Writing Image Files [qt-project.org] 페이지를 참고하십시오.
| |
| [[Category:Developing with Qt]]
| |