百度的网站名,深圳市手机网站建设品牌,网站怎么引蜘蛛,手机网站404页面模板本文是参照了两个文章编写的。
一是QML的例子#xff1a;Scene Graph - OpenGL Under QML | Qt Quick 6.6.1
二是关于SceneGraph的介绍#xff1a;Qt Quick Scene Graph | Qt Quick 6.2.11
这里我提取一下重点方便大家理解。
一个QML程序只能用一种计算机图形接口。不能有…本文是参照了两个文章编写的。
一是QML的例子Scene Graph - OpenGL Under QML | Qt Quick 6.6.1
二是关于SceneGraph的介绍Qt Quick Scene Graph | Qt Quick 6.2.11
这里我提取一下重点方便大家理解。
一个QML程序只能用一种计算机图形接口。不能有的组件用OpenGL、有的用Vulkan、有的用Direct 3D等渲染都是渲染到窗口上的而不是组件上窗口发出 QQuickWindow::beforeSynchronizing信号后可以保证GUI线程是阻塞的。因此我们连接该信号在该信号的槽函数中获取渲染时需要的GUI的属性值因为GUI线程阻塞因此属性值不会发生变化。
1. 编写代码由于本例代码过长因此将代码放到了gitee上。
EniacCheng/my-qml-demo - Gitee.com
这里将重点介绍一下。
一、首先在main函数中调用QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);。设置整个程序使用OpenGL接口进行渲染。 二、创建openglitem类。该类就是一个普通的C定义的QML元素类型见【QML COOK】- 006-用C定义一个QML元素类型-CSDN博客。它的所用就是接收窗口信号为OpenGL的渲染提供参数。
三、在openglitem中链接QQuickWindow::beforeSynchronizing信号注意连接方式为Qt::DirectConnection。因为此时GUI线程一定是阻塞的因此使用Qt::DirectConnection方式没有问题。 四、在QQuickWindow::beforeSynchronizing信号的槽函数sync中将窗口的宽高值传给OpenGL渲染类。 五、定义openglrenderer类该类是OpenGL的渲染类。该类的作用是用OpenGL接口渲染一个绿色正方形。
OpenGLRenderer::prepareShaderProgram()用于设置shader程序。 OpenGLRenderer::render()用于渲染 2. 运行程序