Ubuntu18.04中QT安装下载安装pcl和vtk以及使用过程中踩过的坑

一、先记录一下下载过程中踩过的坑

问题1:QVTKOpenGLNativeWidget和QVTKWidget

之前从来没有接触过QT中显示3D点云方面的知识,了解到可以用pcl,然后在网上各种找pcl下载的相关内容,想要在QT中显示出来,需要用到VTK,又开始找VTK的下载的相关内容。

网上大多数推荐的pcl1.9+vtk7.1,用QVTKWidget这个控件来显示,然后找了篇文章跟着流程进行下载。

但是!!!后来知道,不只要显示点云,还要显示模型。查找资料之后发现QVTKWidget这个控件不能显示模型,需要用QVTKOpenGLNativeWidget,刺激的来了,vtk8.2版本之后才有这个控件。(之后会介绍QVTKOpenGLNativeWidget和QVTKWidget的区别)

所以我现在要卸载vtk7.1,下载vtk8.2或以上版本。

问题2:关于sudo apt-get install libvtk7.1-qt libvtk7.1 libvtk7-qt-dev

之前找的下载pcl1.9+vtk7.1的帖子中,安装依赖都会安装sudo apt-get install libvtk7.1-qt libvtk7.1 libvtk7-qt-dev,我以为这个依赖是必不可少的,但是卸载之后,尝试将7.1改成8.2,结果是找不到的。

我以为这个是必不可少的,然后又下回来了,用这个依赖,然后下载的8.2版本,但是用之前的例子直接崩溃了,然后把这个依赖卸载之后就跑起来了。

所以是8.2版本不需要这个依赖了吗????

问题3:报错 error: qvtkopenglnativewidget.h: 没有那个文件或目录

将vtk8.2版本中的控件还是为QVTKWidget,需要手动提升为QVTKOpenGLNativeWidget控件。(如何提升也会在后面介绍)

提升为QVTKOpenGLNativeWidget控件之后,编辑是会报错的,找不到qvtkopenglnativewidget.h文件。

这是因为这个文件的名称是大写的QVTKOpenGLNativeWidget.h。

问题4:报错opengl版本太低

最一开始运行是会报一下错误

ERROR: In /home/li/VTK-8.2.0/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx, line 754

vtkGenericOpenGLRenderWindow (0x558f595d1520): Unable to find a valid OpenGL 3.2 or later implementation. Please update your video card driver to the latest version. If you are using Mesa please make sure you have version 11.2 or later and make sure your driver in Mesa supports OpenGL 3.2 such as llvmpipe or openswr. If you are on windows and using Microsoft remote desktop note that it only supports OpenGL 3.2 with nvidia quadro cards. You can use other remoting software such as nomachine to avoid this issue.

ERROR: In /home/li/VTK-8.2.0/Rendering/OpenGL2/vtkShaderProgram.cxx, line 446

vtkShaderProgram (0x558f595b6740): 1: #version 150

2: #ifndef GL_ES

3: #define highp

4: #define mediump

5: #define lowp

6: #endif // GL_ES

7: #define attribute in

8: #define varying out

9:

10:

11: /*=========================================================================

12:

13: Program: Visualization Toolkit

14: Module: vtkPolyDataVS.glsl

15:

16: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen

17: All rights reserved.

18: See Copyright.txt or http://www.kitware.com/Copyright.htm for details.

19:

20: This software is distributed WITHOUT ANY WARRANTY; without even

21: the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR

22: PURPOSE. See the above copyright notice for more information.

23:

24: =========================================================================*/

25:

26: in vec4 vertexMC;

27:

28: // frag position in VC

29: out vec4 vertexVCVSOutput;

30:

31: // optional normal declaration

32: //VTK::Normal::Dec

33:

34: // extra lighting parameters

35: //VTK::Light::Dec

36:

37: // Texture coordinates

38: //VTK::TCoord::Dec

39:

40: // material property values

41: //VTK::Color::Dec

42:

43: // clipping plane vars

44: //VTK::Clip::Dec

45:

46: // camera and actor matrix values

47: uniform mat4 MCDCMatrix;

48: uniform mat4 MCVCMatrix;

49:

50: // Apple Bug

51: //VTK::PrimID::Dec

52:

53: // Value raster

54: //VTK::ValuePass::Dec

55:

56: // picking support

57: //VTK::Picking::Dec

58:

59: void main()

60: {

61: //VTK::Color::Impl

62:

63: //VTK::Normal::Impl

64:

65: //VTK::TCoord::Impl

66:

67: //VTK::Clip::Impl

68:

69: //VTK::PrimID::Impl

70:

71: vertexVCVSOutput = MCVCMatrix * vertexMC;

72: gl_Position = MCDCMatrix * vertexMC;

73:

74:

75: //VTK::ValuePass::Impl

76:

77: //VTK::Light::Impl

78:

79: //VTK::Picking::Impl

80: }

ERROR: In /home/li/VTK-8.2.0/Rendering/OpenGL2/vtkShaderProgram.cxx, line 447

vtkShaderProgram (0x558f595b6740): 0:1(10): error: GLSL 1.50 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, 3.00 ES, 3.10 ES, and 3.20 ES

QOpenGLWidget允许在平台支持时使用不同的OpenGL版本和配置文件。

需要在main.cpp中的QApplication之前调用QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());

相关推荐
尘浮生几秒前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
hopetomorrow14 分钟前
学习路之PHP--使用GROUP BY 发生错误 SELECT list is not in GROUP BY clause .......... 解决
开发语言·学习·php
小牛itbull24 分钟前
ReactPress vs VuePress vs WordPress
开发语言·javascript·reactpress
请叫我欧皇i33 分钟前
html本地离线引入vant和vue2(详细步骤)
开发语言·前端·javascript
闲暇部落35 分钟前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
GIS瞧葩菜1 小时前
局部修改3dtiles子模型的位置。
开发语言·javascript·ecmascript
chnming19871 小时前
STL关联式容器之set
开发语言·c++
熬夜学编程的小王1 小时前
【C++篇】深度解析 C++ List 容器:底层设计与实现揭秘
开发语言·数据结构·c++·stl·list
GIS 数据栈1 小时前
每日一书 《基于ArcGIS的Python编程秘笈》
开发语言·python·arcgis
Mr.131 小时前
什么是 C++ 中的初始化列表?它的作用是什么?初始化列表和在构造函数体内赋值有什么区别?
开发语言·c++