OpenGL入门第二步:颜色、纹理设置(解析)

这篇博客主要介绍了OpenGL中如何设置颜色和纹理。在设置颜色部分,通过使用QColor变量并结合QElapsedTimer定时器,实现了颜色随时间变化的效果。在paintGL和initializeGL函数中对片段着色器进行操作,实现颜色更新。对于纹理设置,博客讲解了如何使用QOpenGLTexture类加载和应用纹理,并在顶点数据中包含纹理坐标,以在paintGL函数中更新着色器的纹理值。

OpenGL入门第一步:创建窗口、重写虚函数-优快云博客

OpenGL入门第三步:矩阵变换、坐标系统-优快云博客

OpenGL入门第四步:摄像机视角变换与交互-优快云博客

OpenGL入门第五步:基础光照-优快云博客

 OpenGL入门第六步:材质-优快云博客

 OpenGL入门第七步:光照贴图-优快云博客

OpenGL入门第八步:投光物-优快云博客 

OpenGL入门第九步:多光源-优快云博客 

目录

1、设置颜色

具体代码

2、设置纹理

具体代码


1、设置颜色

添加QColor变量,如果需要颜色随时间变化,那就再添加一个定时器QElapsedTimer以及重写虚函数timerEvent

initializeGL()函数设置片段着色器中颜色变量

如果需要设置时间别忘了开启计时器

timerEvent函数里写颜色随时间的变化,然后调用update刷新,会触发paintGL。

paintGL函数中给片段着色器赋值,让重新设置颜色。

具体代码

#ifndef OPENGLWIDGET_H
#define OPENGLWIDGET_H

#include <QOpenGLWidget>
#include <QOpenGLShaderProgram>
#include <QOpenGLBuffer>
#include <QOpenGLVertexArrayObject>
#include <QOpenGLTexture>
#include <QElapsedTimer>

QT_BEGIN_NAMESPACE
namespace Ui { class openGLWidget; }
QT_END_NAMESPACE

class openGLWidget : public QOpenGLWidget
{
    Q_OBJECT

public:
    openGLWidget(QWidget *parent = nullptr);
    ~openGLWidget();
protected:
    virtual void timerEvent(QTimerEvent *event) override;
    virtual void initializeGL() override;
    virtual void resizeGL(int w, int h) override;
    virtual void paintGL() override;

private:
    QOpenGLShaderProgram shaderProgram;
    QOpenGLBuffer vbo;
    QOpenGLBuffer ebo {QOpenGLBuffer(QOpenGLBuffer::IndexBuffer)};
    QOpenGLVertexArrayObject vao;
    QColor color;
    QElapsedTimer time;

private:
    Ui::openGLWidget *ui;
};
#endif // OPENGLWIDGET_H
#include "openGLWidget.h"
#include "./ui_openGLWidget.h"

#include <QOpenGLFunctions>
#include <QtMath>

openGLWidget::openGLWidget(QWidget *parent)
    : QOpenGLWidget(parent)
    , ui(new Ui::openGLWidget)
{
    ui->setupUi(this);
}

openGLWidget::~openGLWidget()
{
    makeCurrent();
    vao.destroy();
    vbo.destroy();
    ebo.destroy();
    doneCurrent();
    delete 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值