自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(59)
  • 收藏
  • 关注

原创 实时3D地形引擎——Chapter6_04——GameHost框架阅读

距上一篇博文已经很久了,倒不是悠闲地过了两三星期,过去的这段时间都满课,而且我认为前面的章节没有看好看仔细,因此回去看了,把讲解过的源码都看了一次。好了,闲话不说了。        这篇博文标题是GameHost框架阅读,但实际上是结合了第六章中cMyHost的源码来阅读的。cGameHost对CD3DApplication类中的重要函数进行了重写,而cMyHost也对cGameHost的函数

2012-11-16 21:33:31 648

原创 实时3D地形引擎——Chapter6_03——D3DApp框架阅读2

上一篇根据函数的执行过程将D3DApp框架的主要函数看了一遍,不过后来发现漏了一个非常重要的地方,就是消息处理。这个框架的消息处理函数为WndProc,写得非常完备,特别是在窗口缩放和全屏等地方。那么对于我们来说,其实最重要的地方就是处理WM_PAINT时调用Render函数进行渲染。下面是D3DApp框架自带的描述://----------------------------------

2012-10-31 21:35:12 685

原创 实时3D地形引擎——Chapter6_02——D3DApp框架阅读1

下面就是入口点,这一次我们将从入口点开始分析一下D3DApp框架的运行过程。//-----------------------------------------------------------------------------// Name: WinMain()// Desc: Entry point to the program. Initializes everything

2012-10-29 21:45:53 1450

原创 实时3D地形引擎——Chapter6_01——初读

坑已经开几天了,就从今天开始吧。书的第六章只有一个例子,而且不长,但实际上这个例子用到的框架也需要阅读,所以估计也要看很久。class cMyHost:public cGameHost{public: cMyHost(){}; ~cMyHost(){}; HRESULT InitDeviceObjects(); HRESULT RestoreDeviceObjects();

2012-10-29 19:50:09 1513

原创 实时3D地形引擎开坑

实时3D地形引擎这本书由承天一大哥翻译,翻了翻,感觉不错,虽然貌似因为写得简略而有点难懂。这么好的书,假如翻翻就算了的话,实在太浪费了,所以还是在CSDN上开个坑写一下自己看源码的过程吧,呵呵。上一篇博文是5个月前写的,这5个月过去了,感觉没什么进步。现在去向已经定了,不用纠结了,必须好好自学一下了。        这个系列将会以这本书的例子为主展开描述,估计主要写我是怎么样看代码的。好,今天

2012-10-26 10:20:18 1662

翻译 DirectX9 SDK Samples(26) PixelMotionBlur Sample

动态模糊,一看到这个词我就想到了极品飞车和MineCraft的光影MOD。DX11貌似可以很好地支持动态模糊,但这个例子是基于DX9的,那DX9是怎么实现MotionBlur的呢?SDK文档里面提到,实现动态模糊的其中一种方法是将场景用不同的Alpha通道渲染多遍。这个例子用的是另外一个方法,模仿现实中动态模糊出现的条件,记录像素的速度来实现动态模糊。既然是Post-Process,那么多

2012-05-28 20:04:33 1775

翻译 DirectX9 SDK Samples(25) DepthOfField

景深和HDR一样,都是post-process,因此他们都需要多个RenderTarget(一般),然后将场景渲染一遍,再进行进一步处理。景深比HDR简单一些,大体上有三个步骤:1在渲染场景的VS中,将顶点有关深度的信息(例如BlurFactor,或者直接深度)保存在Alpha通道中;2渲染一个模糊的场景图,这里可以采用和HDR中一样的处理;3在PS中利用深度信息将模糊图和普通图进行插值渲染。

2012-05-27 15:30:22 1021

翻译 DirectX9 SDK Samples(24) HDRLighting Sample

这是DX9 SDK Sample中最后一个关于HDR的例子了。看过了以前的例子,我感觉HDR实际上可以改动的地方还不少(注意,是改动不是改良)。但无论怎么变,求平均亮度和BLOOM都是需要的。这个例子跟SDK中其他HDR例子相比差别并不是很大,因此就仅仅以一张图结束HDR吧。

2012-05-26 22:58:29 1053

翻译 DirectX9 SDK Samples(23) HDRFormats Sample

HDR需要浮点纹理的支持,如果显卡不支持浮点纹理的话,那只好通过压缩保存浮点在整数纹理上,然后需要的时候再解码。当然,这是以性能下降为代价的。其实,我觉得,既然这机子连浮点纹理都不支持,那还显示什么HDR啊。。。好,HDR的原理那都是没什么好说的了,前面曾经看过。那现在就看一下这个例子是如何压缩解压的。假若支持RGB16,那么只需要将RGB分别除以一个比较大的数就可以了,这个例子中是100

2012-05-23 23:40:30 1057

转载 DirectX9 SDK Samples(22) ParallaxOcclusionMapping

http://blog.csdn.net/xujiezhige/article/details/7326606POM原理上面这篇博文已经写得很清楚了,但要想看懂代码,至少对于我来说很有难度。现在挖个大坑,以后再填。。。

2012-05-22 10:51:52 475

翻译 DirectX9 SDK Samples(21) HDRCubeMap Sample

HDR + CubeMap,HDR上一节讲过,这里是动态生成CubeMap。载入资源的都省略了,基本都没有什么障碍了,不过这个例子的载入部分封装的不错,特别是FX部分。OnFrameRender函数内的主体如下,可以看到主要的渲染函数分别在RenderSceneIntoCubeMap和RenderScene中。下面将阅读这两个函数的代码。 RenderSceneIntoCub

2012-05-19 21:16:03 1176

翻译 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 824

翻译 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 928

翻译 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 1306

翻译 DirectX9 SDK Samples(20) MeshFromObj Sample

从obj文件读入网格信息,组成网格。首先看一下MeshLoader的代码。1.Create创建网格,首先是调用LoadGeometryFromOBJ,这个函数主要用来读入网格的几何信息,例如顶点、法线等等 for(; ; ) { InFile >> strCommand; if( !InFile ) break;

2012-05-18 15:18:43 772

翻译 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 1593

翻译 DirectX9 SDK Samples(17) StateManager Sample

在渲染不同的材质中,我们往往需要设置不同的状态。其中一种办法是在每一个FX文件中最后添加一个PASS,把状态设置回原来的默认值。另一个方法就是本次例子所用到的,使用ID3DXEffectStateManager。OnRenderState内调用SortRenderables对可渲染对象进行排序。void SortRenderables(){ if( g_bSortOrderD

2012-05-14 19:24:45 784

翻译 DirectX9 SDK Samples(16) ShadowMap Sample(2)

这一节阅读FX文件。阅读顺序基本和程序执行情况一致。首先执行的是渲染阴影图。//-----------------------------------------------------------------------------// Technique: RenderShadow// Desc: Renders the shadow map//-----------------

2012-05-13 12:45:16 688

翻译 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 933 1

翻译 DirectX9 SDK Samples(15) OptimizedMesh Sample

优化网格,主要是将triangle list优化成triangle strip。主要用到的API有:ID3DX10Mesh::Optimize,D3DXConvertMeshSubsetToSingleStrip,D3DXConvertMeshSubsetToStrips而渲染的时候对应用到的函数有:IDirect3DDevice9::SetStreamSource,IDirect3DDe

2012-05-12 20:48:41 769

翻译 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 559

翻译 DirectX9 SDK Samples(14) EffectParam Sample(1)

这个例子是关于着色器参数的,涉及两方面。首先是ParameterBlock,通过参数块将几个参数绑定在一起,用一个句柄设定一组参数,简化参数设定。第二个是ParameterSharing,在创建效果框架时传递EffectPool参数,拥有同一个Pool的效果框架会共享Pool的参数,同时会同步进行更新。具体可以参考SDK Documentation。下面开始阅读代码。1全局变量和定义数据

2012-05-12 16:20:28 716

翻译 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 1170

翻译 DirectX9 SDK Samples(12) CustomUI Sample

这一次的例子是关于DXUT的UI。下面先翻译文档中的比较重要的说明。这个例子开始时定义了两个CDXUTDialog对象:g_HUD和g_SampleUI。一个CDXUTDialog是一个装入了一个或多个控件(按钮等)的容器。对话框(CDXUTDialog)位于程序和控件之间。因此程序可以传递信息和渲染命令给对话框,而对话框保证它的所有控件能够正确收到信息和得到渲染。控件是设计成要和对话框一起使

2012-05-08 15:17:29 1556

翻译 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 627

翻译 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 610

翻译 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 826

翻译 DirectX9 SDK Samples(8) BasicHLSL Sample(2)

这一次讲HLSL文件。1//--------------------------------------------------------------------------------------// This shader computes standard transform and lighting//-----------------------------------

2012-05-06 21:18:22 656

翻译 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 992

翻译 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 545

翻译 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 684

翻译 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 731

翻译 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 584

翻译 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 598

翻译 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 615

翻译 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 701

原创 腾讯面试归来

唉,只面了一面= =说到收获的话,那就主要是一句话:你要么成绩很好,要么对某一种技术有很深入的了解。没什么好说的= =

2012-04-25 20:06:39 503

原创 第一阶段小结

最近在看BeginningDX11,感觉这本书写得太浅了,呃。还是早点看完,早点写些东西吧。这本书的代码还有一些非常明显的错误。自学到现在,感觉写个简单的2D游戏是差不多的了,就差物理那一部分还完全没有看过。还是早点开始准备TOEFL吧......

2012-02-21 10:26:20 289

原创 大三下学期开学

转眼又开学了,现在我已经是大三的学生了,已经不能随心所欲地去玩了,唉......        先总结一下寒假吧。寒假我计划看完RTR上册和背完TOEFL单词。计划本来就挺轻松,加上自己时间也抓得比较紧,因此超额完成任务,并且可以在开学第一周内看完RTR。        至于接下来的计划,那就是毫无疑问地以TOEFL为中心准备考试了。在技术方面,就少看理论方面的书了,争取在上半学期看完Be

2012-02-18 17:41:09 653

转载 凹凸贴图简析(应景之作--写给美术朋友们的凹凸贴图白皮书)

下面所有文字转自游艺网:http://www.game798.com/html/2007-03/2997.htm,应景之作--写给美术朋友们的凹凸贴图白皮书先自我介绍……你要是说这是自我炒作我也认了。首先说明,FXCarl是一个对3D美术一窍不同的家伙。虽然很想往技术美工方向发展了。因为是学程序出身,眼下能做的也就是写写Shaders。等到手上的项目做完,会公开始用的实时光照模型……不

2012-02-05 00:06:00 719

空空如也

空空如也

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

TA关注的人

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