DirectX SDK Samples
文章平均质量分 70
HowdChow
这个作者很懒,什么都没留下…
展开
-
DirectX9 SDK Samples(2) Tutorial2-Rendering Vertices
这一次讲的是渲染顶点。Step 1 - Defining a Custom Vertex Typestruct CUSTOMVERTEX{ FLOAT x, y, z, rhw; // The transformed position for the vertex. DWORD color; // The vertex color.};#define D翻译 2012-05-04 16:29:43 · 646 阅读 · 0 评论 -
DirectX9 SDK Samples(13) Pick
本例子是关于用鼠标选取物体的。1OnCreateDevice // Load the mesh with D3DX and get back a ID3DXMesh*. For this // sample we'll ignore the X file's embedded materials since we know // exactly the mod翻译 2012-05-09 16:15:09 · 1194 阅读 · 0 评论 -
DirectX9 SDK Samples(15) OptimizedMesh Sample
优化网格,主要是将triangle list优化成triangle strip。主要用到的API有:ID3DX10Mesh::Optimize,D3DXConvertMeshSubsetToSingleStrip,D3DXConvertMeshSubsetToStrips而渲染的时候对应用到的函数有:IDirect3DDevice9::SetStreamSource,IDirect3DDe翻译 2012-05-12 20:48:41 · 795 阅读 · 0 评论 -
DirectX9 SDK Samples(16) ShadowMap Sample(1)
阴影映射,这是常用的技术了,具体技术解释就不说了,SDK中也有,还是阅读代码吧。1OnResetDevice // Create the shadow map texture V_RETURN( pd3dDevice->CreateTexture( ShadowMap_SIZE, ShadowMap_SIZE,翻译 2012-05-12 23:03:08 · 962 阅读 · 1 评论 -
DirectX9 SDK Samples(16) ShadowMap Sample(2)
这一节阅读FX文件。阅读顺序基本和程序执行情况一致。首先执行的是渲染阴影图。//-----------------------------------------------------------------------------// Technique: RenderShadow// Desc: Renders the shadow map//-----------------翻译 2012-05-13 12:45:16 · 708 阅读 · 0 评论 -
DirectX9 SDK Samples(17) StateManager Sample
在渲染不同的材质中,我们往往需要设置不同的状态。其中一种办法是在每一个FX文件中最后添加一个PASS,把状态设置回原来的默认值。另一个方法就是本次例子所用到的,使用ID3DXEffectStateManager。OnRenderState内调用SortRenderables对可渲染对象进行排序。void SortRenderables(){ if( g_bSortOrderD翻译 2012-05-14 19:24:45 · 807 阅读 · 0 评论 -
DirectX9 SDK Samples(19) AntiAlias
抗锯齿,说明文档中写得比较少,只提到了multisampling和centroid sampling。准确来说,这一次主要看FX文件,CPP文件只是在渲染一些能够突出抗锯齿效果的物体而已,并没有新代码。texture g_tDiffuse;sampler PointSampler =sampler_state{ Texture = ; MinFilter = Poi翻译 2012-05-17 00:44:05 · 1618 阅读 · 0 评论 -
DirectX9 SDK Samples(20) HDRDemo Sample(1)
HDR,这里有一篇写得不错的:http://www.zwqxin.com/archives/shaderglsl/review-high-dynamic-range.html原理可以参考上面的博文~那就进入代码。首先我们看看Luminance部分,也就是计算平均亮度的部分。LPDIRECT3DPIXELSHADER9 g_pLumDispPS = NULL; /翻译 2012-05-18 21:24:06 · 1333 阅读 · 0 评论 -
DirectX9 SDK Samples(20) HDRDemo Sample(2)
接下来进入第二部分,Bloom,SDK里称为post-processing effect。代码所在文件为PostProcess.cpp。LPDIRECT3DTEXTURE9 g_pBrightPassTex = NULL; // The results of performing a bright pass on the original HDR imageryL翻译 2012-05-18 23:54:19 · 957 阅读 · 0 评论 -
DirectX9 SDK Samples(20) HDRDemo Sample(3)
HDR需要对源场景进行处理,因此在渲染初始源场景的时候,也要创建一个纹理,并且将场景渲染到这个纹理上,然后进行HDR处理。这个例子中,上述工作由HDRScene完成。关于渲染到纹理,这篇博文讲得很清楚:http://www.cnblogs.com/graphics/archive/2011/04/23/2024294.html那么到此为止,我们明白了如何进行计算平均亮度,如何进行Bloom,如翻译 2012-05-19 01:08:37 · 848 阅读 · 0 评论 -
DirectX9 SDK Samples(20) MeshFromObj Sample
从obj文件读入网格信息,组成网格。首先看一下MeshLoader的代码。1.Create创建网格,首先是调用LoadGeometryFromOBJ,这个函数主要用来读入网格的几何信息,例如顶点、法线等等 for(; ; ) { InFile >> strCommand; if( !InFile ) break;翻译 2012-05-18 15:18:43 · 797 阅读 · 0 评论 -
DirectX9 SDK Samples(21) HDRCubeMap Sample
HDR + CubeMap,HDR上一节讲过,这里是动态生成CubeMap。载入资源的都省略了,基本都没有什么障碍了,不过这个例子的载入部分封装的不错,特别是FX部分。OnFrameRender函数内的主体如下,可以看到主要的渲染函数分别在RenderSceneIntoCubeMap和RenderScene中。下面将阅读这两个函数的代码。 RenderSceneIntoCub翻译 2012-05-19 21:16:03 · 1196 阅读 · 0 评论 -
DirectX9 SDK Samples(22) ParallaxOcclusionMapping
http://blog.csdn.net/xujiezhige/article/details/7326606POM原理上面这篇博文已经写得很清楚了,但要想看懂代码,至少对于我来说很有难度。现在挖个大坑,以后再填。。。转载 2012-05-22 10:51:52 · 494 阅读 · 0 评论 -
DirectX9 SDK Samples(23) HDRFormats Sample
HDR需要浮点纹理的支持,如果显卡不支持浮点纹理的话,那只好通过压缩保存浮点在整数纹理上,然后需要的时候再解码。当然,这是以性能下降为代价的。其实,我觉得,既然这机子连浮点纹理都不支持,那还显示什么HDR啊。。。好,HDR的原理那都是没什么好说的了,前面曾经看过。那现在就看一下这个例子是如何压缩解压的。假若支持RGB16,那么只需要将RGB分别除以一个比较大的数就可以了,这个例子中是100翻译 2012-05-23 23:40:30 · 1088 阅读 · 0 评论 -
DirectX9 SDK Samples(14) EffectParam Sample(2)
1OnCreateDevice函数 // Create the effect pool object if shared param is enabled if( g_SampleUI.GetCheckBox( IDC_SHARE )->GetChecked() ) V_RETURN( D3DXCreateEffectPool( &g_pEffectPool翻译 2012-05-12 16:44:56 · 575 阅读 · 0 评论 -
DirectX9 SDK Samples(14) EffectParam Sample(1)
这个例子是关于着色器参数的,涉及两方面。首先是ParameterBlock,通过参数块将几个参数绑定在一起,用一个句柄设定一组参数,简化参数设定。第二个是ParameterSharing,在创建效果框架时传递EffectPool参数,拥有同一个Pool的效果框架会共享Pool的参数,同时会同步进行更新。具体可以参考SDK Documentation。下面开始阅读代码。1全局变量和定义数据翻译 2012-05-12 16:20:28 · 740 阅读 · 0 评论 -
DirectX9 SDK Samples(3) Tutorial 3: Using Matrices
这一次内容仍然为渲染一个基本图形,但与上次不同的是,这一次采用3D的形式,也就是说,矩阵变换工作需要自己完成。Step 1 - Defining the World Transformation Matrix世界变换矩阵定义了几何物体在3D模型空间内的平移、缩放和旋转,也就是位置、大小和朝向。D3DXMATRIX matWorld;D3DXMatrixRotationY( &翻译 2012-05-05 14:20:02 · 621 阅读 · 0 评论 -
DirectX9 SDK Samples(1) Tutorial1-Creating a device
该认真学学DX了。看过不少入门书,但总没有好好总结和实践,现在以SDK的例子为资料学习DX,并且记录下重点。先来篇简单的Tutorial_1。1.Step 1 - Creating a WindowINT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT ){ // Register the window class.翻译 2012-05-03 23:19:37 · 720 阅读 · 0 评论 -
DirectX9 SDK Samples(6) Tutorial 6: Using Meshes
嗯,终于到了使用网格的教程了。Step 1 - Loading a Mesh Object首先要定义一个网格缓冲区。LPD3DXBUFFER pD3DXMtrlBuffer;然后就是读入网格啦~别看很复杂,看清楚了,有一部分是重复的。// Load the mesh from the specified fileif( FAILED( D3DXLoadMeshFromX(翻译 2012-05-06 12:09:57 · 707 阅读 · 0 评论 -
DirectX9 SDK Samples(7) EmptyProject Sample
这个例子虽然叫做EmptyProject,运行起来也只有一个蓝色的窗口。但是它的背后隐藏了一个复杂巨大的框架,DXUT。如果自己用用还好,但如果想看懂DXUT的代码估计需要一定功力。我连它CALLBACK函数是怎么搞的怎么CALL的都看不懂,估计是缺了这一块知识。网上的剖析教程挺多了。这里推荐一个:http://www.cppblog.com/lovedday/archive/2008/0翻译 2012-05-06 15:02:09 · 570 阅读 · 0 评论 -
DirectX9 SDK Samples(8) BasicHLSL Sample(1)
这一个例子关于基本的HLSL。首先沿着程序来将关键点梳理一下。1首先注册了一堆需要用到的回调函数,不懂,不管= =2然后执行的事InitApp(),在这个函数中主要完成的任务是添加HUD元素和UI元素,就是按钮啊,说明文字啊~3接下来就是下面的代码。 DXUTInit( true, true ); // Parse the command line and show msgb翻译 2012-05-06 21:05:18 · 1017 阅读 · 0 评论 -
DirectX9 SDK Samples(5) Tutorial 5: Using Texture Maps
Step 1 - Defining a Custom Vertex Format// A structure for our custom vertex type. Texture coordinates were added.struct CUSTOMVERTEX{ D3DXVECTOR3 position; // The position D3DCOLOR col翻译 2012-05-06 11:43:35 · 754 阅读 · 0 评论 -
DirectX9 SDK Samples(9) Text3D Sample
这次的例子是输出文字,包括UNICODE,2D和3D文字显示。首先看看新增的全局变量:ID3DXFont* g_pFont = NULL;ID3DXFont* g_pFont2 = NULL;ID3DXFont* g_pStatsFont = NULL;ID3DXMesh*翻译 2012-05-07 22:38:08 · 846 阅读 · 0 评论 -
DirectX9 SDK Samples(4) Tutorial 4: Lights
这次教程涉及到材质和光照。Step 1 - Initializing Scene Geometrystruct CUSTOMVERTEX{ D3DXVECTOR3 position; // The 3D position for the vertex. D3DXVECTOR3 normal; // The surface normal for the vertex翻译 2012-05-05 22:52:45 · 610 阅读 · 0 评论 -
DirectX9 SDK Samples(8) BasicHLSL Sample(2)
这一次讲HLSL文件。1//--------------------------------------------------------------------------------------// This shader computes standard transform and lighting//-----------------------------------翻译 2012-05-06 21:18:22 · 679 阅读 · 0 评论 -
DirectX9 SDK Samples(10) HLSLwithoutEffects Sample
这个例子没有用效果框架的接口,只用了顶点着色器。1OnCreateDevice函数中,载入顶点着色器。 WCHAR strPath[512]; LPD3DXBUFFER pCode; D3DVERTEXELEMENT9 decl[] = { { 0, 0, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAU翻译 2012-05-08 00:21:12 · 633 阅读 · 0 评论 -
DirectX9 SDK Samples(11) CompiledEffect Sample
每一次执行程序都要编译HLSL文件会影响运行速度,因此,可以先把HLSL文件编译好,程序中直接调用就可以了。DirectX SDK中自带这样的工具,叫做FXC,命令行程序,可以先自行编译。本例子中则是利用VS.NET的功能自动调用FXC编译。右击需要编译的FX文件,点击属性 ->Custom Build Tool,输入相关信息,这里是在CommandLine中输入下面的命令fxc.翻译 2012-05-08 14:02:10 · 650 阅读 · 0 评论 -
DirectX9 SDK Samples(12) CustomUI Sample
这一次的例子是关于DXUT的UI。下面先翻译文档中的比较重要的说明。这个例子开始时定义了两个CDXUTDialog对象:g_HUD和g_SampleUI。一个CDXUTDialog是一个装入了一个或多个控件(按钮等)的容器。对话框(CDXUTDialog)位于程序和控件之间。因此程序可以传递信息和渲染命令给对话框,而对话框保证它的所有控件能够正确收到信息和得到渲染。控件是设计成要和对话框一起使翻译 2012-05-08 15:17:29 · 1624 阅读 · 0 评论 -
DirectX9 SDK Samples(25) DepthOfField
景深和HDR一样,都是post-process,因此他们都需要多个RenderTarget(一般),然后将场景渲染一遍,再进行进一步处理。景深比HDR简单一些,大体上有三个步骤:1在渲染场景的VS中,将顶点有关深度的信息(例如BlurFactor,或者直接深度)保存在Alpha通道中;2渲染一个模糊的场景图,这里可以采用和HDR中一样的处理;3在PS中利用深度信息将模糊图和普通图进行插值渲染。翻译 2012-05-27 15:30:22 · 1045 阅读 · 0 评论 -
DirectX9 SDK Samples(26) PixelMotionBlur Sample
动态模糊,一看到这个词我就想到了极品飞车和MineCraft的光影MOD。DX11貌似可以很好地支持动态模糊,但这个例子是基于DX9的,那DX9是怎么实现MotionBlur的呢?SDK文档里面提到,实现动态模糊的其中一种方法是将场景用不同的Alpha通道渲染多遍。这个例子用的是另外一个方法,模仿现实中动态模糊出现的条件,记录像素的速度来实现动态模糊。既然是Post-Process,那么多翻译 2012-05-28 20:04:33 · 1808 阅读 · 0 评论 -
DirectX9 SDK Samples(24) HDRLighting Sample
这是DX9 SDK Sample中最后一个关于HDR的例子了。看过了以前的例子,我感觉HDR实际上可以改动的地方还不少(注意,是改动不是改良)。但无论怎么变,求平均亮度和BLOOM都是需要的。这个例子跟SDK中其他HDR例子相比差别并不是很大,因此就仅仅以一张图结束HDR吧。翻译 2012-05-26 22:58:29 · 1075 阅读 · 0 评论