• H
    hengliu

    也可以用这个方法

    //引入头文件
    #include <QOpenGLFunctions_3_3_Core>

    //获取版本
    QOpenGLFunctions_3_3_Core *core = QOpenGLContext::currentContext()->versionFunctions<QOpenGLFunctions_3_3_Core>();

    //使用
    core->glCreateShader(GL_VERTEX_SHADER);

    posted in GuaiK故障处理 read more
  • H
    hengliu

    QT 和 OPenGL问题,在Qt开发中如果需要定义一个类,类中需要大量的gl命令该怎么写呢。。。。头文件改引入哪个才可以用这些gl命令呢

    posted in GuaiK故障处理 read more
  • H
    hengliu

    可以使用 update()把数据更新到 paintGL里

    QObject::connect(&time, SIGNAL(timeout()), this, SLOT(timeTT()));
    time.start();

    void mywidget::timeTT()
    {
    std::cout << ang << std::endl;
    ang += 0.1;
    update();
    }

    posted in GuaiK故障处理 read more
  • H
    hengliu

    @Zeroqt 和 OpenGL的基础问题 中说:

    导入头文件:

    #include <QDateTime>
    

    初始化代码:

    /* 将startTime设置为全局变量或放在类中作为属性 */
    /* 确保渲染代码能够访问到 */
    /* startTime记录程序启动的时刻 */
    qint64 startTime;    
    startTime = QDateTime::currentDateTime().toMSecsSinceEpoch();
    

    渲染代码

    // 计算出程序已经运行的时间(秒)
    qint64 timestamp = QDateTime::currentDateTime().toMSecsSinceEpoch();
    float t = (timestamp - startTime) / 1000.0;
    qDebug() << t;
    
    // 旋转 
    glm::mat4 model = glm::mat4(1.0f);
    model = glm::rotate(model, glm::radians(cos(t)*60.0f), glm::vec3(1.0f, 1.0f, 1.0f));
    

    这个代码如果没设置帧率会导致 运行卡顿 很长时间才更新下角度 所以 需要用QTimer *updateTimer; 来更新帧率
    添加代码如下:
    //全局对象
    QTimer *updateTimer;
    //构造函数中
    connect(updateTimer, SIGNAL(timeout()), this, SLOT(repaint()));
    updateTimer->start(1000 / 60);

    这样来设置帧率 可以使运行流畅

    posted in GuaiK故障处理 read more
  • H
    hengliu

    glm::mat4 model = glm::mat4(1.0);
    model = glm::rotate(model, (float)0.5, glm::vec3(1.0, 1.0, 1.0));
    

    这段代码中 是OpenGL教程中的基础模型矩阵那块的,在glfw中让模型自旋转 在 (float)0.5哪里 改成
    (float)glfwGetTime() 就可以了 但是在qt中并没有glfw库,所以如果是qt中该怎么写才行呢

    posted in GuaiK故障处理 read more