編寫基於Qt的GLSL程式需要注意的幾點

2021-08-27 14:32:20 字數 804 閱讀 9903

最近嘗試著編寫基於qt和glsl的小例子,遇到了一些小問題,在這裡給大家分享一下,希望大家不要重蹈覆轍。

首先,如果出現「error: duplicate function definitions for 「main」; prototype: 「main()」found.」錯誤,如下圖:

這是在鏈結glsl的時候出錯了,大體意思是類似於visualstudio中的lnk2005這樣的錯誤。究其原因,是因為我們正在執行乙個glsl程式,在執行中無法鏈結成功。此時我們需要手動解除安裝我們的著色器,如下面這條語句:

m_shaderprogram.release( );

m_shaderprogram.removeshader( m_pvertexshader );

這樣再使用m_shaderprogram.link( )方法鏈結就不會出現錯誤了。

然後,如果在執行的時候出現「qopenglfunctions created with non-current context」異常,那麼需要注意著色器變數的儲存。我嘗試過,把qopenglshader作為物件作為類例項成員儲存或者作為全域性(靜態)變數儲存都會導致這個錯誤。於是我放棄了建立qopenglshader物件,改為了qopenglshader指標。而qopenglshaderprogram則沒有這個限制。

其實最佳實踐是,使用qopenglshaderprogram的例項作為類的資料成員,qopenglshader的指標作為類的資料成員。

Qt編寫OpenMP程式 HelloWorld

本程式是在ubuntu linux環境下編寫成的。這裡包括c 語言程式和c語言程式,兩者在qt專案設定引數上略有不同,需要注意。openmp提供並行描述,可以充分使用計算機系統的cpu資源。step1.建立qt的c 專案,專案檔案如下 config console c 11 config qt qm...

基於Qt的生命遊戲程式

軟體工程課程的課程實踐專案之一,總的來說是毫無實用性的玩具程式。原始碼見此 不過在編寫的過程中較為有意識的使用了軟體工程方面的知識 起碼將程式分為了三個模組,並且努力的降低了耦合性。站在本人的角度上來講,是對軟體工程的一次實踐,美中不足的地方在於沒有事先編寫需求說明文件 設計用例,並使用uml云云。...

編寫Python程式訪問需要cookie的網頁

有些網頁需要你登入之後才可以訪問,你需要提供賬戶和密碼,其實用python寫程式來訪問還是蠻簡單的,就是對cookie的儲存而已 比如我在 www.bokee.com 部落格網上註冊了帳號test51,密碼11111 如果想訪問登入後才可以訪問的網頁,那麼程式似乎可以這樣寫 這樣做之後cookie就...