自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(293)
  • 资源 (102)
  • 收藏
  • 关注

原创 阴影映射(Shadow Map)的研究(六)

成功地将阴影映射与Qt Quick 2整合之后,接下来可以将阴影映射的效果变得更漂亮一些。如果你成功地运行过我制作的演示程序,那么就会发现,阴影映射的效果并不是那么理想,可能有噪点(粉刺)的出现。这个是和阴影的产生相关,主要还是由于阴影映射这个算法它要求产生的阴影精度是有限的。很多改进的算法都是围绕着如何让阴影更加自然进行研究的。这里我也尝试模仿了一个稍微简单的算法:PCF算法。

2015-05-25 15:24:41 2661 1

原创 阴影映射(Shadow Map)的研究(五)

我成功地将别人的例子加以改进,使用QOpenGLWidget作为渲染窗口,将阴影映射渲染了出来。目前可以确定的是,使用OpenGL ES 2.0作为渲染的接口要求,能够让目前绝大多数机器都能够顺利兼容,但是囿于渲染窗口,可能在某些平台上表现不好。如果移植到Qt Quick 2,这样能够支持的平台就更多了。现在我将这些接口统统使用Qt的方式实现了,移植到Qt Quick 2也很简单。

2015-05-25 15:08:19 2421

原创 阴影映射(Shadow Map)的研究(四)

上一篇文章粗略地介绍了要实现OpenGL ES 2.0的阴影映射所需的知识难点,现在简略地说明一下:1、FBO;2、着色器;3、float的分拆以及组合。上篇文章虽然说已经成功地移植了来自Java编写的Android下阴影映射的效果,但这边采用的很大程度上是OpenGL原生代码编写的内容,接下来的目标是采用自Qt 5起就逐渐采用的Qt对OpenGL的封装类,用面向对象的思维来处理OpenGL对象,这样让代码更加优雅。

2015-05-25 14:54:19 2880

原创 阴影映射(Shadow Map)的研究(三)

最近为了自己制作的项目可是吃了不少苦头,这其中关键的一点就是想要实现阴影映射(Shadow Map)。为了实现目标,我参考了网络上很多相关的资料,也看了一些案例,最终花了我一个月的时间将这个效果实现了。

2015-05-25 13:02:43 3269

原创 有关GLSL中的gl_FragCoord

在研究阴影映射的时候,我发现了一个很有意思的变量,它可以代替我们自己使用的varying变量,给我们带来方便。但是我们也需要了解它是如何计算的。

2015-04-15 17:42:32 7471 1

原创 阴影映射(Shadow Map)的研究(二)

上一篇文章介绍了我对Z缓存的较为详细的研究。这里之所以对Ze求导函数,是因为的我们需要寻找它的变化曲线,从而找到极值点,这样就能够确定Ze相对于zw的疏密分布情况。幸运的是,我们找到的导函数是双曲函数,并且我们关心的的右侧是单调递增的。

2015-04-08 21:20:22 2419

原创 深度缓存(Z缓存)的研究

最近在shadow map过程中卡住了。因为我想在OpenGLES 2.0兼容的平台上运行shadow map,而要顺利运行shadow map,通常的情况是拥有GL_OES_depth_texture扩展,而有些兼容的机器是没有这个扩展,这给我们开发人员带来了一些难度。不过办法还是有的,前提是要对计算机图形学的Z-Buffer要有一个深入的了解才行。

2015-04-08 14:10:29 6615 1

原创 透视投影矩阵的构建

投影矩阵最终建立的是一个平截头体(也可以称为台),在这种变换下呈现远小近大的效果。这里我将我学到知识记录下来,以后备忘用。

2015-04-07 21:46:18 4483

原创 解决三维建模软件中摄像机旋转的问题

我们看到很多3D建模软件都可以很方便地对摄像机进行旋转,比如说Blender,通过按下鼠标中键,就可以很方便地对摄像机进行旋转。在学习了几年OpenGL之后,我也想要模仿这一点做出类似的功能。但是当研究的时候,遇到了一些困难。

2015-04-02 10:14:22 5033 2

原创 阴影映射(Shadow Map)的研究(一)

这段时间在搭好自己的框架后,就开始马不停蹄地研究阴影映射的内容了,说起阴影映射,倒不如说shadow map更容易被专业人士所接受。shadow map是我进阶图形学的第一课,以后的图形学内容,会变得非常复杂,每写一个例子,都要牵涉到非常多的算法以及代码。但是我不得不这么做,因为只有这样才能成为计算机图形学的高手。

2015-03-25 21:56:06 4118 2

原创 Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader

之前写了两篇文章,介绍了我在边缘检测上面的研究,实际上,使用GPU对渲染图像进行边缘检测,前提是需要进行两遍渲染,前一遍渲染的结果作为后一遍结果的输入纹理,接着在第二遍渲染的时候,对二维图像做一些图像处理,最终得出带轮廓的描边渲染效果,接着和正常渲染混合在一起,就成为渲染的最终图像。可是,这样的做法,是对二维图像做的图像处理,即使像上次对提取的深度进行图像处理,也无法准确地根据深度的突变来提取我们需要的边缘。所以我们需要新的方法来提取模型的边缘。

2015-03-19 13:28:56 5828 2

原创 Qt 3D的研究(九):尝试另外一种边缘检测方法

三维应用程序,通过FBO,将3D图像渲染成纹理,然后对渲染成的纹理进行图像处理,最终显示在屏幕上的,是风格化后的图案。上一次我使用了一种普通的图像处理方法:索贝尔边缘检测法,与我们的卡通渲染结合起来,实现了这样的效果,接着,我将采用另外一种边缘检测方法——普雷维特(Prewitt)边缘检测方法来重新渲染图案。

2015-03-18 10:37:34 3317

原创 Qt Quick + OpenGL + Bullet初次测试

目前Qt的Quick模块已经表现得非常出色,而且可以预留接口来渲染OpenGL场景。一般来说,已经能够满足大部分编程需要了。这次呢,尝试使用结合一些技术,来做一些有趣儿的事情——将Bullet整合进来,并且进行测试。

2015-03-15 23:40:43 5481 2

原创 Qt 3D的研究(八):边缘检测

上一篇文章讲到了如何使用渲染至纹理技术将我们第一遍渲染保存至纹理以便做一些操作。还是上一次的例子,我简要地分析一下如何进行边缘检测。

2015-03-11 09:33:02 3610

原创 Qt 3D的研究(七):渲染至纹理

最近几天都没有怎么研究Qt 3D了,但是随着Qt5.5发布的日子一天天的靠近,我也不能懈怠,希望利用Qt 3D,将能够实现的功能进行实现,并且对Qt 3D获取一个新的认识。两天多没有研究了,现在信心却是满满的!

2015-03-09 16:44:10 6689

原创 Qt 3D的研究(六):Toon Shader

在上次的实验中,我们实现了Gooch Shader,并给出了通过调色板进行个性化的Gooch Shader设置。Toon Shader又称Cell Shader,是以离散的颜色来表示光照的强弱。很多动画片的渲染方式都是使用Toon Shader的。下面这样图就可以使用Toon Shader实现。

2015-03-05 16:00:37 4322

原创 Qt 3D的研究(五):Gooch Shader

Qt 3D的一个很大的优势就是采用数据驱动的方式,将C++和GLSL使用QML来表示,动态语言的优势尽显。在上一次的研究中,我实现了一个非常简单的着色器,接下来,我们可以在此基础上,通过设定着色器的数据,制作出更加绚丽的着色效果。作为开始,我们先从几个非真实渲染(Non-Photorealistic Rendering,NPR)开始吧。

2015-03-01 22:58:45 4969

原创 Qt 3D的研究(四):指定渲染的材质以及效果

在上一篇文章中我了解到了怎样简单地显示模型。Qt3D内置了一个obj模型的解析器,这样可以将简单的obj模型载入并且显示出来。其实Qt3D对于渲染的配置还是很厉害的,通过设定材质,我们可以得到很不错的渲染效果,而且可以通过设定Effect,将自己指定的着色器载入,让Qt 3D和OpenGL进行编译,得到自己想要的渲染效果。

2015-02-28 11:16:29 9026 2

原创 Qt 3D的研究(三):显示3D模型

上一篇文章介绍了如何使用最少的代码创建一个Qt 3D的应用。和大家最初接触的glut一样,对于3D应用来说,需要做的准备工作还真不少,不过呢,Qt 3D把一些窗口相关的琐碎事情解决了,剩下的,该由我们完成重要的渲染部分了,可以说,带来了某种程度的方便。

2015-02-27 09:59:09 31465 11

原创 跨平台显示MMD模型

过年了,祝大家喜气洋洋,心想事成!然后呢,过年后,依然进行Qt以及3D的研究。最近翻出以前的技术研究成果,并且花了将近一个月,成功地在移动平台上显示MMD模型了。

2015-02-23 00:18:55 4759 5

原创 测试Qt Quick在各个平台上的3D渲染性能

Qt是一个跨平台的GUI框架,它的QtQuick更是支持结合OpenGL原生的代码进行渲染。我想将我以前写的程序整合到QtQuick上来,看看渲染效果是否满意,于是写了一个小小的程序,来做一下渲染基准测试。运行结果出来,不容乐观呐。

2015-02-15 23:59:15 6004 4

原创 Qt 3D的研究(二)

上一篇文章给大家看了很多Qt 3D的例子,如果大家有Qt3D的源代码,就会发现,开发这些例子,花费的代码还真不少。这就是不一样的地方,Qt 3D毕竟和三维图形打交道,多了一个维度,问题的难度变得更大了。

2015-02-13 21:47:48 9699 6

原创 Qt 3D的研究(一)

Qt 3D是有可能即将在Qt 5.5中正式启用的模块之一。它建立的目标是能够让开发者快速地创建3D场景,通过各式各样的渲染技术来达到3D交互的场景。Qt3D除了和Qt一样跨平台之外,还能够选择OpenGL的具体实现,定制GLSL,从而能够根据不同性能的机器,来调整渲染效果。

2015-02-13 20:45:33 17734 1

原创 Qt 5的git源码编译

由于一些需求,需要接触Qt3D。虽然Qt 3D还没有问世,但是据称已经差不多完成了。Qt 3D的内部版本是2.0,将会并入Qt 5.5中。现在还是有一些途径来获取Qt 3D的。那就是使用git获取最新的源码进行编译。花了好几天的时间,终于成功了。下面分享一下心得。

2015-02-02 09:30:15 6739 4

原创 Qt新渲染底层Scene Graph研究(三)

上一篇文章介绍了Qt Quick和Scene Graph的一些理论上的内容。这也是我最新的研究成果。接下来我要介绍一下如何使用Scene Graph来制作一些好玩的效果。这也是我进行一次Scene Graph的尝试。我的目标是希望在Scene Graph这一套渲染框架下实现一个带有纹理的立方体,并且旋转。花了几天,虽然不是那么满意,但是已经告一段落了。

2015-01-27 16:54:04 6766 2

原创 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图元

2015-01-23 23:08:22 7533 1

原创 Qt新渲染底层Scene Graph研究(一)

Qt 5提出了一个新的渲染底层,以替代Qt4时期的Graphics View,这个渲染底层就是Scene Graph。其实这个底层的作用和Open Scene Graph是差不多的,但是由于是不同的团队进行开发的,所以两者没有必然的联系。Scene Graph主要利用OpenGL ( ES )2的渲染优势,在2D和3D以非常流畅的速度进行渲染,满足日益增长的界面效果需求,同时Scene Graph预留了各种各样的接口,满足大家定义显示和渲染效果的需要。

2015-01-23 21:31:54 11306 2

原创 Qt独立游戏第II作《十日驱鬼记》发布

2015年来临了,按照我的发布日程,今天我向大家隆重的宣布,我的Qt独立游戏第II作《十日驱鬼记》终于发布了! 和上次独立游戏的发布一样,到了这个时候,我总是忍俊不禁感慨一下。这次的感受又有些差别,因为这款游戏并不是我全职制作完成的,前前后后花了我五个月,这款游戏的诞生是我值得荣耀的一件事情,它代表了目前我对Qt理解和应用开发的最高水平。同时,这款游戏,让我了解并且学习了开发以外的一些知识,比如说策划、设计、资源和发布。最后,这款游戏的发布并不代表着游戏开发过程的终结,我在发布后,需要广泛

2015-01-01 17:39:20 4545 17

原创 解决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用不着,关闭呗。在“控制面板”→“程序”

2014-12-13 17:58:00 24143

原创 MinGW下构建Bullet

在Windows的MinGW下构建Bullet,采用其自带的premake4来进行。

2014-12-07 23:42:51 1730

原创 在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进行安装。

2014-10-31 23:00:56 3726

原创 在Ubuntu下编译Assimp库

如何在Ubuntu下编译Assimp库?这是我以前编译成功后做的笔记,供参考。

2014-10-31 22:31:29 4881 1

原创 使用QML自绘页面导航条

最近使用QML制作项目,按照要求,需要制作成分页的插件。遗憾的是,QML的控件库Qt Quick都没有现成的控件,于是我尝试着自己实现自绘页面导航条。

2014-09-18 17:36:27 4223 1

原创 解决QML开发中ComboBox中一个已选择项没有清除的问题

最近使用QML开发一个项目,需要使用ComboBox进行显示,当进行一个操作时,需要向ComboBox添加一个元素,当进行另外一个操作时,需要清除ComboBox里面的元素。但是在操作的过程中,出现了一个诡异的现象——ComboBox里面的已选择项并没有清除。

2014-09-18 14:17:43 4049

原创 让Qt for Windows Phone 8.1在真机上运行

前面几篇博文是为这篇文章做铺垫的,最终目的为的是使用Qt框架制作出能够在Windows Phone 8.1真机上运行的程序。由于Qt for WP8这一块不完善,在加上我刚进入这一领域,所以研究的速度有点儿慢。在网上询问了Qt项目的维护者,加上自己的一点研究,稍微了解了Qt for Windows Phone 8的开发原理。

2014-09-01 00:35:58 4317 8

原创 让Qt Creator支持Windows Phone 8开发

最近QtCreator3.2出了,修复了一些Bug,比上一个版本3.1.2要好了一些。由于在上一个版本(Qt for WinRT自带的)对于打包方面有一些问题效果不好,于是今天我下载这个IDE过来试一试。一开始想设定Windows Phone 8的开发环境的,但是总是没有设置成功。最后我找到了一个办法,使用这个办法顺利地设置好了支持Windows Phone 8开发环境的Qt Creator。

2014-08-31 10:55:55 3189 1

原创 注册成为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手机上顺利运行。

2014-08-28 13:02:19 6071 4

原创 搭建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的开发环境。

2014-08-15 00:01:27 5613 7

原创 Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染

上一篇文章讲到了利用C++这个桥梁,我们实现了QML和Java的交互。Qt 5大力推崇的QML/JS开发,让轻量、快速开发的QML/JS打头阵,让重量的C++撑腰,几乎什么技术都能够实现。接下来的这篇文章讲的是我们使用QML,借助Qt库和OpenGL,实现了使用着色器定义OpenGL的渲染方式,为大家呈现混合渲染的效果。

2014-07-21 22:53:24 19705 20

原创 Qt移动应用开发(七):QML与Java的交互

Qt5中针对不同的平台适配并开发了不同的模块,比如说Qt Windows Extras、Qt Mac Extras、Qt X11 Extras、Qt Android Extras等。这里我们主要聚焦Qt Android Extras,教大家如何使用这个模块实现和Java的交互。

2014-07-20 22:29:53 7901 4

基于Qt有限状态机人工智能的一种实现

人工智能在今年是一个非常火的方向,当然了,不仅仅是今年,它一直火了很多年,有关人工智能的一些算法层出不穷。人工智能在很多领域都有应用,就拿我熟悉的游戏领域来说吧,一些寻路算法,比如说A*算法(我的《十日驱鬼记》就曾经使用了A*算法进行寻路),还有一些高级的算法,比如说决策树等,都在游戏中得以了广泛的应用。我目前想制作的项目和人工智能也有一定的关系,因此,我这个月开始学习搭建一些简单的人工智能框架。

2015-06-24

使用QtQuick2改进的阴影映射例子

我成功地将别人的例子加以改进,使用QOpenGLWidget作为渲染窗口,将阴影映射渲染了出来。目前可以确定的是,使用OpenGL ES 2.0作为渲染的接口要求,能够让目前绝大多数机器都能够顺利兼容,但是囿于渲染窗口,可能在某些平台上表现不好。如果移植到Qt Quick 2,这样能够支持的平台就更多了。现在我将这些接口统统使用Qt的方式实现了,移植到Qt Quick 2也很简单。

2015-05-25

使用QOpenGLWidget作为容器改进的阴影映射例子

上一篇文章粗略地介绍了要实现OpenGL ES 2.0的阴影映射所需的知识难点,现在简略地说明一下:1、FBO;2、着色器;3、float的分拆以及组合。上篇文章虽然说已经成功地移植了来自Java编写的Android下阴影映射的效果,但这边采用的很大程度上是OpenGL原生代码编写的内容,接下来的目标是采用自Qt 5起就逐渐采用的Qt对OpenGL的封装类,用面向对象的思维来处理OpenGL对象,这样让代码更加优雅。

2015-05-25

使用Qt实现的阴影映射(源代码)

要实现基于OpenGL ES 2.0的阴影映射,要攻克这三个技术难点: 1、 熟练操作FBO。帧缓存FBO是需要熟练操控的,因为FBO可以很快地将深度图写入一块显存中,然后作为纹理渲染到真实的场景中。 2、 掌握着色器的使用。由于OpenGL ES 2.0只允许使用着色器来对其进行渲染,因此对着色器的书写熟练程度要求较高。 3、 掌握将float深度数据分拆成vec4再将vec4合并成float的操作。这个已经成为业内熟练掌握的技能之一了,网络上搜索“how to pack float into RGBA”,能够得到很多有用的回答。

2015-05-25

QML和OpenGL混合渲染(源代码)

原博客地址:http://blog.csdn.net/gamesdev/article/details/38024327 上一篇文章讲到了利用C++这个桥梁,我们实现了QML和Java的交互。Qt 5大力推崇的QML/JS开发,让轻量、快速开发的QML/JS打头阵,让重量的C++撑腰,几乎什么技术都能够实现。接下来的这篇文章讲的是我们使用QML,借助Qt库和OpenGL,实现了使用着色器定义OpenGL的渲染方式,为大家呈现混合渲染的效果。

2014-07-21

QML和OpenGL混合渲染(演示程序)

此资源是演示程序,包含了Windows、Linux、MacOS X以及Android的演示程序,大家可以免积分下载。原博客地址:http://blog.csdn.net/gamesdev/article/details/38024327 上一篇文章讲到了利用C++这个桥梁,我们实现了QML和Java的交互。Qt 5大力推崇的QML/JS开发,让轻量、快速开发的QML/JS打头阵,让重量的C++撑腰,几乎什么技术都能够实现。接下来的这篇文章讲的是我们使用QML,借助Qt库和OpenGL,实现了使用着色器定义OpenGL的渲染方式,为大家呈现混合渲染的效果。

2014-07-21

CEGUI整合Irrlicht的例子(演示程序+源代码)

此程序使用VS2010构建,使用时还需正确构建CEGUI。有关CEGUI的构建方法,请参考我写的文章: http://blog.csdn.net/gamesdev/article/details/21552115 -------------------------------------------------------- 早就听说CEGUI是一款优秀的游戏GUI库,并且除了能够支持OpenGL、Direct3D9、Direct3D11以外,还可以支持高层的游戏引擎,例如Ogre和Irrlicht。我非常想尝试一下,网上有关CEGUI的例子又不是很多,所以自己花了大概几天的时间,研究了自带的文档,顺利地进行了整合。

2014-04-02

基于Qt和OpenGL的公告板演示程序

本资源是演示程序,大家可以免积分下载。 ------------------------------------------ 公告板技术的核心在于计算模型矩阵。OpenGL的固定渲染管线是维持了模型视图矩阵和投影矩阵两套矩阵,而Direct3D的固定渲染管线维持了三套矩阵,也就是世界矩阵、视图矩阵以及投影矩阵。我个人认为Direct3D的做法比较科学,而且将三者分开可以更好地控制显示效果,比如说我们将要实现的公告板特效。

2014-03-26

形变动画的实现(演示程序)

和以往我提供的演示程序不同 这一次我换了一个新的框架 再也不采用OpenGL的固定渲染管线进行渲染了 而是采用兼容OpenGL ES 2 0的着色器方式进行渲染 当然 为了利用着色器提供的并行计算功能 我用顶点着色器写了硬件蒙皮动画 以尽可能地利用GPU多做一些事情 可惜骨骼动画由于比较复杂 暂时无法用顶点着色器实现 同时表示面部表情的形变动画(Metamorphic Animation)也是在CPU上完成的 ">和以往我提供的演示程序不同 这一次我换了一个新的框架 再也不采用OpenGL的固定渲染管线进行渲染了 而是采用兼容OpenGL ES 2 0的着色器方式进行渲染 当然 为了利用着色器提供的并行计算功能 我用顶点着色器写了硬件 [更多]

2014-03-16

AssimpViewer浏览模型软件

这里我分享一个Assimp库实现的软件,叫“assimp viewer”。它可以方便地浏览各种模型格式的文件,其下载地址在这里。它是用Assimp库和DirectX来实现的,很遗憾只有Windows版。

2014-03-13

蒙皮动画的实现(演示程序)

此资源是演示程序,大家可以免积分下载。 --------------------------------------------------- 蒙皮动画和骨骼动画结合比较紧密,骨骼动画完成了之后,蒙皮动画也比较好做,可是那时我没有掌握透向量、矩阵以及四元数的基本计算,走了一些弯路,也搁置了原来的目标。在学习完一些新的技术后,再回来学习蒙皮动画,觉得到了实现它的时候了,于是制作了这样一个演示程序。

2014-03-07

利用GPGPU方法将大量数据通过纹理传输至GPU进行计算

博客地址: http://blog.csdn.net/gamesdev/article/details/19507325 在显卡并行计算起源的领域,比如说游戏开发领域,GPU的发展使得其迈向了新的纪元,画面愈加精致,效果愈加震撼,同时并行计算框架CUDA和OpenCL的兴起,则将显卡的计算潜能充分地释放了出来。最后令人高兴的是,以前就受惠于显卡发展的游戏开发领域,将显卡的功能做了新的扩展,以前只用来渲染用的显卡,目前可以做更多逻辑领域相关的事儿了。

2014-02-19

用OpenGL4.x绘制三角形图元

OpenGL很多人都有所了解,也有很多人使用OpenGL开发过工业级的应用和游戏应用,不过它的最新版本OpenGL4.x了解的人就不是太多了。目前OpenGL的最新版本是4.4,并且NVIDIA和AMD厂商发布了支持OpenGL最新版本的驱动程序,我想基于OpenGL4.x讲解的书籍也会逐渐增多。 这回我将上一次的代码稍微作了一下修改,绘制出了一个三角形。其实代码也非常简单,在Client端将GL_POINTS改为GL_TRIANGLES就可以了,片断着色器也不需要做更多的修改,主要是顶点着色器。

2014-02-19

基于Qt和OpenGL4.x的框架

我想OpenGL和同样是优秀的跨平台图形API——Qt的结合应该是一件非常有趣的事儿吧。有关Qt的介绍我已有大量的篇幅描述,有兴趣的搜搜我以前写的日志吧。OpenGL和Qt结合使用,简单快捷见效快。如果一定要说有什么缺点,我想应该是Qt的个头稍大并且可能对纯C的开发者并不友好,毕竟Qt是C++的开发框架。

2014-02-08

Irrlicht使用着色器渲染模型(演示程序+源代码)

Irrlicht是从2002年开始发布的,那时我想应该还没有成熟的着色器,我记得那时候Direct3D8的着色器是汇编代码,非常难用,而Direct3D9的HLSL还不太为人所知,而OpenGL的着色器GLSL还没有出世。没有着色器,渲染可能非常单调,而且固定渲染模式非常臃肿。 但是现在已经大不相同了,Irrlicht也支持非常多的着色器,它们能够为用户呈现出非常满意的效果。于是我也开始尝试使用Irrlicht的着色器渲染模型。

2013-11-29

Irrlicht实现水波特效(演示程序+源代码)

上一篇文章作为一个引子,介绍了粒子系统的简单使用方法,不过Irrlicht的粒子系统提供的效果非常多,只要选对了粒子特效,再加上合适的美术资源,就可以制作相当漂亮以及震撼的特效。同时粒子系统作为场景的一个普通的节点,可以绑定在场景的任何位置,也就是说一些场景效果比如说昏暗的山洞里一把篝火这样的特效就可以绑定在场景的火把处,通过场景编辑器编辑完成,再用程序导入irr文件,这样的话一个逼真的场景就实现了。

2013-11-26

Irrlicht实现粒子系统(演示程序+源代码)

粒子系统是作为游戏引擎不可或缺的一部分,它可以创造出非常炫的效果,但是传统上,如果是从Direct3D或者是从OpenGL/GLUT开始,将会遇到很大的麻烦,因为需要定义粒子发射器以及粒子管理器,还有种种复杂的东西,以前我曾经用Direct3D模仿粒子系统制作弹幕,就知道管理粒子有多么的复杂。不过在使用了Irrlicht之后,我觉得使用粒子系统简单了许多,只需要调用几个函数就可以解决问题。

2013-11-26

Irrlicht之载入irr文件和自定义场景节点(演示程序+源代码)

相关博客地址:http://blog.csdn.net/gamesdev/article/details/16890623 -------------------------------------------------------------- 在上一篇文章中,我尝试载入了Irrlicht自定义的场景文件irr文件。这回我将尝试用代码将irr文件载入以及自定义场景节点绘制出坐标轴。 Irr文件实质上是一个XML文件,它里面包含了场景的各种资源,可以被引擎中的一个模块IrrXML进行读取,生成则主要由IrrEdit来完成。

2013-11-22

IrrEdit编辑场景所用的资源

相关博客地址:http://blog.csdn.net/gamesdev/article/details/16890027 -------------------------------------------------------------------- Irrlicht作为一款游戏引擎,如果没有场景编辑器等配套软件,那么就会显得太弱了,还好Irrlicht提供了简易的GUIEditor(在前文有简单介绍)、FontTool、MeshViewer以及我们需要自行下载的IrrEdit。 IrrEdit现在已经改名为CopperCube了,CopperCube是商业软件,可以提供简单的场景编辑,并最终导出为ccb格式或发布为Windows、Mac OSX、Flash、WebGL、Android应用。从这个角度来说它倒比较像Unity3D以及最近刚出的国产游戏引擎平台Genesis3D,可是使用起来如何呢?我一开始下载的是CopperCube2.0.1,稍微花了一些时间熟悉了下,最后觉得不好用,于是下载了最高版本4.3。总的来说,这款编辑器还是需要经过多次版本的迭代来获得更加强大的功能。

2013-11-22

Irrlicht光照测试(演示程序+源代码)

最近研究一下Irrlicht的光照。发现Irrlicht的光照还是比较简单的,相比低于它的OpenGL和Direct3D,设置光源以及设置光照的参数更加人性化(可能是因为OpenGL是基于C的,Direct3D是基于COM的,都没有面向对象那么简洁易懂?)但是光照的实现还是根据底层的渲染器来决定的,也就是说可能是OpenGL的高洛德光照模型,也可能是Direct3D中的光照模型。

2013-11-18

Irrlicht添加对中文的支持(源代码+演示程序)

里面包含了微软雅黑字体,所以占了比较大的空间,下载时请耐心等待。 ------------------------------------------------------------------ Irrlicht在立项之初,可能没有考虑国际化的问题,因此一开始使用的字符集都是ANSI的,似乎是在Irrlicht1.6开始,才开始在GUI和其他模块中将wchar_t当作普通字符的存储格式。但是wchar_t在不同的平台上存储又不一样,因此直到版本1.73,官方还没有提供东亚字符的显示。 在网络上搜到了几篇让Irrlicht支持中文的博客,虽然已经过去几年了,但依然受用。博客的地址将以参考文献的形式记录下来。下面将要介绍一下如何让Irrlicht支持中文。

2013-11-11

Irrlicht创建游戏GUI界面(演示程序+源代码)

Irrlicht游戏引擎自带了GUI模块,可以在三维的场景中创建二维的覆盖(Overlay),使得游戏中图标和文字的显示更为方便,配合游戏高效的三维渲染能力,相得益彰。 这一次我将尝试用代码对GUI进行显示,我们的目标是在窗口中既要显示三维的背景也要显示二维的界面菜单,想做得和DirectX的例子CustomUI那样,但也不要制作得那么复杂,符合游戏的实际情况即可。

2013-11-10

Irrlicht载入网格文件(演示程序+源代码)

学习Irrlicht载入网格文件,其实非常简单。通过我仿照例子写的一段代码,很简单地载入网格文件。 首先向大家介绍一下如何利用Irrlicht的源代码和doxygen生成帮助文档。进入irrlicht目录,在irrlicht-1.7.3/scripts/doc/irrlicht中,Windows下点击makedocumentation.bat,Linux下点击makedocumentation.sh,就可以根据代码生成帮助文档了。帮助文档在irrlicht-1.7.3/doctemp/html,找到index.html即可查看。

2013-11-08

反向运动学演示程序(含核心代码)

此资源是演示程序,但内部已将核心代码嵌入我已将代码写入程序中,需要的同行们可以下载。 ------------------------------------------------------------ 周五的时间总是美好的,今天也将自己制作的演示程序收官了。这篇文章是上一篇文章的继续,向大家介绍一下如何使用循环坐标下降(cyclic coordinate decent,CCD)算法来求解反向运动学问题。 注意到了没有?我们要解决的问题属于刚体运动学范畴,所以一切涉及到形变的因素都不用考虑,因此我们既可以使用四元数和一个向量表示骨骼的位置和平移,也可以将两者结合起来使用一个矩阵表示骨骼的所有变换。学过计算机图形学的同学都知道,旋转分量和平移分量是互不影响的,所以可以简单地分别将旋转和平移叠加来表示累次旋转和累次平移。

2013-11-02

骨骼动画演示程序

此资源是演示程序,大家可以免积分下载。 ---------------------------------------------- 欢迎来我的小站进行骨骼动画的讨论,地址是:http://blog.csdn.net/gamesdev ---------------------------------------------- 骨骼动画是角色动画的重要组成部分,因为只有把骨骼的位置摆准确了才能正确反映角色地姿势,后面的蒙皮动画就好做了。花了我十多天的时间,一直在琢磨着如何顺利地进行骨骼位置的变换,以达到MikuMikuDance中的样子。我做了很多实验,这回也算是有一定的成果吧,虽然关于反向运动学(Inverse Kinematics,IK)的部分我还没有吃透,不过做出一个东西,想分享分享。

2013-10-24

QtOpenGL以及Graphics-View框架整合的例子(演示程序+源代码)

此程序来源于我的一篇博客,欢迎访问。 http://blog.csdn.net/gamesdev/article/details/11994501 ------------------------------------- 欢迎访问我的博客。 http://blog.csdn.net/gamesdev ------------------------------------- Qt的QWidget大家族已经成熟,不会得到太大的发展了,而随着Qt5的发展,新的界面类会崭露头角,比如QWindow、QSurface、QScreen这些类。但现在的状况(Qt5.2即将出了),这些类和模块并不会对现有的GUI模块造成威胁,更不用说取代Qt4的GUI(在Qt5是QtGui和QtWidgets)模块了。自Qt4.4起,Qt拥有了Graphics-View框架,使用这个框架可以更加轻松地在窗口中嵌入任意你想要绘制的元素。但是据我所知,Qt5的那些类无法和Graphics-View框架进行整合,对于想要利用Qt中Graphics-View框架的同行们,只能退回Qt4的类进行开发了,Qt5的这些类对于创建纯OpenGL还是有利的。

2013-09-25

QtOpenGL以及Graphics-View框架整合的例子

此程序是演示程序,大家可以免积分下载。 ------------------------------------- 此程序来源于我的一篇博客,欢迎访问。 http://blog.csdn.net/gamesdev/article/details/11994501 ------------------------------------- 欢迎访问我的博客。 http://blog.csdn.net/gamesdev ------------------------------------- Qt的QWidget大家族已经成熟,不会得到太大的发展了,而随着Qt5的发展,新的界面类会崭露头角,比如QWindow、QSurface、QScreen这些类。但现在的状况(Qt5.2即将出了),这些类和模块并不会对现有的GUI模块造成威胁,更不用说取代Qt4的GUI(在Qt5是QtGui和QtWidgets)模块了。自Qt4.4起,Qt拥有了Graphics-View框架,使用这个框架可以更加轻松地在窗口中嵌入任意你想要绘制的元素。但是据我所知,Qt5的那些类无法和Graphics-View框架进行整合,对于想要利用Qt中Graphics-View框架的同行们,只能退回Qt4的类进行开发了,Qt5的这些类对于创建纯OpenGL还是有利的。

2013-09-25

基于Qt和GLSL的着色器例子(演示程序+源代码)

此程序附带了演示程序和源代码。 ------------------------------------------------- 欢迎访问我的博客: http://blog.csdn.net/gamesdev 此资源相关的博文: http://blog.csdn.net/gamesdev/article/details/10295961 http://blog.csdn.net/gamesdev/article/details/10296587 ------------------------------------------------- 我的计算机换成新的了,可以支持OpenGL2.0以及以上的规范,这样我开始正式涉足OpenGL高级的内容了。目前我的OpenGL基础库是Qt,它有完备的功能,以及对OpenGL一层好的封装,所以用它来开发基于OpenGL的应用程序非常合适。下面是我就来介绍一下如何开发基于Qt和GLSL的程序。 我制作的这个小例子还带了一个着色器编辑器。支持即时编译链接着色器,支持在GLSL规定的语法高亮,有关语法高亮的内容,感兴趣的同学可以下载一下。

2013-08-25

基于Qt和GLSL的着色器例子(演示程序)

此程序是演示程序,大家可以免积分下载。 ------------------------------------------------- 欢迎访问我的博客: http://blog.csdn.net/gamesdev 此资源相关的博文: http://blog.csdn.net/gamesdev/article/details/10295961 http://blog.csdn.net/gamesdev/article/details/10296587 ------------------------------------------------- 我的计算机换成新的了,可以支持OpenGL2.0以及以上的规范,这样我开始正式涉足OpenGL高级的内容了。目前我的OpenGL基础库是Qt,它有完备的功能,以及对OpenGL一层好的封装,所以用它来开发基于OpenGL的应用程序非常合适。下面是我就来介绍一下如何开发基于Qt和GLSL的程序。 我制作的这个小例子还带了一个着色器编辑器。支持即时编译链接着色器,支持在GLSL规定的语法高亮,有关语法高亮的内容,感兴趣的同学可以下载一下。

2013-08-25

OpenGL光照测试(源代码+演示程序)

此资源是我写的博客中的源代码,需要的同学可以下载。 --------------------------------------------------- 欢迎访问我的博客: http://blog.csdn.net/gamesdev --------------------------------------------------- 有关OpenGL光照测试的博客: http://blog.csdn.net/gamesdev/article/details/9796715 http://blog.csdn.net/gamesdev/article/details/9766713 --------------------------------------------------- 之前从来都没有涉及光照的内容,心想只要能通过常规的方法渲染出几何体甚至是模型就可以了,然而没有光照的日子注定是苦涩的,因为仅凭几何体和模型的颜色无法达到真是渲染的效果,在实际中有各种各样的光影响着我们的视觉效果,而OpenGL能够为我们还原现实生活中的光照现象。所以,我还是下决心研究OpenGL的光照了!

2013-08-07

OpenGL光照测试Revision2(演示程序)

此资源是演示程序,大家可以免积分下载。 ---------------------------------------------------- 这次修订修改了上次的一个Bug。说起来这个Bug还是挺严重的。因为在没有任何光照的情况下选择下一个光源或者是删除光源会导致错误地引用了QVector的下标而导致错误,这回我重新上传一遍,希望能够弥补这个错误。 随着项目越来越大,我发现越来越难管理源代码了,这是一个非常难以解决的问题。同时也希望大家能够通过反馈对话框将自己的测试结果反馈给我,我会认真地修改其中的Bug的。

2013-08-07

OpenGL光照测试Revision(演示程序)

此资源是演示程序,大家可以免积分下载。 ---------------------------------------------------- 上一个演示程序由于使用了不好的编译器和Qt库而导致的无法使用反馈对话框功能。这回我重新自编译了Qt库,随后制作了这个程序。为了让大家能够对我制作的程序作出反馈,请尽量下载这个版本的演示程序。 同样的,程序演示了如何在场景中添加光照和对光照的参数进行设置。好的光照可以使场景效果美轮美奂。

2013-08-05

使用Qt和OpenGL实现的光照测试

此资源是演示程序,大家可以免积分下载。 ----------------------------------------------- 以前上传的资源总被大家评论无法解压,其实只需要更新一下7-zip软件就行了。因为使用的算法可能带有LZMA2的。算了,这次的演示程序是一个zip格式的文件,我想这样应该大家都可以解压吧。 运行其中的程序,可以理解OpenGL中光照部分的工作方式。 很可惜的是,UP主并电脑烂爆了,无法运行OpenGL2.0及以上规范,所以无法运用Shader制作更加漂亮的效果了。不过这个演示程序看起来也不赖,大家说是么。

2013-08-04

用Qt和OpenGL制作的颜色立方体例子(演示程序+源代码)

此资源包含了演示程序和源代码。 ---------------------------- Qt5相比Qt4有了很大的改变,对OpenGL这一部分支持的力度加大了。如果说Qt5.0对OpenGL这部分的改变还是试验性的,那么Qt5.1中与OpenGL相关的函数和封装则是优化和一些小小的微调。早在Qt5.1还没有发布的时候,国外就有高手发布了Qt5.1对OpenGL支持的相关特性。

2013-07-16

用Qt和OpenGL制作的颜色立方体例子(演示程序)

此资源是演示程序,大家可以免积分下载。源代码参见我的其它资源。 ---------------------------------------- Qt5相比Qt4有了很大的改变,对OpenGL这一部分支持的力度加大了。如果说Qt5.0对OpenGL这部分的改变还是试验性的,那么Qt5.1中与OpenGL相关的函数和封装则是优化和一些小小的微调。早在Qt5.1还没有发布的时候,国外就有高手发布了Qt5.1对OpenGL支持的相关特性。

2013-07-16

用Qt动画框架设计飞入-消失特效(源代码+演示程序)

原博客地址:http://blog.csdn.net/jiangcaiyang123/article/details/8899279 -------------------------------------------------------------- Qt动画框架很强大,只要你想得到,它就有可能帮你实现。这一次我将抽取上一个演示程序的部分来进行介绍。这一部分我命名为“飞入 - 消失”特效,主要用在文字的显示方面,从这点上说很像PowerPoint上面特效的一种。

2013-05-08

用Qt动画框架设计飞入-消失特效(演示程序)

此资源是演示程序,大家可以免积分下载。 ------------------------------------------------- Qt动画框架很强大,只要你想得到,它就有可能帮你实现。这一次我将抽取上一个演示程序的部分来进行介绍。这一部分我命名为“飞入 - 消失”特效,主要用在文字的显示方面,从这点上说很像PowerPoint上面特效的一种。

2013-05-08

PMD格式模型的读取和显示(演示程序)

PMD格式模型的读取和显示(演示程序)

2013-05-08

人工智能算法演示(演示程序+源代码)

-----------------【请用Qt4.6+编译,Qt5目前有Bug】---------- 原博客地址:http://blog.csdn.net/jiangcaiyang123/article/details/8762365 --------------------------------------------------------------- 人工智能是一个非常具有潜力的分支,顾名思义,它可以通过计算机指令模拟人的行为,在游戏中的人工智能就非常地多样了。对于FPS、TAB、RPG、STG、ADV等游戏,有着不同的人工智能,但都基于几种理论:有限状态机、遗传算法、神经网络等。下面我就采用游戏中最基础也是最常用的人工智能算法来进行演示。 我的开发环境是: Windows: WindowsXP(SP3) + MinGW4.4/MinGW4.7 + Qt4.8.3/Qt5.0.1 + QtCreator2.6/QtCreator2.7 Linux: Ubuntu12.10 + gcc4.7 + Qt4.8.1/Qt4.8.4/Qt5.0.1 + QtCreator2.6/QtCreator2.7

2013-04-06

人工智能算法演示(演示程序)

此资源是演示程序,大家可以免积分下载。 ----------------------------------------------- 人工智能是一个非常具有潜力的分支,顾名思义,它可以通过计算机指令模拟人的行为,在游戏中的人工智能就非常地多样了。对于FPS、TAB、RPG、STG、ADV等游戏,有着不同的人工智能,但都基于几种理论:有限状态机、遗传算法、神经网络等。下面我就采用游戏中最基础也是最常用的人工智能算法来进行演示。 我的开发环境是: Windows: WindowsXP(SP3) + MinGW4.4/MinGW4.7 + Qt4.8.3/Qt5.0.1 + QtCreator2.6/QtCreator2.7 Linux: Ubuntu12.10 + gcc4.7 + Qt4.8.1/Qt4.8.4/Qt5.0.1 + QtCreator2.6/QtCreator2.7

2013-04-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除