Qt中第一个Opengl程序

本文主要介绍了在Qt中使用OpenGL编程时遇到的常见错误及其解决方法,包括gluPerspective函数找不到、链接错误以及Qt Creator中设计界面类的编译问题。解决方法涉及在.pro文件中添加库、清理并重新构建项目等。
摘要由CSDN通过智能技术生成

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();
   
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值