
D3D学习之路
文章平均质量分 85
滴水梵音
程序人生
展开
-
DirectX 9的一些数学计算函数:平面
DirectX 9的一些数学计算函数:平面平面将三维物体表面剖分为一系列的三角形面,物体的光照亮度处理就转化为对这些平面三角形的照明处理,从而可简单地通过平面三角形的法向量与光的入射方向的夹角,来确定各种入射光对平面上每一点所贡献的亮度值。 对于三角形3个顶点p0,p1,p2构成的平面,选取一个垂直于该平面的法向量n。假设点p为平面上的任意一点,由于n . (p - p转载 2013-01-29 16:47:24 · 352 阅读 · 0 评论 -
OpenIL(DevIL)- 开发者图像库
OpenIL(DevIL)CxImage和OpenIL都两个对图片读取的库,前者是一个开源库,功能也比较强大,可以读取很多类型的图像文件,比如bmp,jpg,png ,tiff等等。后者也是一个对图片的读取,处理,显示的库文件(似乎不是免费的,我也没有搞懂,不过最关键的是,两个都可以使用就行了),但是,我在VS2008下配置Cxiamge很久都未成功(此库在2005年都停止更新),于是使用Open转载 2013-03-09 13:16:33 · 2147 阅读 · 0 评论 -
模板测试
模板测试 计算机通过图形卡控制显示器,而图形卡控制着显示器屏幕上每一点的颜色。图形卡控制屏幕的方法是在图形卡的显存中分配一个区域,区域中每一个单元中存储的颜色值和屏幕中相对应点的颜色一一对应,也就是说如果程序修改了显存区域中一个单元中存储的颜色值,也就修改了和这个单元相对应的屏幕点的颜色。这个显存区域一般叫屏幕显示区。 有时,需要为屏幕显示区的每个单元设置一转载 2013-02-27 14:05:52 · 346 阅读 · 0 评论 -
D3D深度测试
深度测试使用诸如Direct3D这样的渲染API在屏幕上渲染图形时,就会碰到所谓的“透支”(指的是渲染全景造成的内存浪费)问题。当在屏幕上绘制交迭(重爹)的两个或多个图元时,就会出现透支。这些图元有不同的位置,但在屏幕上渲染时,它们交迭在一起。因为Direct3D不知道要绘制的图元的先后顺序,所以会出现透支问题。Direct3D不仅不知道是哪个图元遮住了哪个图元,而且还不知道是哪个图元部分遮住转载 2013-02-27 14:37:24 · 986 阅读 · 0 评论 -
D3D中的AGP内存、系统内存、显存的理解
三种内存AGP内存(非本地显存),显存(本地内存),系统内存,其中我们都知道系统内存就是咱那内存条,那这AGP内存是个啥玩意啊?其实是因为在以前显卡内存都很小,那时还是在显存是16M,32M为主流的时候,如果你运行一个需要很多纹理的3D程序,那么显存一会就不够用了,那该咋办呢?只好问系统内存借点用用了!这就是AGP内存的由来,在我们电脑BIOS中有个设置AGP Aperture的选项,这里就是转载 2013-02-27 14:47:13 · 467 阅读 · 0 评论 -
透视投影
透视投影透视投影最显著的特征就是透视缩短,物体距离照相机越远,它在最终图像中看上去就越小。这是因为透视投影的视景体可以看成是一个金字塔的平截头体(顶部被一个平行于底面的平面截除)。位于视景体之内的物体被投影到金字塔的顶点,也就是照相机或观察点的位置。靠近观察点的物体看上去更大一些,因为和远处的物体相比,它们占据了视景体中相对较大的区域。这种投影方法常用于动画、视觉模拟以及其转载 2013-02-27 15:00:51 · 674 阅读 · 0 评论 -
初识3D游戏引擎
1 引擎规划 和当今的商业游戏引擎相比较而言,本书中这个构建在游戏上的游戏引擎,显得微不足道。游戏Stranded的引擎小到足以包含在单独一个库中。由于游戏引擎取决于开发人员的需求,因此开发或分割游戏引擎的正确方法不止一种。通常,最好是将无关的系统分割成不同的动态链接库(DLL),这样可以更方便地将改动过的软件更新、修改和重新发布给用户。如果有任何类型的更新,那么将全部.exe文转载 2013-02-27 15:09:43 · 382 阅读 · 0 评论 -
D3D模板缓存
一 模板的概念 模板缓存(Stencil Buffer)用来控制是否一个像素一个像素地向渲染目标表面绘制场景。在模板缓存最基本的一级上,它能够使程序掩盖住被渲染图像的一部分,使它不能显示。 模板缓存区是一个记录每个像素信息的附加的缓存区,很像一个Z缓存区。实际上,该缓存区就驻留在Z缓存区的某些位中。常见的模板/Z缓存区格式为15位的Z缓存和1位的模板缓存,或2转载 2013-03-01 13:53:42 · 961 阅读 · 0 评论 -
D3D中的Alpha颜色混合(1)
D3D中的Alpha颜色混合(1) 提示:阅读本文需要一定的3D图形学和DirectX9基础,如果你发现阅读困难,请参阅D3D中的材质和光照处理。本文用到的坐标系统变换函数请参阅DirectX 9的坐标系统变换。渲染管道流水线通常需要将来自顶点的颜色,纹理像素的颜色,光照颜色以及物体表面材质反射光颜色进行混合,生成计算机屏幕的像素颜色。将多种颜色混合在一起,转载 2013-03-04 11:24:40 · 1019 阅读 · 0 评论 -
D3D中的Alpha颜色混合(2)
D3D中的Alpha颜色混合(2) 本篇是D3D中的Alpha颜色混合(1)的后续篇,主要讲利用ID3DXSprite来实现图片间的颜色透明效果。在一幅图象上透明的显示另一幅图象,是Alpha颜色混合的一个典型应用,如下图所示,瞄准镜图象背景透明地显示在老虎背景图象上。实现瞄准镜的背景透明显示,首先需要准备如下两张图:转载 2013-03-04 11:35:48 · 1525 阅读 · 0 评论 -
D3D中的Alpha颜色混合(3)
D3D中的Alpha颜色混合(3) 本篇是D3D中的Alpha颜色混合(2)的后续篇。另一种实现实现背景透明显示的简便方法是直接应用渲染管道流水线的Alpha测试功能进行,D3D中的Alpha颜色混合(2)介绍的接口方法实际就是对Alpha测试的一个包装。Alpha测试是对需要写入绘图表面的像素颜色Alpha值进行测试,判断该Alpha值是否满足预先设定的条件,如果满足条件,转载 2013-03-04 11:37:59 · 927 阅读 · 0 评论 -
D3D模板测试
D3D模板测试 模版缓存是一个远离屏幕的缓存,我们能够用它来完成一些特效。模版缓存与后缓存和深度缓存有相同的定义,因此在模版缓存中的[i][j]像素与后缓存和深度缓存中的[i][j]像素是相协调的。就象名字所说,模版缓存就象一个模版它允许我们印刷渲染后缓存的某个部分。 1.使用模板缓存1.1启用模版缓存Device->SetRenderState(D3DRS_STENC转载 2013-04-01 09:18:28 · 1051 阅读 · 0 评论 -
Direct3D通用技术与特殊效果
原文见http://dev.gameres.com/Program/Visual/3D/d3dimhlp/d3dindex.htmDirect3D提供了一套强有力的工具来帮助我们提高三维场景的逼真度。下面我们将讨论一些Direct3D产生的通用的特殊效果。但是,可能出现的效果并不只限于这里所讨论的内容。下面我们分成几个主要的部分:1. 雾化(Fog)2. 公告板技术(Bil转载 2013-03-07 16:41:58 · 672 阅读 · 0 评论 -
D3DFVF_XYZ和D3DFVF_XYZRHW的区别
D3DFVF_XYZ和D3DFVF_XYZRHW的区别学习D3D9的时候遇到灵活顶点格式(FVF)中D3DFVF_XYZRHW和D3DFVF_XYZ之间差异而引起的问题。参看了同是C++博客的一篇博文,其分析如下: The RHW value, which stands for Reciprocal of Homogeneous W[1], tells Direct3D t转载 2013-02-23 23:11:55 · 640 阅读 · 0 评论 -
D3DPRESENT_PARAMETERS 说明
D3DPRESENT_PARAMETERS 说明2011-11-10 12:52 780人阅读 评论(0)收藏 举报typedef struct _D3DPRESENT_PARAMETERS_{ UINT BackBufferWidth; UINT BackBufferHeight;转载 2013-02-21 21:53:43 · 401 阅读 · 0 评论 -
判断点是否在三角形内
概述给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内。这是游戏设计中一个常见的问题。需要注意的是,这里假定点和三角形位于同一个平面内。本文介绍三种不同的方法,由浅入深一 内角和法连接点P和三角形的三个顶点得到三条线段PA,PB和PC,求出这三条线段与三角形各边的夹角,如果所有夹角之和为360度,那么点P在三角形内,否则不在,此法直观,但效率低下。转载 2013-01-29 15:11:15 · 331 阅读 · 0 评论 -
射线与平面的相交检测(Ray-Plane intersection test)
射线的定义在欧几里德几何中,射线的定义是:直线上一点和它一旁的部分。由此可知,射线有两个性质,一是只有一个端点,二是一端无限延伸。射线的参数方程其中p0是射线的起点, u是射线的方向向量,t >= 0,根据t的取值不同,可得射线上不同的点,所有这些点便构成了整个射线,如图平面的定义平面可以由法向量和平面内的一点来确定,因为过一点,有且只有一个平面与已转载 2013-01-29 15:15:32 · 1177 阅读 · 0 评论 -
射线和三角形的相交检测(ray triangle intersection test)
射线和三角形的相交检测是游戏程序设计中一个常见的问题,最典型的应用就是拾取(Picking),本文介绍一个最常见的方法,这个方法也是DirectX中采用的方法,该方法速度快,而且存储空间少。先讲述理论,然后给出对应的代码实现。 理论部分一个直观的方法我想大多数人在看到这个问题时,可能都会想到一个简单而直观的方法:首先判断射线是否与三角形所在的平面相交,如转载 2013-01-29 15:30:44 · 630 阅读 · 0 评论 -
D3D常用函数列表
D3D常用函数列表D3DXCOLOR* D3DXColorAdd //两个颜色的组合值D3DXCOLOR* WINAPI D3DXColorAdjustContrast( //调整颜色对比度D3DXCOLOR *pOut,const D3DXCOLOR *pC,FLOAT c);D3DXCOLOR* WINAPI D3DXColorAdjustSatur转载 2013-01-31 13:51:25 · 643 阅读 · 0 评论 -
3D数学公式
众所周知,数学中向量、矩阵(变换)、齐次坐标以及四元数的概念和规则是3D游戏编程和计算机图形学的理论基础。下面介绍开发过程中经常用到的一些数学公式。 直线公式 P(t) = (1-t)P1 + tP2 其中,P1和P2表示3D空间的两点向量。t可以是任意实数。P1与P2之间的线段对应于t在0到1之间的值。 点到直线的距离公式 给定一个点Q,原创 2013-02-05 13:17:02 · 4636 阅读 · 1 评论 -
D3D中的渲染状态简介
1). 设置着色模式:SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) //设置格劳德着色模式2). 设置多边形填充模式:SetRenderState(D3DRS_FILLMODE, D3DFILL_PO转载 2013-02-19 15:19:49 · 378 阅读 · 0 评论 -
D3D中几种DrawPrimitive用法
前面的学习,我们知道如何现实一个三角形了,这就意味着我们掌握了如何把我们需要的顶点参数(例如坐标,颜色等等)送入后台缓冲,然后提交前台显示。今天给大家说说对自己的顶点的渲染方式的问题。大家先一起回顾下上节课的代码片断:VOID Render(){g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(10,10,10转载 2013-02-19 15:22:50 · 1836 阅读 · 0 评论 -
3D数学透视投影
3D数学透视投影一般仿射变换3x3矩阵仅能表达3D中的线性变换,不能包含平移。经过4x4矩阵的武装后,现在我们可以构造包含平移在内的一般仿射变换矩阵了。例如:(1)绕不通过原点的轴旋转。(2)沿不穿过原点的平面缩放。(3)沿不穿过原点的平面镜像。(4)向不穿过原点的平面正交投影。它们的基本思想是将变换的"中心点"平移到原点转载 2013-02-19 17:41:02 · 1492 阅读 · 0 评论 -
3D数学4D齐次空间
4D齐次空间4D向量和4x4矩阵不过是对3D运算的一种方便的记忆而已。4D向量有4个分量,前3个是标准的x,y和z分量,第4个是w,有时称作齐次坐标。为了理解标准3D坐标是怎样扩展到4D坐标的,让我们先看一下2D中的齐次坐标,它的形式为(x, y, w)。想象在3D中w=1处的标准2D平面,实际的2D点(x, y)用齐次坐标表示为(x, y, 1),对于那些不在w=1平面上转载 2013-02-19 17:43:33 · 2473 阅读 · 0 评论 -
D3D中的渲染到纹理
D3D中的渲染到纹理渲染到纹理是D3D中的一项高级技术。一方面,它很简单,另一方面它很强大并能产生很多特殊效果。 比如说发光效果,环境映射,阴影映射,都可以通过它来实现。渲染到纹理只是渲染到表面的一个延伸。我们只需再加些东西就可以了。首先,我们要创造一个纹理,并且做好一些防范措施。第二步我们就可以把适当的场景渲染到我们创建的纹理上了。然后,我们把这个纹理用在最后的渲染上。转载 2013-02-19 17:51:04 · 510 阅读 · 0 评论 -
Directx3D - 3D空间的坐标系
Directx3D - 3D空间的坐标系1. 本地坐标系、局部坐标系(Local Coordinate) 所谓本地坐标系,就是坐标系以物体的中心为坐标原点,物体旋转、平移等操作都是围绕局部坐标系进行的。这时当物体模型进行旋转、平移等操作时,局部坐标系也执行相应的旋转、平移等操作。 局部坐标系是一个假想的坐标系,该坐标系与物体的相对位置至始至终是不变的,假想出这个转载 2013-02-19 14:30:06 · 574 阅读 · 0 评论 -
Direct3D中的雾化效果
Direct3D中的雾化效果 在Direct3D 中,雾化是通过将景物颜色与雾的颜色,以随物体到观察点距离增加而衰减的混合因子混合而实现的。 两种雾化方法:顶点雾化和像素雾化。 三种雾化公式:线性雾化,指数雾化,指数平方雾化。 两种雾化处理:基于深度的雾化处理和基于范围的雾化处理。基于深度是指两个点之间的深度(Z)差值,基转载 2013-03-05 17:42:42 · 1529 阅读 · 0 评论 -
固定渲染管线与可编程渲染管线
direct/ogre 嵌入wpf GPU渲染流水线固定渲染管线与可编程渲染管线 2012-07-29 18:31:51| 分类:dierct | 标签:|举报|字号大中小 订阅1.固定渲染管线与可编程渲染管线的区别: 1)、固定渲染管线 ——这是标准的几何&光照(T&L)管线,功能是固定的,它控制着转载 2014-09-02 14:17:07 · 477 阅读 · 0 评论