Qt5和OpenGL一律述

從Qt5開始,OpenGL再也不是單獨模塊,而是做爲QtGUI核心的一部分。由於QtQuick基於該api實現。Qt做爲基本的GUI開發框架,整合了2d和3d圖形技術。編程

咱們知道,OpenGL自己只提供平臺無關的畫圖功能,而不包含特定平臺的窗口處理功能。而Qt中基本的窗口管理類爲QWindow和QWidget就能夠做爲OpenGL畫圖的窗口(兩者本來就支持2d畫圖,只是後來增長了OpenGL支持),在Qt5前期的版本(Qt5.0——Qt5.3)中,並無QOpenGLWindow和QOpenGLWidget兩個類,直到Qt5.4纔出現。在這以前,須要本身繼承QWindow,經過setSurfaceType(QWindow::OpenGLSurface);,設置QOpenGLContext 實現。所以,在Qt5.4版本,歷史性的實現了將QWindow放在QWidget中,從而使QtQuick2可以嵌入widget。api

Qt5使用現代的OpenGL便可編程渲染管線,因此示例程序已經見不到之前的基於固定管線函數的代碼。在新的OpenGL下,之前一些方便的函數功能幾乎都被glsl代替,並且須要本身實現這些功能。雖然比較靈活,但必定程度上增長了學習曲線。框架

基於glsl的基本渲染管線:函數

基於glsl和QOpenGLWindow、QOpenGLWidget的OpenGL編程步驟以下:學習

相關文章
相關標籤/搜索