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 从元数据起始位置开始的偏移量。

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

被折叠的 条评论
为什么被折叠?



