1. 目的:在Qt中使用Opengl函数绘制一个三角形;
2. 实现如下:
// myQtOpenglWindow.h
#ifndef MYQTOPENGLWINDOW_H
#define MYQTOPENGLWINDOW_H
#include <QtOpenGL/QtOpenGL>
#include <QtOpenGL/QGLWidget>
#include <QWidget>
class myQtOpenglWindow : public QGLWidget
{
Q_OBJECT
public:
explicit myQtOpenglWindow( QWidget* parent = 0, const char* name = 0, bool fs = false );\
~myQtOpenglWindow();
protected:
void initializeGL();
void paintGL();
void resizeGL( int width, int height );
void keyPressEvent(QKeyEvent *);
protected:
bool fullScreen;
signals:
public slots:
};
#endif // MYQTOPENGLWINDOW_H
// myQtOpenglWindow.cpp
#include "myqtopenglwindow.h"
#include <gl/GLU.h>
myQtOpenglWindow::myQtOpenglWindow( QWidget* parent, const char* name, bool fs )
:QGLWidget( parent )
{
//保存窗口是否为全屏的状态。
fullScreen = fs;
//设置窗口的位置,即左上角为(0,0)点,大小为640*480。
setGeometry( 0, 0, 640, 480 );
// 设置窗口的标题为“My's OpenGL Framework”。
//setCaption( "My's OpenGL Framework" );
// 如果fullscreen为真,那么就全屏显示这个窗口。
if ( fullScreen )
{
showFullScreen();
}
}
myQtOpenglWindow::~myQtOpenglWindow()
{
}
void myQtOpenglWindow::initializeGL()
{
glShadeModel(GL_SMOOTH);
glClearColor( 0.0, 0.0, 0.0, 0.0 );
glClearDepth( 1.0 );
glEnable( GL_DEPTH_TEST );
glDepthFunc( GL_LEQUAL );
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
return;
}
void myQtOpenglWindow::paintGL()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
glTranslatef(-1.5,0.0,-6.0);
glBegin(GL_TRIANGLES);
glVertex3f(0.0,1.0,0.0);
glVertex3f(-1.0,-1.0,0.0);
glVertex3f(1.0,-1.0,0.0);
glEnd();