要在 Qt 中使用 QOpenGLWidget 绘制一个圆柱体,可以使用 OpenGL 的函数库 gluCylinder 来实现。以下是一个简单的示例代码:

#include <QOpenGLWidget>
#include <GL/glu.h>

class MyGLWidget : public QOpenGLWidget
{
public:
    MyGLWidget(QWidget *parent = nullptr) : QOpenGLWidget(parent) {}

protected:
    void initializeGL() override
    {
        glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    }

    void resizeGL(int w, int h) override
    {
        glViewport(0, 0, w, h);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(45.0, (double)w / (double)h, 0.1, 100.0);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
    }

    void paintGL() override
    {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();

        gluLookAt(0.0, 0.0, 5.0,  // eye position
                  0.0, 0.0, 0.0,  // center position
                  0.0, 1.0, 0.0); // up vector

        glColor3f(1.0f, 1.0f, 1.0f);
        gluCylinder(gluNewQuadric(), 1.0, 1.0, 2.0, 32, 32);
    }
};

在这个示例中,我们创建了一个自定义的 QOpenGLWidget 子类,并重写了三个 OpenGL 相关的函数:initializeGL、resizeGL 和 paintGL。

在 initializeGL 函数中,我们设置了清除颜色为黑色。

在 resizeGL 函数中,我们设置了视口的大小以及投影矩阵。

在 paintGL 函数中,我们首先使用 glClear 函数清除颜色缓冲区和深度缓冲区,并重置模型视图矩阵。

然后使用 gluLookAt 设置摄像机的位置和观察点。

最后调用 gluCylinder 函数绘制一个半径为 1,高度为 2 的圆柱体。

请注意,为了使用 gluCylinder 函数,需要包含 GL/glu.h 头文件,并链接 OpenGL 和 GLU 库。

可以将 MyGLWidget 添加到一个窗口中来显示圆柱体:

#include <QApplication>
#include <QMainWindow>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QMainWindow window;
    MyGLWidget *glWidget = new MyGLWidget(&window);
    window.setCentralWidget(glWidget);
    window.show();

    return a.exec();
}

这是一个简单的使用 QOpenGLWidget 绘制圆柱体的示例,你可以根据自己的需求进行修改和扩展。


原文地址: https://www.cveoy.top/t/topic/pmkQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录