QT與OpenGL結合實現天空盒

2021-09-01 23:12:54 字數 1010 閱讀 7487

之前搗鼓過一段時間opengl,用的是glad加上glfw庫,由於在windows下c++開發用qt較多,所以把qt和opengl結合,因此進行了嘗試。

首先qt5.8.0下有自帶的opengl控制項opengl widget,將這個控制項提公升為乙個自己寫的類myopenglbox繼承於qopenglwidget。

然後過載 void initializegl(); void resizegl(int w,int h); void paintgl();三個函式,基本可以實現在控制項上繪製3d影象。由於沒用qt自帶的opengl函式,要用到opengl庫,因此需要用glad對opengl庫進行初始化。將glad.h和glad.c檔案加入qt工程即可。在initializegl()函式中呼叫gladloadgl()對opengl函式進行初始化(如果在類的建構函式中呼叫該函式,會初始化失敗)。初始化成功後就可以使用opengl中的函式進行繪製了。

初始化函式如下:

void myopenglbox::initializegl()

; cubemaptexture = loadcubemap(faces);

// shader configuration

// --------------------

shader->use();

shader->setint("texture1", 0);

skyboxshader->use();

skyboxshader->setint("skybox", 0);//0表示gl_texture0

}

首先生成cubevao、vbo和skyboxvao、vbo,然後對著色器shader進行設定,準備畫圖。畫圖函式如下:

void myopenglbox::paintgl()

首先對shader中的model、view、projection的空間變換矩陣進行設定,設定完成後分別畫出cube與skybox即可。執行效果如下:

源**資源檔案:

gtk與openGL的結合 gtkglext

x.y.z.tar.gz tar jxvf gtkglext x.y.z.tar.bz2 configure prefix opt gtk make make install 生成examples目錄下的例子 make examples 3,下面是設定環境變數 gvim bash profile 新...

QT與OpenGL之易錯點

最近在使用opengl繪圖,只能說是初學opengl,不過也稍微懂了點,也學習到了哪些地方易錯。1 明明旋轉 平移,縮放 了圖形,怎麼出不來效果,此時,你應該看看你是不是updategl了,這是比較容易遺漏的。2 glrotatef 函式應該放在繪製圖形函式的上面,不應該放在其他函式內部進行呼叫,那...

QT與OpenGL之三維旋轉

效果 由於上傳大小的限制,只能製作短暫的效果。在開始前,你應該在pro中新增 libs glut.libglut32.lib 同時你也應該將這兩個庫加到qt的bin目錄下。glwidget.h ifndef glwidget h define glwidget h include include n...