Graphics
天空的梦想1986
这个作者很懒,什么都没留下…
展开
-
有关 Direct3D技术的初步探索-------矩阵变换
几何渲染管线把顶点作为输入,可进行3种变换:世界变换,摄像机变换和投影变换,并将这些变换施展到顶点。1世界变换:一个模型的顶点要从本地坐标系统变换到世界坐标系统。世界变换包含平移,旋转,缩放的 混合变换。目的要生成世界矩阵W,可由缩放矩阵S,旋转矩阵R,平移矩阵T混合生成,一般是先放缩,再旋转,后平移,W= S * R * T. 1 平移矩阵: 通过执行原创 2008-09-26 01:53:00 · 1490 阅读 · 0 评论 -
实时绘制基于LOD的地形相关技术
LOD(levels of etails细节层次)是解决大规模地形实时渲染的一项关键技术。在地形中实现LOD技术后大大加速了地形的渲染。其基本思想是:对地形生成具有不同层次(不同分辨率)的多个版本,在绘制地形时依据视点来选择合适的层次细节进行绘制。本文用基于四叉树构建的地形来实现相关Lod算法,有关四叉树构建地形的技术可参考“引擎技术研究之地形技术”。 可把全部叶子节点保原创 2008-11-19 01:25:00 · 4261 阅读 · 0 评论 -
Direct3D中的雾化效果
在Direct3D 中,雾化是通过将景物颜色与雾的颜色,以随物体到观察点距离增加而衰减的混合因子混合而实现的。 两种雾化方法:顶点雾化和像素雾化。 三种雾化公式:线性雾化,指数雾化,指数平方雾化。 两种雾化处理:基于深度的雾化处理和基于范围的雾化处理。基于深度是指两个点之间的深度(Z)差值,基于范围则是两点间的直线距离。Direct3D默认的是基于深度的雾化。可设置基于范围的雾化,但要先检测设备是否支持: g_pd3dDevice->GetDev原创 2010-12-03 02:00:00 · 893 阅读 · 0 评论 -
渲染目标的实际应用:Flat
从实质上说,Flat是一个四边形,由两个三角形组成。将指定目标的渲染效果贴在Flat上,可实现很多种效果。本文实现的是在水底往上看的效果:把贴在水面上的纹理贴在该四边形上。 先看Flat类定义: struct flat2D { float4 position; float2 uv; }; class Flat : public RenderObject {原创 2010-11-28 01:44:00 · 586 阅读 · 0 评论 -
有关引擎架构的一些总结
游戏的引擎可比作赛车的引擎,而引擎是赛车的心脏,决定着赛车的性能和稳定性,赛车的速度、操纵感这些直接与车手相关的指标都是建立在引擎的基础上的。游戏也是如此,简单地说,游戏引擎就是用于控制所有游戏功能的主程序。关于引擎架构方面,我们可以把引擎里的各个类封装成一个类库,再在客户端的项目里引入这个库文件,即可方便地调用类库里实现各个类的具体操作。一般引擎应包括哪些类了?在我做的一个渲染引擎中,原创 2008-11-19 23:23:00 · 1029 阅读 · 2 评论 -
引擎技术研究之实时阴影技术
阴影和纹理映射一样,通常是在渲染器中附加算法来实现,并被粘贴到场景中。在场景中每个光源产生的贴图称为阴影贴图(shadermap)。在渲染的过程中对该贴图进行存取,以找出某个像素是否位于阴影中。阴影贴图的生成原理如下图所示: 可把光源模拟成有特定方向的发光点,其发出的光线与长方体相交与A点,若射穿长方体则与地面相交于B点,我们记录光线首次与物体相交的点的信息,原创 2008-10-09 23:10:00 · 2394 阅读 · 0 评论 -
引擎技术研究之水的渲染
水的表面显示场景物体倒影的效果。这是把场景渲染到水面上来实现,不是简单的渲染,而要经过反射处理,即要反射渲染目标。法线贴图是可以应用到3D表面的特殊纹理,有时也称凹凸纹理,它包括了每个像素的高度值,内含许多细节的表面信息,能够在平平无奇的物体上,创建出许多种特殊的立体外形。可以把法线贴图想像成与原表面垂直的点,所有点组成另一个不同的表面。对于视觉效果而言,它的效率比原有的表面更高,若在特原创 2008-10-09 02:08:00 · 2193 阅读 · 0 评论 -
引擎技术研究之渲染到目标
渲染到目标,通俗地说就是把特定场景的物体放在目标上显示。这个目标可以是纹理,窗口等。本文介绍的是把场景渲染到纹理,并以图片的形式保存起来。一 其原理如下:在初始化时创建一纹理Texture,获取指向该纹理的指针,接着创建深度表面,并获取指向其的指针DepthSurface。在渲染时先获取系统的默认的渲染目标和深度模板表面,再设置Texture的表面为渲染目标,并通过DepthSur原创 2008-10-08 02:52:00 · 1947 阅读 · 0 评论 -
引擎技术研究之Shader技术
Shader技术属于GPU的渲染技术,其相应语言是高级着色器语言(High Level Shader Language 简称HLSL)。HLSL主要作用为将一些复杂的图像处理快速而又有效率地在显卡上完成。 在DirectX中有两种Shader,顶点着色器Vertex Shader (vs)和像素着色器Pixel Shader (ps)。 能够实现VS和PS的显卡的图形处理流水线被称作原创 2008-10-07 02:49:00 · 1476 阅读 · 0 评论 -
引擎技术研究之场景管理------四叉树与视椎剔除技术
先说一下视椎的概念:视椎是摄像机可见的空间体积,外观就像截掉顶部的金字塔。视椎剔除就是将在视锥外的物体不进行渲染操作,以加快运行速度。大型场景经常用四叉树的技术来管理,即用四叉树的方式进行空间划分。 一:场景管理中四叉树的划分现以一地面为例讨论四叉树的划分技术。地面是由很多个三角形组成,两个三角形合成一正方形。如不进行四叉树划分,则需遍历所有三角形以确定被剔除物体,算法复杂度大。如原创 2008-10-04 02:42:00 · 4448 阅读 · 0 评论 -
引擎技术研究之地形技术
地形的网格可以使用高度图作为数据源生成。高度图可以是位图,可理解成二维数组,地形实际上就是一系列高度不同的网格而已,这样数组中每个元素的索引值刚好可以用来定位不同的网格(x,z),而所储存的值就是网格的高度(y)。 地形的渲染可由四叉树来管理,网格的每个顶点对应四叉树的各个节点,有关四叉树的应用可参考"引擎技术研究之场景管理------四叉树与视椎剔除技术"。现讨论地形技原创 2008-10-05 16:13:00 · 2072 阅读 · 0 评论 -
Direct3D中的Pick技术
------------------------pick.h------------------------ #pragma once#include using std::vector; struct PickResult{ DWORD dwFace; // mesh face that was intersected FLOAT fB原创 2008-09-28 23:51:00 · 1836 阅读 · 0 评论 -
有关 Direct3D技术的初步探索-------基本类的封装
先讨论一下SDK中自带的例子:Meshes。该程序的效果是一个老虎模型绕世界坐标原点持续地旋转。程序主循环其程序流程如下:WinMain()-> InitD3D()->InitGeometry()->Render()->cleanup()其中WinMain()是程序入口,MsgProc() 处理程序的消息的回调函数,InitD3原创 2008-09-25 14:50:00 · 1042 阅读 · 0 评论 -
有关 Direct3D技术的初步探索-------基本渲染流程
渲染要进行什么操作,这随着应用技术的深入而多样化和复杂化。 一般来说,即时信息更新部分包括: 1漫游信息的更新:处理即时鼠标事件和键盘事件 由鼠标或键盘触发场景模型的平移,旋转,缩放等操作,以及摄像机的旋转,平移等。 2摄像机信息的更新:摄相机位置,朝向等信息的改变 摄像机的更新直接影响到视图矩阵和投影矩阵的实时更新原创 2008-09-27 13:13:00 · 1745 阅读 · 0 评论 -
有关 D3DXCreateEffectFromFile 调用失败的问题
最近把自己的一个DEMO移植到另外一台电脑上,当全部环境整理好之后,一运行却发现调用 D3DXCreateEffectFromFile 的地方没成功。 之前遇到过类似问题,以为是资源目录问题,于是设置好了工作目录,问题同样出现。 怀原创 2011-08-16 08:43:34 · 4433 阅读 · 2 评论