qt 3d 繪圖

首先不得不說,要感謝北京郵電大學的阿科。感謝他慷慨的分享和極具科學態度的記錄,將本身蒐集到的衆多資料收集整理髮布,拯救衆多苦逼尋找方案的程序員於苦海之中。由於最近接手新的項目,涉及到使用opengl作surface plot編程。第一個想到的就是可否使用現有的開源API來完成這些工做。經過多方尋找,我發現了兩個開源的project:php

1 qwtplot3d(http://qwtplot3d.sourceforge.net/web/navigation/feature_frame.htmlhtml

2 Sapphire-3D-Surfaces(http://qt-apps.org/content/show.php/Sapphire+3D+Surfaces?content=118944linux

注意這裏我使用的開發環境是Qt,語言爲C++。程序員

第二個下載源代碼,再win7的Qt Creator一下就編譯經過了。可是第一個卻很艱難,因而各方尋找解決方案,最終在阿科的博客中找到了比較詳細的解決方法,原文連接:(http://blog.csdn.net/qinpanke/article/details/8062517)web

阿科的方法基本是正確的,可是在細節上與個人實際實驗結果有所不一樣,我將以阿科的內容爲基礎,增長一些本身實際實驗的內容。編程

 

 

          一、從網上下載qwtplot3D的最新版本:http://qwtplot3d.sourceforge.net/app

          二、解壓qwtplot3d-0.2.7.zip到C盤根目錄下(注意:路徑中不能帶有中文漢字)。ui

          三、打開C:\qwtplot3d-0.2.7\qwtplot3d,將會看到qwtplot3d.pro文件。this

          四、用QtCreator打開qwtplot3d.pro文件,並執行編譯命令會出現以下以下錯誤:No rule to target 'Makefile.Debug'.  Stop.以下圖所示:.net

         

          

          解決方法:

          雙擊並打開上圖左側中的qwtplot3d.pro文件,修改該文件部份內容:  win32:TEMPLATE= vclib   修改成: win32:TEMPLATE= lib

          

          五、修改完成後,再次點擊編譯運行。會再次出現錯誤:'stderr' was not declared in this scope  和  'fprintf' was not declared in this scope。 以下圖所示:

          

           解決方法:

           打開左側Source》src》qwt3d_function.cpp文件。並在頂部添加語句:#include "stdio.h"

           

           六、再次編譯。便可順利完成qwtplot3d工程的編譯,不會再遇到錯誤。

           (這個地方實際仍是會有錯誤的,會出現紅色的輸出提示「The process could not be started!」,可是已經生成了C:\qwtplot3d-0.2.7\qwtplot3d-build-desktop\lib目錄下面的libqwtplot3d.a和qwtplot3d.dll,只要生成了就能夠了,由上面的錯誤沒有關係)

          此時,打開C:\qwtplot3d-0.2.7\qwtplot3d-build-desktop\lib文件夾。會看到生成兩個動態庫文件:libqwtplot3d.a和qwtplot3d.dll。這就是編譯好的qwtplot3d的動態庫文件。做爲開發而言,就能夠直接使用。固然,咱們不只僅是但願編譯生成動態庫,還但願將qwtplot3d自帶的Demo編譯並運行經過。沒問題,繼續看下面的。

          複製C:\qwtplot3d-0.2.7\qwtplot3d-build-desktop\lib文件夾到C:\qwtplot3d-0.2.7\qwtplot3d\下面

          七、編譯qwtplot3d自帶的Demo程序。打開C:\qwtplot3d-0.2.7\qwtplot3d\examples文件夾。用QtCreator打開example.pro文件,點擊編譯運行,一樣會出現No rule to target 'Makefile.Debug'.  Stop的錯誤。這裏須要修改的pro文件是common.pro文件。

          解決方法:

          打開common.pro文件。刪除語句:TEMPLATE = vcapp和 QMAKE_LFLAGS += /NODEFAULTLIB:msvcrt

 

         八、修改完成後,再次編譯example.pro文件會出現 :: error: ../../lib/qwtplot3d.lib: No such file or directory 。(注意:也多是出現沒法 make 的錯誤。其實也是這個緣由致使的,一樣按照下面的修改方法也能夠解決)

         修改方法:

         打開common.pro文件。修改語句:LIBS+= ../../lib/qwtplot3d.lib  修改成:LIBS+= ../../lib/libqwtplot3d.a(這裏換成那個dll的動態連接庫文件也是能夠的,由於.a文件是linux下的動態連接庫文件,而.dll是window下面的動態連接庫文件)

 

        九、修改完成後,再次編譯example.pro文件就不會出現錯誤。可是,編譯完成運行的時候出現:

         Starting C:\qwtplot3d-0.2.7\qwtplot3d\examples-build-desktop\bin\autoswitch.exe...

         C:\qwtplot3d-0.2.7\qwtplot3d\examples-build-desktop\bin\autoswitch.exe exited with code -1073741515

        出現這個問題的緣由是動態庫沒有在example生成的可執行文件的目錄下。

    解決方法:

    打開C:\qwtplot3d-0.2.7\qwtplot3d\lib文件夾,拷貝兩個文件libqwtplot3d.a和qwtplot3d.dll。到文件夾:C:\qwtplot3d-0.2.7\qwtplot3d\examples-build-desktop\bin。(注意:這是我example生成的文件夾,要看一下你本身的生成的是否是這個位置)

 

   十、正確運行。看一下運行結果吧。

   實際的運行結果有多個,由於這個example裏面有不少個例子,能夠選擇運行哪一個例子:

   

運行結果你們能夠看阿科的博客,也能夠本身嘗試,是出現不一樣的surface plot圖像。

相關文章
相關標籤/搜索