我正在使用 qt 5.0.2 (Windows x64) 。问题是 qt 只支持 OpenGL 3 函数,例如我不能使用 glBegin()、glortho() 等。你知道如何在 qt 中使用 OpenGL 1.x 吗?
2 回答
您从哪里得到 Qt 5 仅支持 OpenGL >= 3.0 的(错误)想法?Qt 本身支持所有当前的桌面 OpenGL 版本和配置文件(从 1.1 到 4.3,Core/Compability)以及 OpenGL ES(1.1 到 3.0)。
无论如何,您是否使用 Windows 的二进制 OpenGL ES 2 下载(通过 ANGLE)?如果是这样,请下载 Desktop GL 版本(或自己构建并传递-opengl desktop
给配置)。
请注意,一般来说,
- 您需要支持您要求的版本的驱动程序(fi OS X 10.8 最高支持 3.2)
- 您需要一个与您要使用的 GL 版本相匹配的 Qt 版本
- Qt 的某些部分需要某些 GL 版本:QtQuick2 需要 OpenGL >= 2.0 或 ES 2.0(如果 OpenGL >= 3.2,则必须使用兼容性配置文件)
我在我想要调用 OpenGL 函数的 Qt 应用程序中使用它作为标题“gl.h”:
#ifndef GL_H
#define GL_H
#ifdef __APPLE__
#include <GL/glew.h>
#include <GLUT/glut.h>
#else
#include <GL/glew.h>
#include <GL/glut.h>
#endif
#endif // GL_H
请注意,您需要安装正确的 OpenGL、GLEW 和 GLUT 版本才能使此包含正常工作。如果您使用 MinGW,请构建 GLEW 和 GLUT 以使用 MinGW。如果您使用 Visual C++ 2010,请将它们构建为支持 Visual C++ 2010。
我的 mainwindow.cpp 的一部分:
#include "gl.h"
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "about.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_glWidget = new GLWidget();
this->setCentralWidget(m_glWidget);
}
MainWindow::~MainWindow()
{
delete ui;
}
在此处查看此代码以获取完整的上下文: https ://bitbucket.org/pcmantinker/csc-4356/src/2843c59fa06d0f99d1ba90bf8e328cbb10b1cfb2/project2?at=master
我的代码是 Qt 4.x,但应该很容易移植到 Qt 5。此外,这里是我在 2012 年秋季拍摄的课程网页的参考:http: //csc.lsu.edu/~kooima /csc4356/index.html
它包括适用于 Visual C++ 2010 和 MinGW 的 Windows 环境的预构建 dll。