dx9相关有45个项目,可以从容易到困难学习,下面是我的学习总结,比较简单的就放在这篇里面,复杂的另起一篇,点击标题进入。
初级
Tutorial1-6
这个系列教材包括了dx的基础使用方法,对于除这6个教材以外的其它例子,都使用了一个框架DXUT
DXUT这个框架用起来很方便,学习dx某方面知识可以暂时不看DXUT框架的细节
EmptyProject
基本是个空架子,在D3DDeviceAcceptable中判断texture是否支持post pixel blending
PIXGameDebugging
http://blog.csdn.net/buck84/article/details/9101541
BasicHLSL
顾名思义,简单的HLSL使用,场景中包含了tiny和三个摄像机,hlsl计算的时候默认bAnimate=true,计算定点的时候随着时间的改变,定点位置沿着定点法向偏移
SimpleSample
只比EmptyProject复杂一点,包括界面显示和系统设置
Text3D
HLSLwithoutEffects
CompiledEffect
CustomUI
Pick
拾取算法
中级
EffectParam
EnhancedMesh
OptimizedMesh
StateManager
AntiAlias
借助学习这个例子,研究了一下游戏中坐标变换的详细原理,原理在http://blog.csdn.net/buck84/article/details/9203863
世界变换worldTransform和投影变化projectMatrix很普通,关键是viewTransform
三角形原始数据信息:
(0,1)1 (1,1)0
(0,0)2
渲染三角形的时候希望x轴朝右为正,y轴朝下为正,摄像机相当于:
pos:(w/2, h/2, z)其中z根据需求计算得出(h/2/tan(fovy/2))
dir:(0, 0, -1)
up:(0, -1, 0)
带入公式可以得出viewMatrix:
1
-1
-1
-w/2 h/2 z 1
Blobs
http://blog.csdn.net/buck84/article/details/9209587
MeshFromOBJ
这个例子说明从其它模型文件(.x以外的文件)导入数据并使用ID3DXMesh
PIX Plugin Sample
预留
HDRCubeMap
这个例子比较简单,包括2个内容:CubeMap和HDR。
CubeMap先生成一个CubeMap,然后将其作用到物体上实现各种特殊效果:如反射。
HDR则采用一个D3DFMT_A16B16G16R16F格式的纹理作为CubeMap的RenderTarget,保存超过1的结果,增强最终渲染场景的真实感
ParallaxOcclusionMapping
ConfigSystem
HDRPipeline
预留