导航:首页 > 源码编译 > 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相关的资料

热点内容
dos命令自动关闭 浏览:318
心田花开app在哪里评价 浏览:449
求索记录频道哪个app可以看 浏览:730
金梅瓶pdf下载 浏览:979
机器软件用什么编程 浏览:843
java虚拟机指令 浏览:663
shell编程入门书籍 浏览:946
大连桶装水溯源码售价 浏览:302
php怎么跳转到电脑 浏览:414
如何在电脑上创建新网络连接服务器 浏览:61
c语言编译之后如何运行 浏览:569
mfc多线程编程视频 浏览:411
c编译的中文怎么写 浏览:91
单片机连接蜂鸣器电路 浏览:845
程序员买房前后对比照 浏览:999
cmdjava中文乱码 浏览:948
窗口app哪个好 浏览:732
xzforandroid 浏览:580
程序员那么可爱歌曲完整版 浏览:918
为什么购买pdf 浏览:56