Qt QOpenGLWidget 绘制二维图形 - 替代 gluNewQuadric()
在 Qt 中,可以使用 QOpenGLWidget 接口替换 gluNewQuadric() 函数来绘制二维图形。以下示例代码展示了如何使用 QOpenGLWidget 绘制一个红色的四边形。
#include <QOpenGLWidget>
#include <QOpenGLFunctions>
class MyOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
public:
MyOpenGLWidget(QWidget *parent = nullptr) : QOpenGLWidget(parent) {}
protected:
void initializeGL() override
{
initializeOpenGLFunctions();
}
void paintGL() override
{
glClear(GL_COLOR_BUFFER_BIT);
// 绘制二维图形
glBegin(GL_QUADS);
glColor3f(1.0, 0.0, 0.0); // 设置颜色为红色
glVertex2f(-0.5, -0.5); // 设置顶点坐标
glVertex2f(0.5, -0.5);
glVertex2f(0.5, 0.5);
glVertex2f(-0.5, 0.5);
glEnd();
}
};
在上面的代码中,我们创建了一个自定义的 OpenGL 窗口部件 MyOpenGLWidget,并重写了它的 initializeGL() 和 paintGL() 函数。在 initializeGL() 函数中,我们调用了 initializeOpenGLFunctions() 来初始化 OpenGL 函数。在 paintGL() 函数中,我们使用 OpenGL 的绘制函数来绘制二维图形,其中 glBegin(GL_QUADS) 表示开始绘制四边形,glColor3f(1.0, 0.0, 0.0) 表示设置颜色为红色,glVertex2f() 表示设置顶点坐标,glEnd() 表示结束绘制。
将 MyOpenGLWidget 添加到 Qt 的窗口中,可以通过如下代码实现:
#include <QApplication>
#include <QMainWindow>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow mainWindow;
MyOpenGLWidget *openGLWidget = new MyOpenGLWidget(&mainWindow);
mainWindow.setCentralWidget(openGLWidget);
mainWindow.show();
return a.exec();
}
在上面的代码中,我们创建了一个主窗口 QMainWindow,并将 MyOpenGLWidget 作为中央部件添加到主窗口中,然后显示主窗口。
这样,就使用 QOpenGLWidget 接口替换了 gluNewQuadric() 函数来绘制二维图形。
原文地址: https://www.cveoy.top/t/topic/pltj 著作权归作者所有。请勿转载和采集!