Qt QOpenGLWidget 使用 gluCylinder 绘制圆柱体
要在 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 著作权归作者所有。请勿转载和采集!