Qt中的QGLWidget简介

摘要:
我对QGLWidget的理解是,它继承了QWidget,并实现了一些额外的OpenGl操作,可以总结如下:1.使用QWidget的句柄winID返回的HWND来初始化OpenGl绘图设备,并使用虚拟函数initializeGL()来实现它。用户可以重置此功能。将OpenGL手动添加到Qt的过程基本上类似于QGL Widget的内部实现。如果您想将D3D添加到QT中,这会有点麻烦,因为没有QGLWidget那么容易使用,而且过程类似于手动将OpenGL添加到QT。

我对QGLWidget的理解就是,其从QWidget继承,额外实现了一些OpenGl的操作,归纳如下:
1、使用QWidget的句柄winID返回的HWND对OpenGl的绘制设备进行初始化,用一个虚函数initializeGL()实现,用户可以重置这个函数。

2、使用resizeGL(int width,int height);对GL的视口进行变换。同样是一个虚函数,该函数在调用initializeGL后会调用一次。

3、paintGL();每帧需要绘制的代码就写在这个函数内。

4、killOpenGL的部分QGLWidget内部的析构函数应该实现了,无需用户操作。

  自己手动地将OpenGL加入Qt的流程与QGLWidget内部实现的基本相似。假设你希望将3D图形绘制在一个QWidget上,首先获得QWidget的句柄winID,用其对OpenGL初始化,假设初始化的代码写在InitGL();然后将绘制代码写在一个自定义的函数中,如:RenderGL()。在QT程序初始化时调用InitGL(),接着启用一个QTimer时钟绑定RenderGL(),让RenderGL()每隔一段时间执行一次。

  如果想把D3D加入QT中,就稍稍麻烦些,因为没有QGLWidget这么好用的QWidget,其流程和手动加OpenGL到QT是类似的。这里不累述了,想详细了解的可以留言。

免责声明:文章转载自《Qt中的QGLWidget简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ECharts插件介绍(图表库)NX二次开发-UFUN获取面的内外边界UF_MODL_ask_loop_list_item下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux编程之信号量

一、概念 linux信号量:   允许多个线程同时进入临界区,可以用于进程间的同步。 和互斥锁(mutex)的区别:   互斥锁只允许一个线程进入临界区。 所在头文件:   semaphore.h 二、主要函数 初始化函数       int sem_init(sem_t *sem, int pshared, unsigned int value)    ...

Java基础-对象的内存分配与初始化(一定要明白的干货)

首先,什么是类的加载?类的加载由类加载器执行.该步骤将查找字节码(classpath指定目录),并从这些字节码中创建一个Class对象。Java虚拟机为每种类型管理一个独一无二的Class对象。也就是说,每个类(型)都有一个Class对象。一旦某个类的Class对象被载入到内存,他就被用来创建这个类的所有对象。 类的加载会发生在什么时候呢?所有的类都是在其...

12.bss段的初始化

12.bss段的初始化 在C代码:有初始化全局的数据段,局部的栈,malloc部分的堆,未初始化的全局的bss段。 从上面的编译的信息知道: Bss段的起始地址:0001052c Bss段的结束地址:00010534 我们的hello变量的地址:00010530是落在bss段里的地址的。所以是存在bss段的。这就是未初始化的全局变量存放在bss段...

SpringBoot项目启动时执行初始化操作

SpringBooot中的CommandLineRunner接口会在所有Spring Beans初始化之后,SpringApplication.run()之前执行。 1.添加pom引用 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.o...

三种方式创建bean对象在springIOC容器中初始化、销毁阶段要调用的自定义方法

1. 使用@Bean注解定义initMethod和destroyMethod 所谓initMethod和destroyMethod,是指在springIOC容器中,对于bean对象执行到初始化阶段和销毁阶段所调用的方法,其并不是初始化方法和销毁方法本身。 对于单例模式,initMethod会在创建容器时,构造方法、属性赋值方法完成之后调用,destroyM...

K8S从入门到放弃系列-(1)环境初始化

一、系统规划  主机名 IP   组件  k8s-master01 10.10.0.18 etcd、kube-apiserver、kube-controller-manager、kube-scheduler  k8s-master02 10.10.0.19 etcd、kube-apiserver、kube-controller-manager、...