在Qt裡如何使用原生的OpenGL API?

時間 2021-05-11 22:51:09

1樓:黑帥

新建乙個myopengl類繼承qopenglwidget,然後封裝resize,initialize等函式,最後將視窗部件提公升為myopengl,效果如圖。

2樓:天象

要想使用最新的OpenGL特性,你不能

#include

你得寫#include

像這樣就會呼叫GL4.3的函式。也有ES版的,但是何必呢……理論上其實可以直接include gl呼叫原生gl函式——gl函式全都是全域性的,是否起效取決於是否繫結了合適的Context(gl裡的繫結真特麼多),但是如果你使用QOpenGLContext::

currentContext()->versionFunctions()來新建乙個QOpenGLFunctions物件,那麼初始化和執行中的錯誤都會直接列印進console裡,有利於debug。當然,glew也是不需要的了。

不要用QGLWidget,用Qt5最新(其實有點時間了)的QOpenGLWidget。雖然現在其實差別不大,但是以後QGLWidget肯定會漸漸淘汰的。QOpenGLWidget封裝的比較簡潔,只包含乙個Widget必須的方法,相比之下QGLWidget設計的非常冗餘,很難維護,以後會被淘汰。

比如,設計器就只支援QOpenGLWidget。

上面說過,GL函式是否起效取決於是否繫結了合適的Context,這件事情Widget會像glut一樣自動幫你完成(具體來說是makeCurrent函式),接下來可以使用QOpenGLShader一類的物件來管理gl的狀態(因為gl的繫結寫法太製杖),但如果你想使用(過載在QOpenGLFunctions裡面的)原生gl函式那當然也是完全可以的了。

3樓:落山

分情況說下:

使用Qt4,除去QML不談,一般有兩種用法,1.直接使用QGLWidget這個類,OpenGL Context的建立和管理由Qt接管,不用自己操心,OpenGL API則由QGLFunction這個類暴露出來,原形和OpenGL原生API幾乎是一樣的,看文件就知道使用方法了,要不要引入glew或glee,看你自己了,如果OpenGL2的API就夠用的話,就不需要,如果要使用OpenGL2以上的API,自己去解API指標並探測擴充套件可不可用,比較麻煩,建議還是引入,使用方法同你使用原生OpenGLAPI一樣,在OpenGL Context有效的情況下,直接呼叫即可。但有幾個注意事項,第乙個,建立QGLWidget的時候,注意正確構造QGLFormat引數,選擇合適的OpenGL版本和Profile,一般情況下,版本往高了填,本機不支援的話會自動降級到最高可用版本,但也有例外,有些老的OpenGL驅動比較奇葩,會降到2.

1版本,多機使用的話,考慮清楚;第二個,如果原生API呼叫和Qt的GLPainterEngine混用的話,要記得呼叫beginNativePainting/endNativePainting,使得GLPaintEngine能夠同步OpenGL狀態,這些文件裡都有說,仔細看看吧

2.使用GraphicsView框架,使用QGLWidget作為GraphicsView的viewport,這樣View裡的繪製就會用OpenGL作為PaintEngine了,這個用法的好處就是可以在View裡內嵌Qt的控制項,這些控制項的繪製都由GLPaintEngine負責,構建好Scene,開乙個自定義的Item,過載Item的paint方法,paint方法裡,盡情的使用OpenGL原生API吧,隨你了,當然注意事項同上。

使用Qt5,QML的情況文件裡有詳細說(RTFM),Qt4裡的用法在QT5裡仍然可以工作,另外Qt5重寫了一套新的OpenGL封裝,可以支援更新的OpenGL標準,具體情況,因為沒仔細使用過,就不說了,看文件吧。

4樓:Vinjn張靜

#include

github 上搜尋 imgui

glut / freeglut

如何使用Logic Pro X 裡的Noise Gate進行降噪?

noise gate噪音門,顧名思義是在設定的絕對值的音量以下和以上時分別關開門,從而讓不需要的噪音聽不到 適當調整 調低 話筒拾音的gain,還是可以用gate把底噪關在外面的,引數的話無非設定好開關門的值 threshold 還有就是attack關的速度,release開的速度和hold持續的時...

在不是好的原生家庭裡,經常被父親打罵,以學費要挾,我要怎麼做

貓妖不可愛 你是個堅強的小姑娘 小夥子,你想好了應對的措施,也對自己的處境認識的很清楚,所以請不要灰心,相信自己可以改變現在的處境。第一,關注家人對你父親的態度,找到那些支援你 愛你的親人,向他們傾訴自己的不愉快和困難,獲得幫助,協調你和父親的關係。感覺到被愛對於現在的你一定很重要,但是要記住,即便...

如何看待那些在遊戲裡使用外掛程式被罵,卻毫無羞恥之心的人?

韋醉克斯 他們並不是毫無羞恥心,他們是產生了依賴。開掛後得到的戰場資訊比普通玩家更多,加上fps遊戲還有鎖頭 子彈追蹤等優勢,開著掛就有了安全感,並且可以掌握他人生死,在某些團隊遊戲甚至會備受追捧成了大哥。但如果沒了這些就像乙個養尊處優的公子哥突然被扔到了深山老林裡,根本無法生存,而一旦擁有了這些,...