문제

내가 아는 바로는 초기 Qt 버전에는 모듈이 없었고 그래픽을 포함하여 다양한 기능을 가진 별도의 클래스가 있었습니다.OpenGL 지원은 qt 1.2에서 실현되었습니다.그러나 초기 버전에는 QPainter, QImage가 존재했습니다.그렇다면 이러한 클래스가 네이티브(즉, 원시 클래스)라고 말하는 것이 맞습니까?OpenGL 클래스 - 비원시(결국 별도의 분기임)?나는 Qt에서 2D 그래픽을 생성하기 위한 비기본적이고 대안적인 방법으로서 Qtopengl의 추가 진화, 이 모듈이 기본 방법(2D 그래픽 생성을 위한)의 진화에 미치는 영향을 배우고 싶습니다.

도움이 되었습니까?

해결책

이 클래스가 원주민이라고 말하는 것이 정확합니까?

아니오, 그렇지 않습니다.

그것이 "원주민"이유는 다른 사람들에게 다른 것을 의미합니다. 그것은 해석의 문제입니다. 우리가 얼마나 혼란스러워하는 다른 질문을보십시오.

지금, 나는 당신이 "non-opengl"2 / 3d를 원주민으로 의미한다고 생각합니다. 디스플레이 드라이버를 직접 통과하는 것과 반대로 소프트웨어 래스터 화를 의미합니다. 따라서 Qt 레벨에서는 여전히 Qt에서 OpenGL 클래스가 없어

자, 이것은 Qimage와 Qpainter로 돌아올 수있는 지점입니다. 예, QPainter는 기본적으로 요즘 GPU가 너무 흔하지 않고 싸지 않은 시대의 소프트웨어 래스터 화를위한 초기 생성입니다.

기본적으로 소프트웨어 기술로 렌더링을 수행합니다. 즉, 더 많은 제한이 있지만 더 비싸고 덜 일반적인 하드웨어가 주위에 작동하지 않고 작동했습니다.

(그것들은 지진 및 기타 소프트웨어 제품, 오늘의 관점에서 볼 때 재미있는 시간이었습니다 ...)

다른 팁

"네이티브"가 "하드웨어 지원"을 의미한다면 그 경계는 더 이상 명확하지 않습니다.참고하세요 QPainter 페인팅을 위해 다양한 페인트 엔진을 사용할 수 있으므로 QPainter 그 자체로는 아무 의미도 없습니다.

"하드웨어 지원"이 단순히 CPU의 레거시 정수 또는 부동 소수점 실행 장치 이상의 것을 사용하는 것을 의미한다면 래스터 페인트 엔진은 가능한 경우 다양한 SIMD/벡터 작업을 사용합니다.래스터 페인트 엔진은 페인트를 칠하는 데 사용되는 엔진입니다. QImage, QPixmap GL이 아닌 경우 QWidget.

"하드웨어 지원"이 "그래픽 카드 하드웨어에 의해 렌더링됨"을 의미하는 경우 OpenGL 페인트 엔진을 사용해야 합니다.그림을 그릴 때 사용됩니다. QGLWidget 또는 QQuickPaintedItem.물론 페인팅은 여전히 ​​소프트웨어에 의해 정의됩니다. 지오메트리 설정과 셰이더는 단지 코드일 뿐입니다!이 소프트웨어는 범용 CPU보다 훨씬 빠르게 실행할 수 있는 하드웨어에서 실행됩니다.

요즘 고정 기능 OpenGL 파이프라인이 어느 정도 역사적인 인공물이라는 점을 고려하면 다음과 같이 말하는 것이 틀린 것은 아닙니다. 모두 Qt의 렌더링은 순전히 소프트웨어 기술을 사용하여 수행되지만 소프트웨어는 범용 CPU에서 실행되거나 범용 CPU에서 SIMD/벡터 실행 장치를 활용하거나 GPU에서 실행될 수 있습니다.

요즘 일반적인 Windows 드라이버는 다음과 같습니다. ~ 아니다 블릿 이외의 GDI/gdiplus 그리기를 가속화합니다.따라서 래스터 엔진을 사용하여 2D 드로잉을 수행할 때, 특히 XP와 같은 이전 Windows 버전에서 Qt는 플랫폼 기본 2D 드로잉보다 더 빠를 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top