LOpenGL 是学习OpenGL非常好的资料,网址是:LearnOpenGL CN (learnopengl-cn.github.io)
最近复习OpenGL,基于QT,拷贝实现了LearnGL的一些例子。下载地址:
例子效果如下,一些代码如有问题,请参考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目录