Qt + OpenGL 教程(三):线

参考上一篇:https://blog.csdn.net/heibaigezi/article/details/103755181

只需修改paintGL()函数中的glBegin(XXX)内容即可

void Widget::paintGL()//对OpenGL进行所有的设置。设置清除屏幕所用的颜色,打开深度缓存,启用smooth shading.等窗口创建之后才会被调用
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//清除屏幕和深度缓存
    glLoadIdentity();//重置当前的模型观察矩阵。在glLoadIdentity()调用之后,函数返回之前,添加代码来创建基本的形
    //目前所做的就是将屏幕清除成前面所决定的颜色,清除深度缓存并且重置场景,仍然没绘制任何东西。  
    glTranslatef(-1.5,  0.0, -6.0 );//移动的时候不是相对于屏幕中心移动,而是相对于当前所在屏幕位置
    
    glBegin(GL_LINES);
        glVertex3f(-1,-1,0);
        glVertex3f(1,1,0);
        glVertex3f(1,-1,0);
        glVertex3f(-1,1,0);
    glEnd();    
 
}

运行结果如下:

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QPainter 是 Qt 框架提供的一个画图工具,可以用于绘制 2D 图形,包括直线、矩形、椭圆、多边形等等。而 OpenGL 是一种跨平台的图形渲染 API,可以用于创建高性能的 3D 图形,支持硬件加速,可以在不同的操作系统和硬件上运行。 在 Qt 中,我们可以将 QPainter 和 OpenGL 结合起来使用,以实现更加复杂的图形绘制效果。一般的做法是,创建一个 QOpenGLWidget,然后在其上使用 QPainter 进行 2D 绘制,同时在其 paintGL() 函数中使用 OpenGL 进行 3D 渲染。 具体实现过程如下: 1. 创建一个 QOpenGLWidget,并重写其 paintGL() 函数: ```c++ void MyOpenGLWidget::paintGL() { // 使用 OpenGL 进行 3D 渲染 } ``` 2. 在 MyOpenGLWidget 类中添加一个 QPainter 成员变量: ```c++ class MyOpenGLWidget : public QOpenGLWidget { public: // ... private: QPainter m_painter; }; ``` 3. 在 MyOpenGLWidget::paintGL() 函数中使用 QPainter 进行 2D 绘制: ```c++ void MyOpenGLWidget::paintGL() { // 使用 OpenGL 进行 3D 渲染 // 开始 2D 绘制 m_painter.begin(this); // 绘制直线 m_painter.drawLine(QPointF(0, 0), QPointF(100, 100)); // 绘制矩形 m_painter.drawRect(QRectF(50, 50, 100, 100)); // 结束 2D 绘制 m_painter.end(); } ``` 需要注意的是,QPainter 和 OpenGL 都是基于 QPainterPath 的,因此我们可以在 QPainter 中使用一些和 OpenGL 相似的绘图命令,例如 drawLine、drawRect、drawEllipse 等等。 此外,我们还可以在 QPainter 中使用 OpenGL 的纹理映射功能,实现更加生动的图形效果。具体实现方法可以参考 Qt 官方文档中的 QOpenGLWidget 和 QPainter 教程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值