1、打开VS2012,创建一个QT工程,起名“OpenGLProTest”
2、在设置界面一定勾选“OpenGL”选项
3、“下一步”、“Finish”
4、在“Form Files”文件夹或者其他文件夹上右击,选择“添加”->“类”,然后设置如图所示
5、点击“Finish”
6、这时创建的工程可能有错误,不要紧,在项目“openglProTest”上右击,选择“Convert project to QMake generated project”,点击“确定”,OK,错误没了!!!
7、双击打开项目中的ui文件,在中间窗口中拖入一个“Widget”控件,如图所示
8、在除了控件外的其他空白区域右击选择“布局”->“栅格布局”
9、在控件上右击选择“提升为”
10、在提升的类名称这里输入“openglwindow”,基类名称为“QWidget”,然后“添加”,选择“全局包含”,最后“提升”
11、输入测试代码
openglWindow.h
#ifndef OPENGLWINDOW_H
#define OPENGLWINDOW_H
#include <QGLWidget>
#include <qopenglfunctions_3_3_core.h>
class openglWindow : public QGLWidget,protected QOpenGLFunctions_3_3_Core
{
Q_OBJECT
public:
openglWindow(QWidget *parent);
~openglWindow();
void initializeGL();
void resizeGL(int width,int height);
void paintGL();
private:
};
#endif // OPENGLWINDOW_H
#define OPENGLWINDOW_H
#include <QGLWidget>
#include <qopenglfunctions_3_3_core.h>
class openglWindow : public QGLWidget,protected QOpenGLFunctions_3_3_Core
{
Q_OBJECT
public:
openglWindow(QWidget *parent);
~openglWindow();
void initializeGL();
void resizeGL(int width,int height);
void paintGL();
private:
};
#endif // OPENGLWINDOW_H
OpenGLwindow.cpp
#include "openglwindow.h"
openglWindow::openglWindow(QWidget *parent)
: QGLWidget(parent)
{
QGLFormat format;
format.setProfile(QGLFormat::CoreProfile);
format.setVersion(3,3);
setFormat(format);
}
openglWindow::~openglWindow()
{
}
void openglWindow::initializeGL()
{
initializeOpenGLFunctions();//初始化OpenGL函数
glClearColor(0.0f,0.0f,0.0f,0.0f);//设置全局变量
}
void openglWindow::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);//清理屏幕
}
void openglWindow::resizeGL(int width,int height)
{
Q_UNUSED(width);
Q_UNUSED(height);
}
openglWindow::openglWindow(QWidget *parent)
: QGLWidget(parent)
{
QGLFormat format;
format.setProfile(QGLFormat::CoreProfile);
format.setVersion(3,3);
setFormat(format);
}
openglWindow::~openglWindow()
{
}
void openglWindow::initializeGL()
{
initializeOpenGLFunctions();//初始化OpenGL函数
glClearColor(0.0f,0.0f,0.0f,0.0f);//设置全局变量
}
void openglWindow::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);//清理屏幕
}
void openglWindow::resizeGL(int width,int height)
{
Q_UNUSED(width);
Q_UNUSED(height);
}
12、运行结果如下