基于QT 实现的LearnGL例子

        LOpenGL 是学习OpenGL非常好的资料,网址是:LearnOpenGL CN (learnopengl-cn.github.io)

        最近复习OpenGL,基于QT,拷贝实现了LearnGL的一些例子。下载地址:

        QT+OpenGL+学习基于QT开发OpenGL应用

        例子效果如下,一些代码如有问题,请参考LearnOpenGL网站。

 

 

         例子中的主要类说明如下:

1. OpenGL视图类OpenGlView(openglview.h),继承了QOpenGLWidget,QOpenGLExtraFunctions

class OpenGlView : public QOpenGLWidget,public QOpenGLExtraFunctions
{
public:    
        OpenGlView();
protected:    
        virtual void initializeGL() override;    
        virtual void paintGL() override;    
        virtual void resizeGL(int w, int h) override;    
        void keyPressEvent(QKeyEvent *event) override;    
        void mousePressEvent(QMouseEvent *event)override;    
        void mouseReleaseEvent(QMouseEvent *event)override;   
        void mouseDoubleClickEvent(QMouseEvent *event)override;    
        void mouseMoveEvent(QMouseEvent *event)override;    
        void wheelEvent(QWheelEvent *event)override;
private slots:    
        void OnTimerUpdate();
private:    
        AbstractOpenGLRender* myPreRender; //LearnOpenGL例子的抽象类   
        QTimer* myTimer;
};

视图类的主要逻辑是在paintGL方法中,调用例子的渲染含方法:

void OpenGlView::paintGL()
{   
        AbstractOpenGLRender* render = OpenGLRenders::CurrRender();    
        if(myPreRender != render)    
        {        
                if(myPreRender != nullptr)           
                myPreRender->releaseGLRS(this);       
                myPreRender = render;   
        }    
        if(render != nullptr)    
        {        
                render->ResetSize(this->width(),this->height());        
                render->renderGL(this);    
        }
}

2. 例子的具体实现在OpenGLLearn目录

3. 2D游戏的代码在2DGame目录

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值