码迷,mamicode.com
首页 > 其他好文 > 详细

Qt4.3.4下面创建一个OpenGL 窗口

时间:2014-06-06 14:07:31      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

直接上代码:

NeHeWidget.h

bubuko.com,布布扣
#include <QtOpenGL/qgl.h>

class NeHeWidget:public QGLWidget
{
Q_OBJECT

public:
    NeHeWidget( QWidget* parent=0 );
    ~NeHeWidget();
    
protected:
    void initializeGL();
    void paintGL();
    void resizeGL(int width,int height);
    
};
bubuko.com,布布扣

NeHeWidget.cpp

bubuko.com,布布扣
#include "NeHeWidget.h"

NeHeWidget::NeHeWidget( QWidget* parent )
    :QGLWidget( parent )
{
    setGeometry( 50,50,640,480 );
    setWindowTitle( "OpenGL Framework" );//setCaption( "OpenGL Framework" );
}


NeHeWidget::~NeHeWidget()
{}


void NeHeWidget::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 );
                                        //进行最好的透视修正
}


//任何你想在屏幕上显示的东东都将在此段代码中出现。
//此函数包括了所有的绘图代码。

//如果你了解OpenGL,可以在glLoadIdentity()调用之后,函数返回之前
//,试着添加一些OpenGL代码来创建基本的图形

void NeHeWidget::paintGL()
{
    //将屏幕清除城我们前面所决定的颜色,清除深度缓存并重置场景
    glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
        //清除屏幕和深度缓存
    glLoadIdentity();
        //重置当前的模型观察矩阵

}


void NeHeWidget::resizeGL( int width,int height )
{
    if( height==0 )
    {
        height=1;    //防止height=0;
    }
    
    glViewport( 0,0,(GLint)width,(GLint)height );        //重置当前视口(Viewport)
    glMatrixMode( GL_PROJECTION );                        //选择投影矩阵
    glLoadIdentity();                                    //重置投影矩阵
    
    //glPerspective( 45.0,(GLfloat)width/(GLfloat)height,0.1,100.0 );        //建立透视投影矩阵
    gluPerspective( 45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0 );
    
    //glMatrixModel( GL_MODELVIEW );                        //选择模型观察矩阵
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();                                    //重置模型观察矩阵
    
}
bubuko.com,布布扣

main.cpp

bubuko.com,布布扣
#include <QApplication>
#include "NeHeWidget.h"

int main( int argc,int argv[] )
{
    bool fs=true;
    QApplication app( argc,(char**)&argv[0] );
    NeHeWidget w(0);
    //app.setMainWidget(&w);        //Qt 3.x支持setMainWidget,但是Qt4已经取消了对setMainWidget的支持。
    w.show();
    return app.exec();
}
bubuko.com,布布扣

 

 

Qt4.3.4下面创建一个OpenGL 窗口,布布扣,bubuko.com

Qt4.3.4下面创建一个OpenGL 窗口

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/tiancun/p/3766728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!