Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OpenGL重新构建Qt5.0.2,如何使用Qt Creator_Qt_Qt Creator_Qmake_Qt5 - Fatal编程技术网

使用OpenGL重新构建Qt5.0.2,如何使用Qt Creator

使用OpenGL重新构建Qt5.0.2,如何使用Qt Creator,qt,qt-creator,qmake,qt5,Qt,Qt Creator,Qmake,Qt5,我需要将代码从C++/OpenGL和Config.txt环境移动到一个用户界面友好的空间。我被告知在这里尝试Qt,并将其安装在Windows中 我遇到的问题是,它不支持开箱即用的OpenGL版本,我必须使用-OpenGL desktop参数重建 第一次这样做,但能够按照指示(和一吨谷歌)和它“成功”建成。我现在的问题是我不确定如何使我的文件与Qt Creator一起工作 我将所有文件夹从git创建的qt5文件夹复制到qt5.0.1/5.0.1/Src中的Src文件夹,但hellogl示例仍然无法

我需要将代码从C++/OpenGL和Config.txt环境移动到一个用户界面友好的空间。我被告知在这里尝试Qt,并将其安装在Windows中

我遇到的问题是,它不支持开箱即用的OpenGL版本,我必须使用-OpenGL desktop参数重建

第一次这样做,但能够按照指示(和一吨谷歌)和它“成功”建成。我现在的问题是我不确定如何使我的文件与Qt Creator一起工作

我将所有文件夹从git创建的qt5文件夹复制到qt5.0.1/5.0.1/Src中的Src文件夹,但hellogl示例仍然无法构建

我检查了选项,它指向Qt5.0.1/5.0.1/msvc2010/bin中的qmake,因此我将qmake.exe从qtbase/qmake复制到此文件夹(重命名旧文件夹),现在Qt Creator在我的Windows系统上构建hellogl示例


我担心的是,我这样做对吗?我摸索了一下,得到了一些东西,但这是我从git构建qt5之后应该采取的方式吗?如果不是的话,我应该怎么做才能让它与Qt Creator一起工作?

利用现代OpenGL的典型方法Qt中的功能集(后固定函数管道)是利用扩展牧马人(GLEW),在Qt包含任何OpenGL头之前,找到图形驱动程序支持的所有OpenGL函数

要实现这一点,只需执行以下操作:

  • 如果您还没有,请下载(或者根据需要下载另一个扩展牧马人)并将其安装到您的系统路径中。我建议使用32位软件包,因为它更易于使用

  • #在源代码中包含glew.h
    ,然后再包含可能使用OpenGL头的任何其他Qt头。为了安全起见,将glew.h作为源代码中包含的第一个头

  • 在Qt项目的.pro文件中添加行
    LIBS+=-lGLEW
    (mac/linux)或
    LIBS+=-lglew32
    (windows)


  • 注意:在实现使用后固定函数管道设施的应用程序时,要小心使用Qt OpenGL包装。Qt5的OpenGL包装器都使用OpenGL ES 2.0规范运行,当与OpenGL 3/4代码交织时,可能会导致问题。由于QGLWidget大量使用固定函数转换堆栈,即使QPainter在对QGLWidget执行过度绘制时也会变得麻烦。我目前正在开发一个名为QGLX的库,该库提供了替代的Qt包装器,旨在符合现代桌面OpenGL规范。Qt4和Qt5的测试版有望在今年年底发布

    所以我会在标准QtWindows版本中使用GLEW,而不是完全从Git重建?谢谢你的回复,到目前为止,我已经对重建后的系统做了一些准备。