導航:首頁 > 源碼編譯 > vtk編譯選擇opengl

vtk編譯選擇opengl

發布時間:2023-03-23 16:53:49

① vtk和opengl哪個效率高

當然是OpenGL高效。vtk使用簡單。

② 怎麼把vtk的window轉到qt中的qgraphicsview

qt

可以通過QGLWidget運行opengl。QGLWidget繼承QWidget,能夠直接在裡面調用opengl的介面。這個在qt文檔里有具體說
明,也有相關例子,所以不贅述了。但是無法在正式軟體裡面執行,為什麼?因為正式軟體是用QGraphicsScene這個場景類操作和操作一切
item,而用QGraphicsView將其顯示出來,而每一個item都是QGraphicsItem的子類。QGLWidget並不是QGraphicsItem類,我曾經嘗試用普通的QWidget類那樣,通過proxy來加進QGraphicsItem,但是沒有成功。或許有方法,但是沒有找到。

於是我放棄了用QGLWidget來操作opengl的打算,尋找直接在QGraphicsItem中操作opengl的方法。通過查看文檔和示例代碼,找到了這個洞逗方法:

1 往qt工程文件里添加opengl以及對應的lib。
2
對QGraphicsView進行一個三維對話框的指定,代碼如下:

QGLWidget *widget = new
QGLWidget(QGLFormat(QGL::SampleBuffers));

widget->makeCurrent();

QGraphicsView
view;

view.setViewport(widget);

上述代碼告訴了 QGraphicsView 類當前繪制的對象是支持opengl的。於是所有的場景中的item都將繪制到widget 上。
3
寫一個QGraphicsItem的繼承類,特別要重寫paint函數。代碼如下:

void XXX::paint(QPainter
*painter, const QStyleOptionGraphicsItem *option, QWidget
*widget)

{

painter->beginNativePainting();

glColor3f(0.5,1.0,0.2);

glBegin(GL_TRIANGLES);

glVertex3f(100.0,100.0,-100.0);

glVertex3f(150.0, 100.0,
-100.0);

glVertex3f(100.0, 150.0,
-100.0);

glEnd();

painter->endNativePainting();

}
上面這個函數主要是用opengl介面繪制了一個三角形。記住,在opengl繪制之前一定要執行painter->beginNativePainting()以及painter->endNativePainting()這兩個語句。
QGraphicsScene、
QGraphicsView和QGraphicsItem的關系可以查閱相關文檔,也不贅述了。

不過我按照這個方式畫的三角形,怎麼也在窗口上顯示不出來,找了半天才發現問題在這個函數上QGraphicsItem::boundingRect()。這個函數是
干什麼用的呢?主要用來返回該item的初始化大小,這個大小不會輕易改變,後續的改變都可以通過矩陣來完成,但是初始大小是不變的。QGraphicsView通過這個矩形來判斷當前item是不是需要重繪,如果在重繪區外,則不調用重繪函數了。同時碰撞檢測之類,也可以用這個矩形來判斷。原來,item本身的矩陣外包框不對,所以才導致了重回不出來,改過來就正確了。

上面說的很潦草,具體怎麼改的步驟就不說了。要想正確的繪制,必須得弄清楚坐標系的關系,QGraphicsScene、QGraphicsView以及QGraphicsItem這三個坐標繫到底是什麼關系。我看了文檔,也自己進行了測試,但是感覺文檔和測試的結果有些出入。具體出入不說了。說一下自己得心的吧。

先說明:涉及到一切大小和長度,都是像素大小,至少我測試的結果是這樣的。
在建立QGraphicsScene
對象的時候,有一個構造高顫芹函數是矩形,這個矩形是什麼含義呢?經過測試,發現這個矩形並沒有指定彈出窗口戚畢的位置,比如,我把矩形的左上角點指定為
-1000,-1000,顯示的位置和1000,1000是一樣的,而長度則正確指定了(當然,可能會有滾動條)。所以,這個矩形的左上角點並不是顯示的
窗口的位置,而是它在邏輯上的左上角點。我們顯示一切item,都是以這個邏輯上的坐標系為准來繪制的。比如,左上角點是-1000,-1000,而
item的位置在-500,-500,則這個-500,-500相當於在顯示窗口的左上角往下各加500個像素的坐標的位置。

那麼 QGraphicsItem的boundingRect是什麼意思呢?返回的是什麼大小?是以什麼坐標系顯示的大小?首先,這個大小肯定是以像素為單位的,其次,這個矩形的坐標是以QGraphicsScene的邏輯坐標為準的。當然這個大小是沒有任何矩陣疊加的大小。有了矩陣疊加後,實際的矩形可能會發生變化。假如在boundingRect中指定矩形的左上角為100,100,那麼最終體現的位置則是QGraphicsScene邏輯坐標100,100的位置,如果QGraphicsScene的左上角點已經指定為-1000,-1000,那麼這個位置實際上就是離窗口左上角點1100,1100的位置(由於有滾動條,所以也不一定是這個長度。)

那麼在QGraphicsItem的paint函數中進行了opengl繪制用的是什麼坐標呢?其實用的也是QGraphicsScene
的邏輯坐標。如上面的例子,繪制的直角三角形直角頂點是0,0,那麼顯示的位置就是距離顯示窗口左上角點1000,1000的位置。不過opengl的所
有繪制都是沒有矩陣疊加的基礎上,如果用矩陣疊加,則顯示的位置肯定和指定的有區別了。比如,我用setPos強制指定一個位置,這個位置將和opengl繪圖坐標相疊加,最後顯示到窗口上。我推測setPos其實是改變了矩陣,是一個平移矩陣。

③ opengl opencv vtk哪個快

你會那個那個就快。

編譯vtk出現的問題

說得詳細一些,編譯到什麼情況出現的錯誤,bin已經編譯出其他exe和dll文件了么?

⑤ vtkguisupportqt 庫怎麼安裝

1、下載
VTk官方下載頁面:http://www.vtk.org/VTK/resources/software.html#latest
我下載的是vtk-6.0.0.zip(源碼)、vtkdata-6.0.0.zip(數據)、vtkDocHtml-6.0.0.tar.gz.(幫助文檔)。
既然下載了源碼, 就不需要下載則緩者win32的安裝exe程序了,我們自己手動編譯哪正。
2、編譯
2.1下載cmake-2.8.11.2-win32-x86.exe,並安裝。用它來完成VTK的編譯。
2.2解壓vtk-6.0.0.zip至D:\VTK6.0\vtk,
解壓vtkdata-6.0.0.zip至D:\VTK6.0\vtkdata
解壓vtkDocHtml-6.0.0.tar.gz 至D:\VTK6.0\vtkDocHtml
2.3 運行安裝後的,CMake程序。
選擇source code目錄為 D:\VTK6.0\vtk
選擇build後的bin目錄為 D:\VTK6.0\bin
點擊Configure按孫薯鈕,會提示你選擇編譯器,我們選擇visual studio 9 2008.然後Cmake會掃描一下它需要的文件,等它停下來後,我們就可以修改CMake的參數選項了。

⑥ 如何安裝VTK6.2.0

1、首先從VTK官網上下載vtk6.2.0和CMake3.2.3.

http://www.vtk.org/download/

http://www.cmake.org/download/

默認已經裝好了vs2010啦,

最後是環境配置,請在系統path中添加.../vtk;,然後把vtk/bin中的dll文件拷進system32中。

⑦ VTK初學,抄了這么一個程序,老說LIB 不對,誰幫看看 謝謝

你查找你的vtk文件中是否有vtkCommon.lib,可能由於版本問題,這個lib換了名字!!!

⑧ 請問VTK與open inventor以及openGL各有什麼特點,區別

簡散卜帆單的說,openGL是面向過程的,OIV是面向對象的,VTK我沒用過,OIV有許多對象模沖雹塊,你可以直接調用而省去大量的編程。也就是說,同樣的實現,OIV的代碼可以弊賣做到最短,據我所知是所有圖形庫中最短的。

⑨ Cmake動態編譯VTK庫(QVtkwidget)

在版本問題上大費周章之後,得到如下的成功嘗試

軟體版本說明:

PCl1.8.1 + VS2017 + Qt5.9.6 + Cmake + Vtk8.0.0

點擊Configure後對條目進行處理:(修改完成繼續Configure直到沒有錯誤)

1.點擊Add Entry添加 

    Name:    CMAKE_DEBUG_POSTFIX 、Type:    STRING 、Value:-gd、Description:空

讓vtk的lib最後分為debug版本跟release版本。Debug版本帶-gd。Release版本不帶-gd,方便區分.

2.勾選BUILD_SHARED_LIBS,這樣最後生成的vtk才會有dll跟lib

3.CMAKE_INSTALL_PREFIX設置為你清空的VTK文件夾(為了方便,這里選擇的路徑為PCL集成的VTK路徑)

4.勾選VTK_Group_Qt,這樣以後方便在qt裡面使用

5.修改Qt5_DIR路徑為PATH=D:/Qt/Qt5.12.0/5.12.0/msvc2017_64/lib/cmake/Qt5

6.修改VTK_QT_VERSION:STRING=5,使用Qt5修改相應版本號

7.如出現qmake路徑則修改QT_QMAKE_EXECUTABLE:FILEPATH=D:/Qt/Qt5.12.0/5.12.0/msvc2017_64/bin/qmake.exe

完成Configure,不出意外就不再顯示紅色,接著點Generate

接著以管理員身份運行VS2017,打開構建目錄下的VTK.sln

選擇Debug,x64,然後右鍵解決方案窗口的ALL_BUILD --> 生成。

 漫長等待...ing

然後右鍵install --> 僅生成install

Release版本同理,先ALL_BUILD --> 生成 再 右鍵install --> 僅生成install

至此完成編譯VTK操作,接下來提取所需的QVtkwidget插件

閱讀全文

與vtk編譯選擇opengl相關的資料

熱點內容
編譯忽略空字元 瀏覽:113
多店鋪阿里雲伺服器教程 瀏覽:378
單片機求初值 瀏覽:420
安卓機如何在電腦備份圖片 瀏覽:925
ca證書加密機價格 瀏覽:798
天乾地支年份演算法 瀏覽:796
程序員打造的視頻 瀏覽:7
java和php通信 瀏覽:680
為什麼黑程序員 瀏覽:163
程序員男生 瀏覽:456
戴爾文件夾內文件怎麼置頂 瀏覽:582
雲伺服器6m網速 瀏覽:722
vivo手機中國聯通伺服器地址 瀏覽:862
工程總控編譯失敗 瀏覽:707
燕趙紅楓app如何下載 瀏覽:867
php查殺軟體 瀏覽:878
教育管理學pdf 瀏覽:547
伺服器均衡怎麼使用 瀏覽:626
linux中jps 瀏覽:954
單片機實驗感想 瀏覽:561