D3D9 Samples(11)--HLSLwithoutEffects

本文档详细介绍了如何在Direct3D9中使用HLSL不依赖Effect系统来开发Shader。从顶点声明、模型创建、Shader编译及应用,到HLSL源码分析,涵盖关键步骤和代码示例。通过实例展示了如何计算顶点位置和颜色,以及如何在Shader中使用全局变量。

 

 

 

D3D9 Samples(11)--HLSLwithoutEffects

 

 

 

      打开HLSLwithoutEffects项目。先编译运行下项目,看看效果:

 

 

       这个例子演示Shader开发,不实用Effect系统,使用HLSL语言。

 

 

1. Vertex declaration

 

LPDIRECT3DVERTEXDECLARATION9   g_pVertexDeclaration = NULL;

D3DVERTEXELEMENT9 decl[] =
{
	{ 0, 0, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
	D3DDECL_END()
};

V_RETURN( pd3dDevice->CreateVertexDeclaration( decl, &g_pVertexDeclaration ) );


 

一旦使用Shader,我们不在使用FVF(Flexible Vertex Format)作为Vertex buffer的顶点布局,而使用Vertex declaration。我们暂且把vertex buffer中的每个顶点数据叫元数据。

 

typedef struct D3DVERTEXELEMENT9 {
  WORD Stream;
  WORD Offset;
  BYTE Type;
  BYTE Method;
  BYTE Usage;
  BYTE UsageIndex;
} D3DVERTEXELEMENT9, *LPD3DVERTEXELEMENT9;


Stream 数据流ID。

 

Offset 从元数据起始位置开始的偏移量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值