在QT中使用OPENGL的步聚

该文详细阐述了OpenGL的初始化过程,包括初始化函数、启用flag、创建缓存对象、编译链接shader以及启用和配置缓存。在绘制阶段,涉及清屏、绑定shader、更新缓存数据、指定渲染方式及绘制指令。整个流程在Qt环境中进行,使用了QOpenGLWidget和QOpenGLExtraFunctions相关类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OPENGL初始化:

 

  1. 初始化OpenGL函数 : initializeOpenGLFunctions
  2. 初始化各种flag :  glEnable
  3. 创建各种缓存对象 : VAO,VBO
  4. 创建并链接shader : 
    1. QOpenGLShaderProgram::addShaderFromSourceCode 
    2. QOpenGLShaderProgram::Link
  5. 启用shader :  QOpenGLShaderProgram::bind
  6. 启用缓存 :     m_vao.bind();
  7. 绑定缓存(加载不变的数据):      m_vao.bind();
  8. 绑定shader的缓存数据(告诉OpenGL如何从缓存中读取数据到shader中)
    1. setAttributeBuffer(0, GL_FLOAT, 0, 3, 0);
    2. enableAttributeArray(0);
  9. 释放缓存
  10. 释放shader

OPENGL绘制:

        1.清屏

                 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        2.启用shader

               QOpenGLShaderProgram::bind();

        3.绑定shader的全局数据(例如摄像机变换矩阵,投影矩阵等)

                        


        4.启用缓存()

                    // 绑定本模型需要的顶点缓冲
                    bind();
        5.绑定缓存(VBO)(加载变化的数据)

                    // 绑定本模型需要的顶点缓冲
                    bind();
                    setUsagePattern(QOpenGLBuffer::StaticDraw);
                    allocate(m_vertices, m_vertecesCount * 3 * sizeof(float));

        6.绑定shader的缓存数据(告诉OpenGL如何从缓存中读取数据到shader中)

                        // 针对本模型, 设置如何渲染
                          setAttributeBuffer(0, GL_FLOAT, 0, 3, 0);
                          enableAttributeArray(0);

        7.绘制(使用shader读取缓存中的内容,转换为顶点,然后按照命令基于顶点绘制3D数据)

                        // 绘制模型
                        glDrawArrays(GL_POINTS, 0, m_vertecesCount);


        8.释放缓存

                        release();
        9.释放shader

                QOpenGLShaderProgram::release

1.在qwdiget应用中继承QOpenGLWidget和QOpenGLExtraFunctions
2.在qtquick应用中继承QObject和QOpenGLExtraFunctions
3.重载void initializeGL(),void paintGL()还有void resizeGL(int w, int h)
4. 在initializeGL中初始化绘制条件

5.在void paintGL()函数中进行绘制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由软件开发者

有你的鼓励,我会更加努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值