Qt Creator增强套装16.9.27.12更新 HI,大家好,这里是jiangcaiyang。我们很高兴地告诉大家,我们将要发布Qt Creator增强套装新的版本了!这一次呢,主要是应大家强烈的要求,更新了我们的聊天神器——萌梦聊天室,现在它不再频繁地崩溃以及暂时性地无法回消息了。这个聊天室呢,以后将会成为一个基础,大家有什么困难问题的呢,可以及时向聊天室进行反馈,我们会耐心地回答大家的问题,希望能够给大家的开发带来便利。
萌梦聊天室16.9.23.77更新 App名称:萌梦聊天室 App格式:apk(安卓适用,测试机型Android 4.4 红米2)、exe(Windows 10) App大小:18.2MB(Android)、27.7MB(Windows 10)
使用QQuickWidget和QQmlApplicationEngine的不同之处 昨天为了将我们以前制作的产品从QQmlApplicationEngine - based移植到Qt Widgets应用当中,我做了一些修改。其中一个重要的部分就是将以前QQmlApplicationEngine的代码移植到QQuickWidget中。但是我发现其中有不一样的地方,导致我原先的产品并不能工作。
Qt Creator插件制作小插曲:有关QT_NO_CAST_FROM_ASCII的注意事项 这两天制作了两个Qt Creator增强套装的两个插件,其实也是非常简单的,但是其实花了我超过四天的时间,为什么呢?因为我之前很长一段时间都是在Linux下开发的,一切安好,没有任何问题,但是到了Windows下,各种问题就暴露出来了。
socket.io打开其客户端debug的方法 由于我们开发调试需要对比我们的应用和socket.io的区别,因此我们需要调试js版本的socket.io,以便判断我们写的版本和他们原版的区别。这里看了socket.io的官方文档,了解了如何打开socket.io的debug的方法。最简单的方法是 localStorage.debug = ‘*’; 这样会把所有的socket.io的debug函数的内容都输出到控制台。还有一种显示比较
MikuMikuDance中对于Local和Global旋转方式的特殊处理 我们的萌梦动作编辑器对标的是国外的MikuMikuDance(以下简称MMD)。这里我们在制作骨骼动画功能的时候,发现MikuMikuDance中对于不同骨骼中Local以及Global旋转方式的处理方式不尽相同。
基于NodeBB的网站服务器迁移步骤 网站服务器迁移步骤:一、首先你拿到的是一个新的服务器,这里以我的阿里云服务器为例。二、安装MongoDB2.1 导入包管理的秘钥:sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv EA3129272.2 为MongoDB创建列表文件(对于Ubuntu 14.04来说)echo “deb http://repo.mongod
Qt在线技术交流之OpenGL、Quick以及所经历项目开发心得分享 时间:3月25日晚上7:30 主题:Qt在线技术交流之OpenGL、Quick以及所经历项目开发心得分享 直播:http://qtdream.com 主页、全民TV,可能会加上其它的直播平台进行转播 录播:http://qtdream.com/category/16 处,使用B站或者优酷资源上传 参与对象:对Qt跨平台开发框架感兴趣的朋友们。当然了,如果你是大牛,也可以旁听一下,在这儿我们相
Qt在线讲座之QML脚本书写规范 时间:2016年3月1日晚7:30 在线讲座:http://qtdream.com主页处即可收看直播(详见主页提示) 参与对象:对Qt跨平台开发框架感兴趣的朋友们。当然了,如果你是大牛,也可以旁听一下,在这儿我们相互学习,相互促进!
glTF格式初步了解 最近看到Qt 3D的进展,偶然了解到了一种新的格式:glTF格式。这种格式据说比现有的3D格式更加符合OpenGL应用的需要,这引起了我的好奇,于是我在Qt 3D的外部链接中找到了有关glTF的相关链接。
Qt Installer Framework的学习(三) Qt Installer Framework的例子中,一般是这样的:config文件夹一般放了一个config.xml文件,包含的是安装配置xml的内容,packages包含的是需要安装的包的内容,一般情况不止一个安装包,每个安装包也不止是一个文件,那么每一个包都有文件夹,里面的文件夹中有data以及meta子文件夹。data文件夹中是安装包的内容,meta文件夹中是package.xml文件。这个文件包含的是安装包的安装配置内容。还有一些项目包含的是package_update文件夹,这个文件夹和pack
Qt Installer Framework的学习(二) Qt Installer Framework的一些操作可以使用最常见的Qt项目来表示,也就是说,书写pro文件,使用qmake运行之,除了能够编译正常的项目之外,也可以为项目打包。这里最重要的就是binarycreator了。下面就是我命令行使用binarycreator的时候弹出的一些提示,我们可以根据这样的提示,来了解究竟有哪些使用的方法。
Qt Installer Framework的学习 Qt Installer Framework是Qt默认包的发布框架。它很方便,使用静态编译Qt制作而成。并且使用了压缩率很高的7z对组件进行压缩。之所以有这些好处,我才觉得值得花一点儿精力研究一下这个框架。从Qt的下载地址中下载Qt Installer Framework,地址是:http://download.qt.io/。下载好了之后点击安装,会将程序以及一些实例安装进来。Qt Installer Framework简称IFW,我们可以看到有很多例子都含有IFW的字眼。
发布Qt Quick桌面应用程序的方法 Qt是一款优秀的跨平台开发框架,它可以在桌面、移动平台以及嵌入式平台上运行。目前Qt 5介绍程序发布的文章帖子比较少。大家又非常想要知道如何发布Qt应用程序,于是我花了一点儿时间介绍一下如何发布Qt桌面应用程序。
发布Qt Widgets桌面应用程序的方法 Qt是一款优秀的跨平台开发框架,它可以在桌面、移动平台以及嵌入式平台上运行。目前Qt 5介绍程序发布的文章帖子比较少。大家又非常想要知道如何发布Qt应用程序,于是我花了一点儿时间介绍一下如何发布Qt桌面应用程序。
Qt开发程序在Windows 10应用需要管理员运行的解决思路 过了很长的时间没有发布博客了,但是我依然努力地开发Qt程序。目前呢,我发现开发Qt程序在Windows 10上有一个怪现象——有些程序右下角加上了盾牌的标志。那这个为什么呢?
使用Qt Quick实现顶部横幅(Banner)效果 趁着上一篇文章写完,还有写博客的冲动,我将最近制作一个小玩意儿分享一下。这个小玩意儿其实是模仿Windows Phone 8的Banner效果。我命名为TopBanner。大家先看一下Windows Phone 8的效果吧。
解决Android下QtQuick.LocalStorage和腾讯开放平台组件冲突问题 已经有将近一个月没有写博客了,其实这段时间还是非常努力地进行开发的活动。最近也是在开发的过程中遇到了好一些问题,这些问题可以为自己或者是同行们提供一些启示或者是指导,所以我有必要记录下来,供大家参考。现象:我在Android上使用Qt Quick的Local Storage模块,但是发现我不管如何正确地使用SQL语句插入项目,下次读取的时候,总是显示数据库的相关表不存在。
npm发布注意事项 我在折腾学习NodeBB插件开发的过程中,遇到了Node包上传的问题。因为NodeBB的插件要使用,必须以nodebb-plugin-开头,然后必须是发布的插件,这样才能够被nodebb识别。因此我开始学习怎样发布npm。
MongoDB快速备份重建方法 上一篇文章介绍了MongoDB打开远程连接的方法,接下来我们需要做的就是应对日常的运维工作,试想,假如你的服务器无法工作了,或是一些特殊情况需要放弃原有的服务器,那你该如何保全你的数据呢?
让MongoDB能够远程连接 最近使用一款由Qt制作的数据库管理软件:Robomongo,它能够连接MongoDB数据库,执行一些查询操作并且得到反馈。然而,我发现Robomongo当时只能通过SSH的方式进行连接。
MongoDB中添加管理员和普通用户以及认证的方法 我参考了别人博客的内容(博客地址:http://hae.iteye.com/blog/2183478),并且结合我自己的学习实践,初步了解了如何为MongoDB添加管理员用户以及认证的方法。
MongoDB学习笔记 最近感觉自己在非关系型数据库的研究还需要增强才行,于是我自己研究了一下MongoDB,然后拿了一本《MongoDB The Definitive Guide_2nd Edition_2013》来看,看了一个大概,为了加深印象,记录一下我学习的一些要点。
使用MsgPack配合Qt应用程序和node.js应用程序的数据传输 这段时间开始将研发重心从OpenGL转向数据的序列化,再转向数据的传输了。在查看了一些前辈以及高手们有关登录模块的实现后,我也制定了一个自己的登录模块的解决方案。这其中我考虑到要使用json作为数据传输的格式,后面发现json二进制可以让数据更小,于是研究重心转向了json二进制,慢慢地转向了MsgPack这个开源的库,最后一个下午加上晚上,终于实现了用Qt打包MsgPack的数据再由node.js解包的操作。
Qt Scene Graph渲染方式在不同系统的差异 Qt Scene Graph是Qt 5提出的新渲染底层,它是Qt Quick在绝大多数平台上渲染的基础(Qt 4的是依赖Qt Graphics View)。了解和学习Qt的Scene Graph,怎么也不为过。最近我发现一个现象,那就是Qt Scene Graph在不同平台上的渲染流程是不一样的。通常情况下这没什么,可是它会影响Qt Quick的一些特定的类,比如说Animator。
自制Qt Quick场景切换管理类 自制Qt Quick场景切换管理类 QtQuick中有很多方法进行场景的切换,比如说使用Loader切换source的办法,还有StackView中对界面item进行push和pop进行操作。甚至自己也可以写方法,对item的显隐进行操作。当然上述方法或多或少我都尝试过,但这些我都感到不太满意,我于是想自己写一个场景的管理类,来解决这个问题。 在制作这个管理类之前,
使用QuaZip对文件进行压缩解压操作 八月份快要过去了,突然想到我还没有写一篇日志呢,想一想这一个月我并没有做开发以外的事情,三十天来还是尝试并且解决了不少技术上的问题的。所以这次我打算将其中一些作为日志分享出来。
Qt 3D教程(四)结合Qt Quick来实现动画的效果 上篇教程已经给大家带来较为实用的效果了,这回我们尝试载入两个模型,并且让PhongMaterial成为它们的共享材质,此外,我们通过借助QtQuick的动画框架来让我们的三维场景动起来!
Qt 3D教程(三)实现对模型材质参数的控制 上一篇教程介绍的是显示一个三维模型的基本步骤,接下来我们需要实现的是添加材质,并且希望我们通过按钮来控制材质的参数。这样的效果看起来很像一个3D模型材质编辑器的样子。那我们来尝试一下吧。
Qt 3D教程(二)初步显示3D的内容 前一篇非常简单,完全就没有牵涉到3D的内容,它只是我们搭建3D应用的基本框架而已,而这一篇,我们将要利用它来初步地显示3D的内容了!本次目的是将程序中间的内容替换成3D的视图,而这一切也不过十几行代码。要不我们来试一试吧!
Qt 3D教程(一)使用Qt Widgets建立一个框架 Qt 3D是Qt 5.5发布时最重要的一个新模块,它很好地将3D的繁文缛节封装在底层,留给我们的是简洁的对象创建方法,它也不需要你掌握太多的着色器知识,只需要懂得一些三维和光照的基本知识就可以创建出比较美观的三维模型浏览程序了。目前虽然大家都能够使用Qt 5.5和Qt 3D了,但是我查看了一下,有关API文档和一个详尽的介绍还是空缺的,因此我认为有必要写一点教程,简要介绍一下Qt 3D的使用方法。
AngularJS学习笔记 最近在学习MEAN框架,其中前端的部分就是AngularJS,AngularJS和以前接触的jQuery不同,它是通过给html添加directive(标记)的方式来增强html的交互能力的,我觉得它的双端绑定做得很棒,并且能够解耦逻辑和界面,的确是个值得学习的前端框架。
MEAN框架学习笔记 MEAN开发框架的资料很少,主要的资料还是来自于learn.mean.io网站上的介绍。于是抱着一种零基础学习的心态,在了解的过程中,通过翻译加上理解将MEAN框架一点点消化并且吸收,一步一步来,慢慢地记录我学习MEAN的点点滴滴。
安装MEAN开发框架 MEAN开发框架一揽子解决方案,旨在精简开发流程,提升开发效率。MEAN开发框架的各个组件(MongoDB、Express.js、Angular.js、Node.js)全都是用Javascript描述的,因此有人称,它是Javascript开发工程师全栈的开发框架。可能也是出于这样的原因,我开始被它所吸引,逐渐接触了解。
在Ubuntu Kylin15.05上安装MongoDB MongoDB是典型的NoSQL,但是据说也有很多人在用它。于是我尝试一下在Ubuntu Kylin上安装一下这个数据库。首先去它的官网看看吧。链接地址:https://www.mongodb.org,界面做得很不错的样子,而且也非常方便,很快就可以找到下载地址。看了一下官网,话说使用Ubuntu的LTS版会更加方便,不过我没有选择好,安装的是Ubuntu Kylin系统,因此不能简单地使用apt进行安装了。好在MongoDB官方有一个简单的教程,1234这样的步骤的,对于我们不太了解的朋友带来了很大的帮
基于Qt有限状态机人工智能的一种实现及改进方法 人工智能在今年是一个非常火的方向,当然了,不仅仅是今年,它一直火了很多年,有关人工智能的一些算法层出不穷。人工智能在很多领域都有应用,就拿我熟悉的游戏领域来说吧,一些寻路算法,比如说A*算法(我的《十日驱鬼记》就曾经使用了A*算法进行寻路),还有一些高级的算法,比如说决策树等,都在游戏中得以了广泛的应用。我目前想制作的项目和人工智能也有一定的关系,因此,我这个月开始学习搭建一些简单的人工智能框架。
解决Linux下Qt程序报『QString::arg: Argument missing: 无法解析SSLv2_client_method中的符号』错误 在Linux开发Qt应用,程序会报这样的错误:QString::arg: Argument missing: 无法解析SSLv2_client_method中的符号“SSLv2_client_method”:ssl, (/lib/x86_64-linux-gnu/libssl.so.1.0.0: undefined symbol: SSLv2_client_method)
Linux开发基于Qt的Android应用指定调试设备 最近安装了中外结合的Ubuntu Kylin试试。然后换上了搜狗输入法,这个编码的感觉比微软那个爽多了。开Qt Creator、通过Chromium来访问网页也是飞快的,使用GCC编译的速度也是非常满意的。而在指定安卓设备的时候遇到了一点儿小麻烦:我在将安卓平板电脑连接到电脑的时候,发现adb无法读取,从而QtCreator的界面看不到我们的真机设备。怎么办呢?记得以前也解决过,但是忘记通过博客记录方法了,这次一定要记下来,以后可不能忘记了!
对用OpenGL ES 2.0实现OpenGL ES 1.1的顶点着色器的研究 想要彻底研究OpenGL ES 2.0于前一代OpenGL的区别,还是要费很大一番精力的。最近在仔细研读《OpenGL ES 2.0 Programming Guide》,虽然这本书最早出版日期是2008年,距今已经7年了,而著作的日期或许还要早上半年到1年,但是目前OpenGL ES 2.0是主流三维开发框架,因此这本书的知识直到现在,依然受用。
Bullet有关六自由度弹性约束研究 这段时间打算将物理引擎整合进来,于是对Bullet这款开源的物理引擎进行了一些研究。Bullet的研究也有了一段时间了,Bullet这个引擎其实很久之前就接触了,只是一直以来,只是跑跑它的例子,也没有研究例子以及源代码,想要整合进入渲染引擎中也就井中月水中花了。今年3月,我曾经制作了一个整合Bullet最简单的一个例子。即模拟物体坠落的,并且写了博客《Qt Quick + OpenGL + Bullet初次测试》。这个例子开了一个好头。这段时间开始研究Bullet的一些其它有趣儿的特性了。
阴影映射(Shadow Map)的研究(六) 成功地将阴影映射与Qt Quick 2整合之后,接下来可以将阴影映射的效果变得更漂亮一些。如果你成功地运行过我制作的演示程序,那么就会发现,阴影映射的效果并不是那么理想,可能有噪点(粉刺)的出现。这个是和阴影的产生相关,主要还是由于阴影映射这个算法它要求产生的阴影精度是有限的。很多改进的算法都是围绕着如何让阴影更加自然进行研究的。这里我也尝试模仿了一个稍微简单的算法:PCF算法。
阴影映射(Shadow Map)的研究(五) 我成功地将别人的例子加以改进,使用QOpenGLWidget作为渲染窗口,将阴影映射渲染了出来。目前可以确定的是,使用OpenGL ES 2.0作为渲染的接口要求,能够让目前绝大多数机器都能够顺利兼容,但是囿于渲染窗口,可能在某些平台上表现不好。如果移植到Qt Quick 2,这样能够支持的平台就更多了。现在我将这些接口统统使用Qt的方式实现了,移植到Qt Quick 2也很简单。
阴影映射(Shadow Map)的研究(四) 上一篇文章粗略地介绍了要实现OpenGL ES 2.0的阴影映射所需的知识难点,现在简略地说明一下:1、FBO;2、着色器;3、float的分拆以及组合。上篇文章虽然说已经成功地移植了来自Java编写的Android下阴影映射的效果,但这边采用的很大程度上是OpenGL原生代码编写的内容,接下来的目标是采用自Qt 5起就逐渐采用的Qt对OpenGL的封装类,用面向对象的思维来处理OpenGL对象,这样让代码更加优雅。
阴影映射(Shadow Map)的研究(三) 最近为了自己制作的项目可是吃了不少苦头,这其中关键的一点就是想要实现阴影映射(Shadow Map)。为了实现目标,我参考了网络上很多相关的资料,也看了一些案例,最终花了我一个月的时间将这个效果实现了。
阴影映射(Shadow Map)的研究(二) 上一篇文章介绍了我对Z缓存的较为详细的研究。这里之所以对Ze求导函数,是因为的我们需要寻找它的变化曲线,从而找到极值点,这样就能够确定Ze相对于zw的疏密分布情况。幸运的是,我们找到的导函数是双曲函数,并且我们关心的的右侧是单调递增的。
深度缓存(Z缓存)的研究 最近在shadow map过程中卡住了。因为我想在OpenGLES 2.0兼容的平台上运行shadow map,而要顺利运行shadow map,通常的情况是拥有GL_OES_depth_texture扩展,而有些兼容的机器是没有这个扩展,这给我们开发人员带来了一些难度。不过办法还是有的,前提是要对计算机图形学的Z-Buffer要有一个深入的了解才行。
解决三维建模软件中摄像机旋转的问题 我们看到很多3D建模软件都可以很方便地对摄像机进行旋转,比如说Blender,通过按下鼠标中键,就可以很方便地对摄像机进行旋转。在学习了几年OpenGL之后,我也想要模仿这一点做出类似的功能。但是当研究的时候,遇到了一些困难。
阴影映射(Shadow Map)的研究(一) 这段时间在搭好自己的框架后,就开始马不停蹄地研究阴影映射的内容了,说起阴影映射,倒不如说shadow map更容易被专业人士所接受。shadow map是我进阶图形学的第一课,以后的图形学内容,会变得非常复杂,每写一个例子,都要牵涉到非常多的算法以及代码。但是我不得不这么做,因为只有这样才能成为计算机图形学的高手。
Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader 之前写了两篇文章,介绍了我在边缘检测上面的研究,实际上,使用GPU对渲染图像进行边缘检测,前提是需要进行两遍渲染,前一遍渲染的结果作为后一遍结果的输入纹理,接着在第二遍渲染的时候,对二维图像做一些图像处理,最终得出带轮廓的描边渲染效果,接着和正常渲染混合在一起,就成为渲染的最终图像。可是,这样的做法,是对二维图像做的图像处理,即使像上次对提取的深度进行图像处理,也无法准确地根据深度的突变来提取我们需要的边缘。所以我们需要新的方法来提取模型的边缘。
Qt 3D的研究(九):尝试另外一种边缘检测方法 三维应用程序,通过FBO,将3D图像渲染成纹理,然后对渲染成的纹理进行图像处理,最终显示在屏幕上的,是风格化后的图案。上一次我使用了一种普通的图像处理方法:索贝尔边缘检测法,与我们的卡通渲染结合起来,实现了这样的效果,接着,我将采用另外一种边缘检测方法——普雷维特(Prewitt)边缘检测方法来重新渲染图案。
Qt Quick + OpenGL + Bullet初次测试 目前Qt的Quick模块已经表现得非常出色,而且可以预留接口来渲染OpenGL场景。一般来说,已经能够满足大部分编程需要了。这次呢,尝试使用结合一些技术,来做一些有趣儿的事情——将Bullet整合进来,并且进行测试。
Qt 3D的研究(七):渲染至纹理 最近几天都没有怎么研究Qt 3D了,但是随着Qt5.5发布的日子一天天的靠近,我也不能懈怠,希望利用Qt 3D,将能够实现的功能进行实现,并且对Qt 3D获取一个新的认识。两天多没有研究了,现在信心却是满满的!
Qt 3D的研究(六):Toon Shader 在上次的实验中,我们实现了Gooch Shader,并给出了通过调色板进行个性化的Gooch Shader设置。Toon Shader又称Cell Shader,是以离散的颜色来表示光照的强弱。很多动画片的渲染方式都是使用Toon Shader的。下面这样图就可以使用Toon Shader实现。
Qt 3D的研究(五):Gooch Shader Qt 3D的一个很大的优势就是采用数据驱动的方式,将C++和GLSL使用QML来表示,动态语言的优势尽显。在上一次的研究中,我实现了一个非常简单的着色器,接下来,我们可以在此基础上,通过设定着色器的数据,制作出更加绚丽的着色效果。作为开始,我们先从几个非真实渲染(Non-Photorealistic Rendering,NPR)开始吧。
Qt 3D的研究(四):指定渲染的材质以及效果 在上一篇文章中我了解到了怎样简单地显示模型。Qt3D内置了一个obj模型的解析器,这样可以将简单的obj模型载入并且显示出来。其实Qt3D对于渲染的配置还是很厉害的,通过设定材质,我们可以得到很不错的渲染效果,而且可以通过设定Effect,将自己指定的着色器载入,让Qt 3D和OpenGL进行编译,得到自己想要的渲染效果。
Qt 3D的研究(三):显示3D模型 上一篇文章介绍了如何使用最少的代码创建一个Qt 3D的应用。和大家最初接触的glut一样,对于3D应用来说,需要做的准备工作还真不少,不过呢,Qt 3D把一些窗口相关的琐碎事情解决了,剩下的,该由我们完成重要的渲染部分了,可以说,带来了某种程度的方便。
测试Qt Quick在各个平台上的3D渲染性能 Qt是一个跨平台的GUI框架,它的QtQuick更是支持结合OpenGL原生的代码进行渲染。我想将我以前写的程序整合到QtQuick上来,看看渲染效果是否满意,于是写了一个小小的程序,来做一下渲染基准测试。运行结果出来,不容乐观呐。
Qt 3D的研究(二) 上一篇文章给大家看了很多Qt 3D的例子,如果大家有Qt3D的源代码,就会发现,开发这些例子,花费的代码还真不少。这就是不一样的地方,Qt 3D毕竟和三维图形打交道,多了一个维度,问题的难度变得更大了。
Qt 3D的研究(一) Qt 3D是有可能即将在Qt 5.5中正式启用的模块之一。它建立的目标是能够让开发者快速地创建3D场景,通过各式各样的渲染技术来达到3D交互的场景。Qt3D除了和Qt一样跨平台之外,还能够选择OpenGL的具体实现,定制GLSL,从而能够根据不同性能的机器,来调整渲染效果。
Qt 5的git源码编译 由于一些需求,需要接触Qt3D。虽然Qt 3D还没有问世,但是据称已经差不多完成了。Qt 3D的内部版本是2.0,将会并入Qt 5.5中。现在还是有一些途径来获取Qt 3D的。那就是使用git获取最新的源码进行编译。花了好几天的时间,终于成功了。下面分享一下心得。
Qt新渲染底层Scene Graph研究(三) 上一篇文章介绍了Qt Quick和Scene Graph的一些理论上的内容。这也是我最新的研究成果。接下来我要介绍一下如何使用Scene Graph来制作一些好玩的效果。这也是我进行一次Scene Graph的尝试。我的目标是希望在Scene Graph这一套渲染框架下实现一个带有纹理的立方体,并且旋转。花了几天,虽然不是那么满意,但是已经告一段落了。
Qt新渲染底层Scene Graph研究(二) 上一篇文章初步介绍了Qt新渲染底层Scene Graph,我们该如何利用这个框架为应用程序增添绚丽的效果呢?首先,我们要明确利用Scene Graph开发的目的是什么。如果是简单的,纯粹的显示2D图形界面,那么直接利用构建在Scene Graph之上的Qt Quick和Qt Quick Widget即可。如果觉得Qt Quick为我们提供的功能不够,在QML这一层无法很好地实现,那么我们或许需要考虑更低一层的Scene Graph了。一个使用Scene Graph的常见需求就是实现3D模型的渲染以及2D图元
Qt新渲染底层Scene Graph研究(一) Qt 5提出了一个新的渲染底层,以替代Qt4时期的Graphics View,这个渲染底层就是Scene Graph。其实这个底层的作用和Open Scene Graph是差不多的,但是由于是不同的团队进行开发的,所以两者没有必然的联系。Scene Graph主要利用OpenGL ( ES )2的渲染优势,在2D和3D以非常流畅的速度进行渲染,满足日益增长的界面效果需求,同时Scene Graph预留了各种各样的接口,满足大家定义显示和渲染效果的需要。
Qt独立游戏第II作《十日驱鬼记》发布 2015年来临了,按照我的发布日程,今天我向大家隆重的宣布,我的Qt独立游戏第II作《十日驱鬼记》终于发布了! 和上次独立游戏的发布一样,到了这个时候,我总是忍俊不禁感慨一下。这次的感受又有些差别,因为这款游戏并不是我全职制作完成的,前前后后花了我五个月,这款游戏的诞生是我值得荣耀的一件事情,它代表了目前我对Qt理解和应用开发的最高水平。同时,这款游戏,让我了解并且学习了开发以外的一些知识,比如说策划、设计、资源和发布。最后,这款游戏的发布并不代表着游戏开发过程的终结,我在发布后,需要广泛
解决Hyper-V和VT-x冲突的方法 今天想重新使用虚拟机的,但是没想到的是,虚拟机全部都无法启动了,原因是提示计算机不支持VT-x。后面搜索国外的网站,才知道,Hyper-V启用的时候VT-x就禁用了。也难怪,因为前段时间安装了Visual Studio 2013和Visual Studio 14,里面创建Windows Phone 8的虚拟机时就需要Hyper-V的支持。结果我就这样神不知鬼不觉地“被”安装了Hyper-V,安装了Hyper-V也就禁用了VT-x了。解决办法也很简单,反正Hyper-V用不着,关闭呗。在“控制面板”→“程序”
在Ubuntu下构建Bullet以及运行Bullet的例子程序 1、找到Bullet的下载页,地址是:https://code.google.com/p/bullet/downloads/list2、下载Bullet。找到.tgz格式进行下载。我下载的版本是bullet-2.82-r2704。3、如果没有安装cmake,那么使用sudo apt-get install cmake进行安装。4、如果没有安装glut,那么使用sudo apt-get install freeglut3以及sudo apt-get install freeglut3-dev进行安装。
解决QML开发中ComboBox中一个已选择项没有清除的问题 最近使用QML开发一个项目,需要使用ComboBox进行显示,当进行一个操作时,需要向ComboBox添加一个元素,当进行另外一个操作时,需要清除ComboBox里面的元素。但是在操作的过程中,出现了一个诡异的现象——ComboBox里面的已选择项并没有清除。
让Qt for Windows Phone 8.1在真机上运行 前面几篇博文是为这篇文章做铺垫的,最终目的为的是使用Qt框架制作出能够在Windows Phone 8.1真机上运行的程序。由于Qt for WP8这一块不完善,在加上我刚进入这一领域,所以研究的速度有点儿慢。在网上询问了Qt项目的维护者,加上自己的一点研究,稍微了解了Qt for Windows Phone 8的开发原理。
让Qt Creator支持Windows Phone 8开发 最近QtCreator3.2出了,修复了一些Bug,比上一个版本3.1.2要好了一些。由于在上一个版本(Qt for WinRT自带的)对于打包方面有一些问题效果不好,于是今天我下载这个IDE过来试一试。一开始想设定Windows Phone 8的开发环境的,但是总是没有设置成功。最后我找到了一个办法,使用这个办法顺利地设置好了支持Windows Phone 8开发环境的Qt Creator。
注册成为Windows Phone开发者并且解锁Windows Phone 8.1手机 上篇文章介绍了如何使用Qt Creator和Visual Studio构建Windows Phone 8.1应用并且在Windows Phone 8.1模拟器上运行。当然了,能够运行在模拟器只能算第一步,能够运行在真机上并且顺利地发布在Windows Phone应用商店则是我们的目标。为了达到这个目标,我们需要先注册成为Windows Phone的开发者,并且解锁手机,这样才能让我们的程序在Windows Phone 8.1手机上顺利运行。
搭建Qt 5.3.1 for Windows Phone 8开发环境 目前Qt已经支持了Android以及iOS的开发,我也亲自尝试过在Android和iOS上的开发,其中在Android这一块研究的较深,也制作出了第一款独立游戏《吃药了》。在Qt的新版本5.3的发布中,官方宣布支持WindowsPhone 8/8.1的开发。过了两个月了,我也积极尝试一下,看看使用最新的Qt 5.3.1版本如何搭建WP8的开发环境。
Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染 上一篇文章讲到了利用C++这个桥梁,我们实现了QML和Java的交互。Qt 5大力推崇的QML/JS开发,让轻量、快速开发的QML/JS打头阵,让重量的C++撑腰,几乎什么技术都能够实现。接下来的这篇文章讲的是我们使用QML,借助Qt库和OpenGL,实现了使用着色器定义OpenGL的渲染方式,为大家呈现混合渲染的效果。
Qt移动应用开发(七):QML与Java的交互 Qt5中针对不同的平台适配并开发了不同的模块,比如说Qt Windows Extras、Qt Mac Extras、Qt X11 Extras、Qt Android Extras等。这里我们主要聚焦Qt Android Extras,教大家如何使用这个模块实现和Java的交互。
Qt移动应用开发(六):QML与C++的交互 本文主要介绍的是如何使用QML和C++进行交互,难度稍微偏大,适合有经验的Qt开发者进行学习交流。 Qt 5吸收了Qt 4的declarative模块的优点,对底层进行了更改,新建了QPA层,隔离了不同操作系统API和上层Qt代码,同时QML/QtQuick也可以顺利在不同平台上运行。另外由于考虑到让Qt程序接入不同的库函数,因此Qt开放了接口让QML层和C++代码进行交互。之前已经有较多介绍QML与C++交互的文章了,本文仅作为一种有益的补充,更多相关的知识可以查询Qt帮助文档或向我留言。
Qt移动应用开发(五):场景切换 这一次我将介绍我在实际应用开发的时候是如何实现场景的切换的。场景的切换问题是一个架构上的问题,有很多的实现方式,而Qt Quick也提供了很多实用的类,以便我们进行场景的切换。在QML中,场景切换实质上就是将一个界面类隐藏,而另外一个界面类显示的方法。下面的代码就是一个简单的例子:
Qt移动应用开发(四):应用粒子特效 上一篇文章介绍了Qt Quick是怎样对帧动画进行支持的。帧动画的实现离不开状态机、而状态机、动画和状态切换(transitions)则是Qt框架的核心内容,也就是说它们可以建立在任何一个QObject对象中而不必非得依赖Qt的任何图形显示模块。拿一个例子说吧,如果你想实现背景音乐的平滑过渡,你可以不用写多余的代码,将背景音乐的音量作一下动画插值就可以达到效果了。事实上我制作的游戏《吃药了》就是这么实现效果的。而这一篇文章将要聚焦的是Qt Quick另外一个非常强大的系统——粒子系统。
Qt移动应用开发(三):使用精灵图片实现帧动画 上一篇博文讲到了Qt Quick对于动画的一般支持,动画的形式多样,配合不同的插值函数,可以几乎实现所有想要的动画效果,而对于游戏的一些特殊的效果比如说帧动画,Qt更是有专门的类来实现。下面我们就来看看Qt Quick中究竟是对帧动画是如何实现的吧。
Qt移动应用开发(二):使用动画框架 这篇文章主要介绍的是QtQuick的动画框架。Qt Quick动画框架自从Qt4的时代就有了,当时也有很多的demo给我们眼前一亮。脱胎于C++的动画框架,Qt Quick的动画框架绚丽并且易用,非常值得学习。
解决Virtual Box 下安装Mac OS X时出现的“hfs: summary table not allowed on FS with block size of 2048”问题 安装的时候首先出现hfs: summary table not allowed on FS withblock size of 2048错误,然后就是hfs: could not initializc summary table forOSX Base System错误。一开始也不知道是怎么回事,后来在yandex上搜索中找到一篇帖子,它说这是CPU的问题。Mac OS X 10.9不能识别特有的CPU格式,只能识别一部分。于是呢,按照帖子中的做法,首先找到Virtual Box的位置,用命令符的
Qt移动应用开发(一):适配不同的屏幕 到目前为止,Qt5.3已经出现很长一段时间了,并且已经有一些应用使用Qt进行构建了,我自己也完成了第一款使用Qt构建的手机游戏《吃药了》。那么接下来的几篇文章主要向大家分享我是怎样使用Qt进行移动开发的。Qt移动应用开发分为多篇博客文章,每一篇文章都力求精简不罗嗦,力求为大家提供一个快捷的参考。我在这里也主要将使用Qt制作《吃药了》的方法技巧一一分享给大家。
解决Qt程序在Linux下无法输入中文的办法 一位网友问我如何在Linux的Qt的应用程序中输入中文,我一开始觉得不是什么问题,但是后面自己尝试了一下还真不行。不仅是Qt制作的应用程序,就连Qt Creator都无法支持。后面看了一些资料,了解了Qt应用程序的方法,这里和大家分享一下。
在Eclipse中搭建cocos2d-x的Android开发环境(免cygwin) 在突击几天学习Android开发之后,我开始转向cocos2d-x的Android开发了。由于自己以前有了解过cocos2d-x的开发,当时自己也学过不少游戏引擎,觉得cocos2d-x作为一个游戏引擎实在是比较简陋,没想到cocos2d-x现在红得发紫,这是我远远没有想到的。于是也赶赶潮流的末班车,查资料顺利地在Eclipse上搭建cocos2d-x的Androd开发环境。
开发Android应用的时候遇到的问题 1、在书写Layout.xml的时候 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > </LinearLayout> 其中的xmlns:android=http://
使用Eclipse搭建Android的开发环境 现在Google以及Android的官网被屏蔽,想下载ADT都不行了。好在以前开发Qtfor Android的时候下载了Android的SDK、NDK以及JDK,这回只需要安装Eclipse以及ADT就行了。ADT没办法从网上下载,那么只好看看国内有没有人分享一下ADT了。于是我找到了ADT-22.6.2,再安装在最新的Eclipse4.3.2,测试了很久,终于好了。
用Qt制作的Android独立游戏《吃药了》发布 一个多月的努力终于有了回报,我自己研究制作的独立游戏《吃药了》,终于在360应用商店上线了。 这一款游戏呢,使用的是Qt开发的。其实开发这款简单的应用之前,我经历了端游和页游,但是对手游开发了解甚少。不过今年5月20日,Qt官方发布了Qt5.3,对Android和iOS的支持变得成熟起来了,于是我打算冒一个险,使用大家从未使用过的Qt来开发手机游戏。这一个月呢,各种心酸各种泪,我曾经感受到整天10多个小时开发的疲惫;我曾经感受到家人的种种催促;我曾经感受到同事们的好言相劝;我曾经感受到自己内心
在Windows下使用MinGW静态编译Assimp Assimp是目前比较全的3D格式解析库了,熟悉3D游戏开发的同行都知道,3D的格式非常混乱,各种3D格式在不同场合都有他们特定的应用,游戏引擎只能够解析少部分3D格式,更多实用的格式来自游戏公司自定义的格式。而在开源领域,Assimp算是比较全的3D格式导入库了。它对3D格式理解深入,很适合整合至3D图形引擎中,让你们的程序支持更多3D的格式。
使用GLSL实现对光照的模拟(二) OpenGL固定渲染管线主要实现的是高洛德着色模型,这是一种简单的光照效果,主要应用在实时渲染领域。我这次实践主要将全局光照、漫反射效果以及镜面反射效果实现了,漫反射使用了兰伯特(Lambert)公式、镜面反射使用可比林 – 冯(Blinn - Phong)公式。