参考 http://blog.csdn.net/myths_0/article/details/24431597

用glut绘制一个茶壶

一句话,继承QGLWidget,实现下面三个函数,用子类定义窗口就行了。

三个函数:

    void initializeGL();
void paintGL();
void resizeGL(int width, int height);

下面是我的QGLWidget的子类的源码。

GLWidget.h

#pragma once
#include "qgl.h"
#include <gl/GLU.h>
#include <OpenGL/GLUT.H> class GLWidget : public QGLWidget{
    Q_OBJECT public:
    GLWidget(QWidget *parent = nullptr) :QGLWidget(parent){};
    ~GLWidget(); protected:
    void initializeGL();
    void paintGL();
    void resizeGL(int width, int height);     void keyPressEvent(QKeyEvent *e);
};

GLWidget.cpp

#include "GLWidget.h"

GLWidget::~GLWidget(){}

void GLWidget::initializeGL(){
    glShadeModel(GL_SMOOTH);
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glClearDepth(1.0);
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LEQUAL);
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
} void GLWidget::paintGL(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    glScalef(0.1,0.1,0.1);
    gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
    glutWireTeapot(2);
} void GLWidget::resizeGL(int width, int height){
    glViewport(0, 0, (GLint)width, (GLint)height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0, (GLfloat)width / (GLfloat)height, 0.1, 100.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
} void GLWidget::keyPressEvent(QKeyEvent *e){
    
}

QT笔记 -- (6) opengl的更多相关文章

  1. Windows下Qt开发环境:OpenGL导入3DMax模型(.3DS)

    参考:http://blog.csdn.net/cq361106306/article/details/41876541 效果: 源代码: 解释: CLoad3DS.h为加载3DMax模型的头文件,C ...

  2. SharpGL学习笔记(七) OpenGL的变换总结

    笔者接触OpenGL最大的困难是: 经常调试一份代码时, 屏幕漆黑一片, 也不知道结果对不对,不知道如何是好! 这其实就是关于OpenGL"变换"的基础概念没有掌握好, 以至于对& ...

  3. Ubuntu中在QT中配置OpenGL

    之前搞实验室项目,博客有些天没有更新.现在学习需要,开始搞OpenGL+Ubuntu+QT. 搞了整整一天,由于是首次使用ubuntu,所以这ubuntu下配置qt和Opengl环境时走了很多的弯路, ...

  4. QT笔记之解决QT5.2.0和VS2012中文乱码 以及在Qt Creator中文报错

    转载:http://bbs.csdn.net/topics/390750169 VS2012 中文乱码 1.方法一: 包含头文件 #include <QTextCodec> ....... ...

  5. QT笔记之VS开发程序遇到的问题

    转载:http://www.cnblogs.com/li-peng/p/3644812.html 转载:http://www.cnblogs.com/csuftzzk/p/VS_Qt_Experien ...

  6. QT笔记之不规则窗口的实现

    QT实现的不规则窗口,是根据图片的形状显示 1.去标题栏 2.设置窗口背景为透明色 3.最后给窗口设置背景色 注:背景图为镂空的 格式为.png 图片资源下载:http://pan.baidu.com ...

  7. QT笔记之模态对话框及非模态对话框

    模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其 ...

  8. QT笔记之QLineEdit自动补全以及控件提升

    转载:http://www.cnblogs.com/csuftzzk/p/qss_lineedit_completer.html?utm_source=tuicool&utm_medium=r ...

  9. QT笔记之VS2010 Qt中导入qrc资源文件

    转载1:http://qimo601.iteye.com/blog/1404693 转载2:http://blog.sina.com.cn/s/blog_92cde3060101lobm.html 转 ...

随机推荐

  1. Linux中安装redis的phpredis扩展

    下载phpredis扩展 http://pecl.php.net/package/redis wget http://pecl.php.net/get/redis-4.0.2.tgz 需要环境配置文件 ...

  2. CSS3中的2D和3D转换知识介绍

    一  2D转换 转换是CSS3中具有颠覆性的特征之一,可以实现元素的位移.旋转.变形.缩放,甚至支持矩阵方式,配合即将学习的过渡和动画知识,可以取代大量之前只能靠Flash才可以实现的效果. 1.移动 ...

  3. Android截图<包括Alertdiaog>

    1.使用的系统内部的截屏方法…… 2. public class MainActivity extends AppCompatActivity { private static final Strin ...

  4. CommandType.Text

    CommandType.Text代表执行的是SQL语句CommandType.StoreProcedure代表执行的是存储过程CommandType代表要执行的类型 //返回DataTable的SQL ...

  5. C learn questions list

    \主 题: C语言面试题大汇总,个人觉得还是比较全地!!! 作 者: free131 (白日?做梦!) 信 誉 值: 100 最近因为找工作,收集了很多C语言方面方面的面试题以及答案.现在新工作搞定了 ...

  6. 八、frps服务端与nginx可共用80端口

    我的服务器,已经用nginx 做网站了,80端口只有一个,我还想我的frps一起使用,可以吗?这个是可以实现的,利用nginx的反向代理实现. 以下是在frps服务器上安装的nginx配置文件中设置的 ...

  7. c++里面的单冒号和双冒号

    c++ 中的单冒号与双冒号 1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned ...

  8. 解决utf8' codec can't decode byte 0xe5 in position 0: unexpected end of data

    使用unicode对象的话,除了这样使用u标记,还可以使用unicode类以及字符串的encode和decode方法. unicode类的构造函数接受一个字符串参数和一个编码参数,将字符串封装为一个u ...

  9. 2019-03-28 Python SQL 的注释

    SQL Server 多行注释 : ctrl + k + c SQL Server 单行注释:  -- Python 单行注释:# Python多行注释:''' '''

  10. JS实现缓存运动

                                                                                                      JS ...