1. 程式人生 > 實用技巧 >Qt5和OpenGL一概述

Qt5和OpenGL一概述

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

從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。

Qt5使用現代的OpenGL即可程式設計渲染管線,所以示例程式已經見不到以前的基於固定管線函式的程式碼。在新的OpenGL下,以前一些方便的函式功能幾乎都被glsl代替,而且需要自己實現這些功能。雖然比較靈活,但一定程度上增加了學習曲線。

基於glsl的基本渲染管線:

233859_49mc_114411.jpg

基於glsl和QOpenGLWindow、QOpenGLWidget的OpenGL程式設計步驟如下:

234413_P7yh_114411.jpg

轉載於:https://my.oschina.net/assange/blog/540458