随笔分类 -  Direct3D

摘要:转自:http://www.cnblogs.com/minggoddess/archive/2012/12/03/2800133.html光照图的理论和实践 这是我翻译的一篇文章,不知道哪年翻译的,没译完。这几天看见了,又拿出来接着翻译。可是还有那么多,不知道那天能弄出来。所以我就先把翻译的贴出来... 阅读全文
posted @ 2015-01-29 16:10 ☆A希亿 阅读(946) 评论(0) 推荐(0) 编辑
摘要:【Pixel-Fillrate】 “填充率“以每秒钟填充的像素点为单位,“三角形(多边形)生成速度“则表示每秒钟三角形(多边形)生成个数。现在的3D显卡的性能也主要看着两项指标,这两项指标的数值越大,显卡三维图像的处理能力就越强,显卡的档次也就越高。 填充率的故事 谈到3D加速卡,最常用的一个... 阅读全文
posted @ 2015-01-25 21:31 ☆A希亿 阅读(3449) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/christina123y/article/details/5963679在计算机图形学中,只要是变换,无论平移,旋转,缩放,都是乘一个矩阵。在模型视图变换时,顶点乘模型视图变换矩阵,而顶点对应的顶点法线向量(或其他的法线向量)则要乘模型视图矩阵的逆转... 阅读全文
posted @ 2015-01-23 12:52 ☆A希亿 阅读(1357) 评论(0) 推荐(0) 编辑
摘要:一、 1、法线归一化的一个意思是:通过叉乘得到一个面的面法线,然后进行归一化的目的是,求得单位长度的向量,就是说,法线向量的x,y,z都要除以向量长度。因为法线长度和面积成正比,但光照不能随面积变化,所以取一个单位值。当然点法线需要考虑通过该点的所有面的面法线。 2、法线的处理还有一个问题是:人们容... 阅读全文
posted @ 2015-01-23 12:41 ☆A希亿 阅读(2844) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.cnblogs.com/soroman/archive/2008/03/21/1115571.html思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用1。矩阵和线性变换:一一对应矩阵是用来表示线性变换的一种工具,它和线性变换之间是一一对应的。考虑线性变换:... 阅读全文
posted @ 2015-01-23 11:00 ☆A希亿 阅读(775) 评论(0) 推荐(0) 编辑
摘要:1.固定渲染管线与可编程渲染管线的区别:1)、固定渲染管线 ——这是标准的几何&光照(T&L)管线,功能是固定的,它控制着世界、视、投影变换及固定光照控制和纹理混合。T&L管线可以被渲染状态控制,矩阵,光照和采制参数。2)、顶点着色器——图形开发人员可以对渲染管线中的顶点运算和像素运算分别进行编程处... 阅读全文
posted @ 2015-01-18 22:20 ☆A希亿 阅读(496) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/tspatial_thunder/article/details/5937701现在的游戏图形部分越来多依靠GPU来渲染绘制。说起GPU先说着色器,着色器是可编程的(programmable),分为顶点着色器和像素着色器。着色器是一段运行在GPU上的程序,可以取代渲染的固定功能流水线中部分功能。在D3d9c可以用固定管道渲染(fixed function pipeline),也可以用可编程的管道(programmablefunction pipeline)渲染。下面大概总结下各自对vertex的绘制流程。看看传统的渲染流程和利用可编程管道渲染的异 阅读全文
posted @ 2014-01-08 21:49 ☆A希亿 阅读(803) 评论(0) 推荐(0) 编辑
摘要:自:http://www.cnblogs.com/zy776/archive/2007/03/21/683065.html计算机图形系统的发展以提供更快的图形数据处理和更真实的视觉效果为目标!基于光栅化(Rasterization)图形管线如图-2所示,图中下部虚线部分数据流向代表固定图形管线。应用... 阅读全文
posted @ 2014-01-08 11:22 ☆A希亿 阅读(333) 评论(0) 推荐(0) 编辑
摘要:脏矩形技术学习 很久以来由于工作上的繁忙没有写新东西了~hoho~ 本文基于2D表现的游戏,在当今3D大行其道的时代,说2D是否显得格格不入?这个问题我不作讨论,因为本人从事的一直都是2D游戏的开发,所以如果你认为讨论2D技术是一个过时的东西就此打住。 废话不多说,下面进入正题。 优化一直是我在程序中追求的东西之一,想想让自己的游戏在一个古董机器能流畅的运行或者说在当今的机器上,CPU占用率和内存占用率都很低的情况。(毕竟我非常讨厌一个游戏独占了我所有的CPU资源)。 如果从图形接口上作优化,常用的就是使用3D加速和CPU的特殊指令(虽然说DirectDraw能够使用2D硬件加速,但大部分机器 阅读全文
posted @ 2013-02-01 18:40 ☆A希亿 阅读(730) 评论(0) 推荐(0) 编辑
摘要:《Real Time 3D Terrain Engines Using CplusplusAnd DirectX9》(实时地形引擎)随书源码,gaia引擎源码下载:http://ishare.iask.sina.com.cn/f/23556371.html 阅读全文
posted @ 2012-03-17 21:54 ☆A希亿 阅读(1034) 评论(0) 推荐(1) 编辑
摘要:深入理解Direct3D9深入理解D3D9对图形程序员来说意义重大,我把以前的一些学习笔记都汇总起来,希望对朋友们有些所帮助,因为是零散笔记,思路很杂,还请包涵。其实只要你能完美理解D3DLOCK、D3DUSAGE、D3DPOOL、LOST DEVICE、QUERY、Present()、BeginScene()、EndScene()等概念,就算是理解D3D9了, 不知道大家有没有同感。有如下几个问题,如果你能圆满回答就算过关:)。问题1、 D3DPOOL_DEFAULT、D3DPOOL_MANAGED、D3DPOOL_SYSTEMMEM和D3DPOOL_SCRATCH到底有何本质区别?2、 D 阅读全文
posted @ 2011-11-29 22:57 ☆A希亿 阅读(596) 评论(0) 推荐(0) 编辑
摘要:Alpha测试可控制Direct3D程序是否绘制当前像素(根据是否满足Alpha测试条件),图形程序应用Alpha测试可以有效地屏蔽某些像素颜色。与Alpha混合相比,Alpha测试不能将绘制像素颜色与颜色缓冲区像素混合,像素要么完全不透明,要么完全透明。由于无须进行颜色缓冲区的读操作,因此Alpha测试在速度上要优于Alpha混合。 Alpha测试通过渲染状态D3DRS_ALPHATSTEABLE设置,下列代码激活Direct3D的Alpha测试状态: // g_pd3dDevice为有效的Direct3D设备 g_pd3dDevice->SetRenderState( D3DRS_A 阅读全文
posted @ 2011-11-29 11:30 ☆A希亿 阅读(2677) 评论(0) 推荐(0) 编辑
摘要:[翻译]DirectX 状态状态Direct3D设备使用状态来配置所有的管道处理。采样器状态通过例如定义纹理寻址方式(texture addressing)和过滤模式控制纹理采样器设置。纹理状态设置用于控制纹理如何被组合以及相互之间如何混合的多重纹理混合器。渲染状态控制大多数管道状态。状态块是存储和恢复状态的便利机制。状态块保存和恢复状态状态块是一组设备状态。设备状态由渲染状态,定点状态,像素状态,或上述的所有状态组成。状态块包含设备当前状态的快照,或你可以创建状态块来记录每一个应用程序造成的状态改变。创建状态块选择你想获取的状态类型,比功能照下面的方法创建状态块:IDirect3DState 阅读全文
posted @ 2011-11-29 11:26 ☆A希亿 阅读(1066) 评论(0) 推荐(0) 编辑
摘要:透过那些透明度非常高的物体看其他物体,例如透过几乎完全透明的玻璃看其他物体,会感到玻璃好像不存在,在三维图形程序中渲染时就可以不渲染这些透明度非常高的物体,从而可以提高渲染速度,这可以通过alpha测试来实现。alpha测试根据当前像素是否满足alpha测试条件(即是否达到一定的透明度)来控制是否绘制该像素,图形程序应用alpha测试可以有效地屏蔽某些像素颜色。与alpha混合相比,alpha测试不将当前像素的颜色与颜色缓冲区中像素的颜色混合,像素要么完全不透明,要么完全透明。由于无需进行颜色缓冲区的读操作和颜色混合,因此alpha测试在速度上要优于alpha混合。alpha测试通过激活渲染状 阅读全文
posted @ 2011-11-28 22:24 ☆A希亿 阅读(797) 评论(0) 推荐(0) 编辑
摘要:材质alpha顶点alpha是没有使用光照和材质的情况,如果对场景内的物体添加光照和材质而没有添加纹理时,顶点alpha值取决于材质属性中漫反射颜色的alpha系数和灯光颜色中的alpha系数,顶点alpha值是根据光照计算得到的。顶点光照计算是分别针对红、绿、蓝和alpha进行的,其中alpha光照计算的结果就是顶点的alpha值。有了顶点的alpha值就可根据着色模式计算出每个像素的alpha值,第一个示例程序就是材质alpha的例子。纹理alpha当对物体表面使用了纹理之后,像素的alpha值就是纹理alpha混合之后的值,所以这又取决于纹理的alpha混合方法,纹理alpha混合方法决 阅读全文
posted @ 2011-11-28 22:23 ☆A希亿 阅读(510) 评论(0) 推荐(0) 编辑
摘要:alpha源混合系数通常设置为D3DBLEND_SRCALPHA,即当前绘制像素的alpha值。目标混合系数设置为D3DBLEND_INVSRCALPHA,即1减去当前绘制像素的alpha值。那么当前绘制像素的alpha值又是如何得到的呢?如果没有使用材质和纹理,当前绘制像素的alpha值来自每个顶点颜色设置的alpha值;如果使用光照和材质,则当前像素的alpha值来自物体表面材质;如果为物体表面使用了纹理,则alpha值还与纹理有关。顶点alpha如果在程序中直接指定每个顶点的颜色,则可以直接给出每个顶点颜色的 alpha值,可以在定义顶点时直接声明该顶点的alpha值,也可以在程序运行时 阅读全文
posted @ 2011-11-28 22:22 ☆A希亿 阅读(456) 评论(0) 推荐(0) 编辑
摘要:深度测试与alpha混合(1)在绘制复杂的三维场景时,不可避免地会出现物体间的相互遮挡,在这种情况下,为了正确地绘制场景需要使用深度测试。半透明物体的绘制不同于不透明物体,Direct3D通过alpha混合实现半透明物体的绘制。深度测试可以简化复杂场景的绘制,alpha混合可以使绘制的三维场景更完整、更逼真。在复杂的场景中,通常有多个物体需要绘制,这些物体之间通常会存在遮挡关系,离观察点较远的物体会因为近处物体的者的遮挡而不可见或只有部分可见,Direct3D图形系统提供了深度测试功能来实现这种效果。深度缓冲区与深度测试要理解深度测试,首先需要理解深度缓冲区。深度缓冲区是Direct3D用来存 阅读全文
posted @ 2011-11-28 22:20 ☆A希亿 阅读(1261) 评论(0) 推荐(0) 编辑
摘要:在渲染多边形网格对象到场景中的时候,离观察者越远的对象应该越模糊,同时离观察者越近的物体应该越清楚,这就是深度排序(depth sorting)。深度排序有两种常用的方法。第一种方法称为画家算法(painter's algorithm)。这种方法将对象划分成不同的多边形,由后往前对这些多边形进行排序,再按照排好的顺序绘制出这些多边形。采用这种方法绘制多边形,能够确保前面的多边形总是在其后多边形之前进行绘制。深度排序的第二种方法称为z缓冲方法(z- buffer),它是图形硬件设备使用最多的方法。这种方法依赖于像素,每个像素都有一个z值(z值是像素距离观察者的距离)。当每个像素被写入时, 阅读全文
posted @ 2011-11-21 17:46 ☆A希亿 阅读(483) 评论(0) 推荐(1) 编辑
摘要:一个用D3D绘制2D图形的例子思路如下:(1)函数Do_Init初始化D3D,D3D设备,顶点缓冲,纹理;主要调用这几个函数: Direct3DCreate9,GetAdapterDisplayMode,CreateDevice,CreateVertexBuffer, Lock,Unlock,D3DXCreateTextureFromFile。(2)函数Do_Frame绘制一帧,主要调用这几个函数: Clear,BeginScene,EndScene,SetStreamSource,SetFVF,SetTexture, DrawPrimitive。(3)函数Do_Shutdown释放D3D资源 阅读全文
posted @ 2011-11-07 22:05 ☆A希亿 阅读(1210) 评论(0) 推荐(0) 编辑
摘要:学习D3D9的时候遇到灵活顶点格式(FVF)中D3DFVF_XYZRHW和D3DFVF_XYZ之间差异而引起的问题。参看了同是C++博客的一篇博文,其分析如下: The RHW value, which stands for Reciprocal of Homogeneous W[1], tells Direct3D that the vertices that are being used are already in screen coordinates. This value is normally used in fog and clipping calculations and sh 阅读全文
posted @ 2011-11-07 22:05 ☆A希亿 阅读(620) 评论(0) 推荐(0) 编辑