我已经阅读了所有关于qt 4和5 opengl的问题。这一个是最近的OpenGL vs QOpenGL/QtOpenGL in Qt 5: differences and limitations?,我不知道为什么它被关闭,因为这是一个很好的问题。我看到它缺少的唯一方面是速度差异。
我也读过这个https://qt-project.org/forums/viewthread/22921有类似问题,但是来回约4比5,主要讨论新功能。
我的问题是,使用QT5的内置方法比直接使用opengl API制作自定义小部件要快吗?如果我担心性能,那么使用QT是一个糟糕的选择
编辑:
更具体一点,我需要使用physx,tcp / ip通信,以及大量快速更新顶点和网格。目标是尽可能接近实时。像渲染这样的东西不是一个问题,但qt的任何开销都是有害的。 (一切都是用C ++制作的3D)
答案 0 :(得分:1)
我认为你的问题和收到的评论中存在很多误解。问题的根源是“Qt”一词的使用非常松散。
Qt是一个大型跨平台应用程序开发框架。它结合了许多独立框架提供的功能。它提供了许多完全不与gui相关的功能。即跨平台容器,线程,变体,具有内省的元对象系统,定时器,网络,使用qtscript或javascript(通过qml),xml,json,状态机等编写脚本。 Qt用于编写Web服务,例如,在任何地方都没有一行UI代码。
在用户界面方面,Qt为您提供four UI toolkits。完全由您选择最终使用的工具包。您还可以混合搭配所有这些 - 您可以在一个工具包中实现UI的一部分,在另一个工具包中实现部分。一切都取决于您的要求。
我认为“Qt5”是指Qt Quick 2,它是使用QML作为描述/脚本平台的场景图和UI工具包的实现。如果你只需要一个2D,基于场景图的工具包,那么Qt Quick 2就是一个不错的选择。它不提供任何3D功能,因此对于3D功能,您可以自己动手。 Qt不会妨碍你 - 事实上,它会对你有所帮助,因为它为OpenGL提供了一个可移植的包装器API,它隐藏了访问OpenGL的一些平台差异。它还提供ANGLE,一个在Direct3D之上的OpenGL捆绑实现。这使您可以在OpenGL中进行开发,同时仍然在Windows上定位Direct3D。
对于TCP / IP和一般的非ui功能,你应该使用Qt - 它让生活变得非常简单。对于3D,您将通过Qt提供的包装器直接使用OpenGL。然后,您可以在Qt的OpenGL和ANGLE构建之间进行选择,以决定是直接使用平台OpenGL驱动程序,还是使用在DirectX(ANGLE)之上实现的OpenGL。既然你使用了physx,那么你已经有了很好的nvidia驱动程序,以及一个不错的OpenGL实现,所以不首选使用ANGLE。这就是我的看法。